Подсчёт занятых клиентских лицензий на сервере 1С: консоль, rac, ring
Содержание
Самый точный способ узнать, сколько лицензий 1С сейчас использует сервер, — выполнить на сервере rac session list --cluster=<UUID> --licenses: команда выводит по строке на каждую выданную клиентскую лицензию с пометкой, выдал её сервер или её получил сам клиент. Сколько лицензий есть всего, показывает ring license list и файлы в каталоге лицензий. Для быстрой визуальной проверки хватает консоли администрирования кластера.
Обычно вопрос возникает в неудобный момент: пользователь видит Не обнаружена свободная лицензия!, а администратор уверен, что мест должно хватать. Решение почти всегда в трёх цифрах: сколько мест куплено, сколько занято прямо сейчас и кто их держит. Все три снимаются за 10 минут, и часто лишние места удаётся вернуть без покупки нового комплекта.
Как сервер 1С выдаёт и считает лицензии
В клиент-серверном варианте участвуют два вида лицензий, и путать их нельзя.
- 🖥️ Лицензия на сервер (ПРОФ или КОРП). Нужна, чтобы работал сам кластер. Пользовательских мест она не даёт. Получает её рабочий процесс
rphost. - 👥 Клиентские лицензии — на одно или несколько рабочих мест (комплекты на 1, 5, 10, 20, 50, 100, 300, 500). Именно они кончаются, когда люди не могут войти.
Клиентскую лицензию сеанс может получить двумя путями:
- Сервер выдаёт её сам. Клиентские лицензии активированы на сервере, а у информационной базы включён параметр «Выдача лицензий сервером 1С:Предприятия». Тогда весь учёт идёт в кластере, и его видно в консоли и через
rac. - Клиент берёт её сам — из программной лицензии на своём компьютере или с HASP-ключа (локального или сетевого через менеджер лицензий). Сервер такую лицензию только фиксирует в сведениях о сеансе, а пул мест живёт на стороне клиента или ключа.
Если у части баз выдача лицензий сервером выключена, счётчик на сервере покажет не всю картину. Проверяйте этот параметр у каждой базы, прежде чем делать выводы.
Как считаются места:
- 💻 Несколько окон тонкого и толстого клиента на одном компьютере занимают одно место.
- 🧑💻 На терминальном сервере каждый RDP-сеанс считается отдельным рабочим местом.
- ⚙️ Фоновые и регламентные задания клиентскую лицензию не занимают.
- 😴 Спящий сеанс лицензию освобождает — на этом построен главный приём экономии (о нём ниже).
Консоль кластера: где видны занятые места
Консоль ставится вместе с сервером и называется «Администрирование серверов 1С Предприятия». Если она не открывается с ошибкой про оснастку, зарегистрируйте библиотеку от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"
Номер версии в пути подставьте свой — он должен совпадать с версией запущенного сервера.
Порядок проверки:
- Откройте консоль и разверните
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер>. - Откройте узел
Сеансына уровне кластера. Здесь все сеансы всех баз. - Отсортируйте список по колонке «Приложение». Тонкий клиент, толстый клиент и веб-клиент — это сеансы, которые занимают места. Фоновые задания места не занимают.
- Посчитайте уникальные пары «Компьютер + Пользователь» среди клиентских сеансов. Это близко к числу занятых мест.
- Для точной сверки разверните
Рабочие процессы → <процесс>: у рабочего процесса есть вложенный узел «Лицензии», где видны лицензии, выданные через этот процесс.
Параметр выдачи лицензий смотрите в свойствах базы: Информационные базы → <база> → Свойства, строка «Выдача лицензий сервером 1С:Предприятия».
Сеансы с одного компьютера под разными пользователями 1С всё равно занимают одно место. Поэтому «сеансов 47, лицензий 30» — нормальная картина, а не ошибка учёта.
Подсчёт лицензий командой rac
Консоль удобна глазами, но для цифр нужен rac. Он работает через сервер администрирования ras, который слушает порт 1545. Если ras ещё не запущен, поднимите его на сервере 1С:
cd "C:\Program Files\1cv8\8.3.24.1586\bin"
ras cluster --daemon
Для постоянной работы ras регистрируют службой Windows или юнитом systemd на Linux. Дальше по шагам.
Шаг 1. Узнать UUID кластера
rac cluster list
В выводе нужна строка cluster : <UUID>. Если на кластере задан администратор, ко всем следующим командам добавляйте --cluster-user=<имя> --cluster-pwd=<пароль>.
Шаг 2. Получить список лицензий по сеансам
rac session list --cluster=<UUID> --licenses
На каждую лицензию выводится блок полей. Самые полезные:
| Поле | Что показывает |
|---|---|
user-name | пользователь 1С |
host | компьютер, с которого подключились |
app-id | тип приложения: 1CV8C (тонкий клиент), 1CV8 (толстый), WebClient и др. |
issued-by-server | yes — лицензию выдал сервер, no — её принёс клиент |
license-type | программная лицензия или HASP-ключ |
max-users-all | на сколько мест рассчитан файл или ключ |
short-presentation | краткое описание лицензии |
Шаг 3. Посчитать
Количество выданных лицензий в Windows проще всего получить так:
rac session list --cluster=<UUID> --licenses | find /c "user-name"
Отдельно — только те, что выдал сервер:
rac session list --cluster=<UUID> --licenses | find /c "issued-by-server : yes"
Число пробелов перед двоеточием зависит от выравнивания вывода. Если счётчик показал 0, посмотрите вывод целиком и подставьте строку как есть.
Лицензию на сервер, которую получил рабочий процесс, показывает:
rac process list --cluster=<UUID> --licenses
Другие подкоманды и ключи сверяйте со справкой своей версии: rac help session, rac help process. Набор параметров меняется от релиза к релизу платформы.
Сколько мест есть всего: утилита ring и файлы лицензий
Занятые места без общего пула ничего не скажут. Программные лицензии хранятся файлами .lic:
- Windows:
C:\ProgramData\1C\licenses - Linux:
/var/1C/licenses
Каждый файл — это один активированный комплект. Пять файлов в каталоге сервера не значат пять мест: в одном файле может быть комплект на 20 пользователей.
Чтобы прочитать содержимое, используйте ring из пакета инструментов лицензирования 1С (для работы нужна Java):
ring license list
Команда выводит имена активированных лицензий — по сути, пин-коды с номером регистрации. Подробности по одной лицензии:
ring license info --name <имя_из_списка>
В выводе есть продукт и количество рабочих мест. Сложите количество мест по всем клиентским лицензиям на сервере — это ваш потолок для баз с выдачей лицензий сервером. Проверить, что лицензия по-прежнему действительна на этом оборудовании:
ring license validate --name <имя_из_списка>
Если validate сообщает о несовпадении параметров оборудования, сервер эту лицензию не выдаёт, хотя файл лежит на месте. Так бывает после замены дисков, сетевой карты или переноса виртуальной машины.
Аппаратные ключи HASP. Сетевой ключ обслуживает менеджер лицензий Sentinel. Его веб-панель открывается в браузере на машине с ключом: http://localhost:1947. В разделе ключей видно, сколько сессий сейчас открыто на каждом ключе и с каких компьютеров.
Типы лицензий и их влияние на счётчики
| Лицензия | Где учитывается | Что видно на сервере |
|---|---|---|
| Клиентская программная, активирована на сервере | в кластере | issued-by-server: yes, растёт счётчик rac |
| Клиентская программная, активирована на рабочем месте | на компьютере пользователя | сеанс есть, issued-by-server: no |
| Сетевой HASP-ключ на N мест | в менеджере лицензий Sentinel | сеанс есть, тип лицензии — аппаратный ключ |
| Локальный HASP-ключ | на компьютере с ключом | то же, учёт на клиенте |
| Лицензия на сервер ПРОФ/КОРП | рабочим процессом rphost | rac process list --licenses, места не даёт |
Из таблицы следует простое правило. Если в организации смешаны программные лицензии на сервере и HASP-ключи, общее число занятых мест = выданные сервером + сеансы на ключах. Один счётчик правду не покажет.
rac session list --licenses и подсчёта строк с issued-by-server: yes. Пул мест — сумма по ring license info.http://localhost:1947 на машине с ключом: там число сессий и адреса клиентов.История занятости: техжурнал и журнал регистрации
Разовая проверка показывает «сейчас». Чтобы понять, хватает ли мест в пиковые часы, нужна история.
Журнал регистрации базы. События Сеанс. Начало и Сеанс. Завершение позволяют восстановить, сколько человек работало одновременно в разные часы. Отберите их в журнале по нужным датам и выгрузите в таблицу. Минус способа — он видит одну базу и не знает, какая лицензия была выдана.
Технологический журнал. События лицензирования записываются событием LIC. Пример logcfg.xml (кладётся в каталог conf платформы):
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\techlog\lic" history="72">
<event>
<eq property="name" value="LIC"/>
</event>
<property name="all"/>
</log>
</config>
history — сколько часов хранить файлы. Техжурнал создаёт нагрузку на диск, поэтому включайте его на время расследования, а не навсегда.
Свой мониторинг. Самый практичный вариант — запускать подсчёт через rac по расписанию и писать результат в файл:
@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1586\bin\rac.exe"
set CL=<UUID кластера>
for /f %%N in ('%RAC% session list --cluster=%CL% --licenses ^| find /c "user-name"') do set CNT=%%N
echo %date% %time% %CNT%>> C:\monitor\lic_usage.log
Повесьте файл на Планировщик заданий каждые 5–10 минут. Через неделю у вас будет график пиков: например, видно, что 28 мест из 30 заняты только с 10:00 до 12:00 по понедельникам. Это аргумент и для докупки, и против неё.
Как освободить лицензии без докупки
В Конфигураторе нет настройки «максимум N лицензий». Лимит — это число активированных мест. Управлять можно тем, кто и как долго их держит.
1. Засыпание пассивных сеансов. В свойствах кластера есть два параметра: «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса». Сеанс, где пользователь ничего не делал заданное время, засыпает и отдаёт лицензию. Вернётся человек — сеанс проснётся, если свободное место есть. Через rac то же меняется командой rac cluster update (точные имена ключей — в rac help cluster).
2. Выдача лицензий сервером там, где она нужна. Если на сервере активирован комплект на 50 мест, а в части баз параметр выдачи выключен, пользователи этих баз ищут лицензию у себя и получают отказ. Включение параметра сводит все места в один пул.
3. Терминальный сервер вместо смешанной схемы. На терминале каждый RDP-сеанс — место, но и сеансы, брошенные открытыми на ночь, тоже. Настройте в Windows завершение отключённых RDP-сеансов через несколько часов простоя.
4. Ручное завершение зависших сеансов. В консоли кластера: Сеансы → <сеанс> → Удалить.
Удаление сеанса обрывает работу пользователя без сохранения. Перед этим предупредите человека или делайте это вне рабочего времени. Не трогайте сеансы фоновых заданий и обновления базы.
Частые вопросы
Занимает ли лицензию Конфигуратор или фоновое задание?
rac session list --licenses, чтобы увидеть, как это работает на вашей версии.Почему в консоли сеансов больше, чем занято лицензий?
Можно ли закрепить лицензии за конкретными пользователями?
Лицензия на сервер добавляет пользовательские места?
Почему после переноса сервера на новое железо счётчик показывает ноль свободных мест?
ring license validate. Если проверка не проходит, лицензию нужно восстановить по резервному пин-коду.