Сколько лицензий 1С занято и сколько свободно: проверка на сервере
Содержание
Быстрее всего посмотреть количество занятых лицензий
1С на сервере командой rac session list --licenses или в консоли администрирования: узел рабочего процесса → «Лицензии». Там видно, какой сеанс какую лицензию держит, кто её выдал (сервер или клиентский компьютер) и на сколько мест рассчитан ключ. Общее число купленных мест показывает утилита ring license list и файлы *.lic.
Частое заблуждение — считать лицензии по числу строк в списке сеансов. Фоновые задания, сеансы консоли и спящие сеансы клиентскую лицензию не занимают. Поэтому «сеансов 40, лицензий 25» — нормальная картина, а не ошибка учёта.
Что именно считаем: купленные, выданные и занятые места
Перед проверкой разделите три числа. Их постоянно путают, и отсюда половина споров с поставщиком.
- 📦 Куплено — сколько мест в активированных комплектах: программные лицензии (файлы
*.lic) плюс аппаратные ключи HASP. - 🖥️ Выдано сервером — сколько клиентских лицензий сейчас раздаёт сервер 1С из своих файлов или ключей.
- 👥 Занято всего — выданные сервером плюс полученные самими клиентами локально (ключ в USB компьютера пользователя, программная лицензия на терминальном сервере).
Где лежат программные лицензии:
| ОС | Каталог | Что там |
|---|---|---|
| Windows | C:\ProgramData\1C\licenses\ | файлы *.lic, по одному на активированный комплект |
| Linux | /var/1C/licenses/ | те же файлы *.lic |
Число файлов *.lic не равно числу мест. Один файл может быть и однопользовательской лицензией, и комплектом на 50 рабочих мест. Состав файла показывает ring (см. ниже).
Чтобы сервер вообще раздавал клиентские лицензии, в свойствах информационной базы в консоли должна быть включена выдача лицензий сервером 1С:Предприятия. Если флаг выключен, каждый клиент ищет лицензию у себя, и на сервере вы увидите только часть картины.
Консоль кластера: где увидеть лицензии по сеансам
Консоль администрирования серверов 1С подключается к агенту сервера (порт 1540 по умолчанию). Открыть лицензии можно двумя путями.
Через рабочие процессы
- Разверните
Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Рабочие процессы. - Раскройте нужный процесс
rphost. - Откройте узел «Лицензии».
В списке — лицензии, которые получил этот процесс. Колонки показывают пользователя, компьютер, тип лицензии (программная или HASP), максимальное число пользователей по ключу и файл или серию ключа. Процессов в кластере может быть несколько — обойдите каждый.
Через информационную базу
Узел Информационные базы → <база> → Сеансы показывает всех подключённых. Колонка с приложением подскажет, кто реально занимает место: «Тонкий клиент», «Толстый клиент», «Веб-клиент». «Фоновое задание» и «Консоль кластера» в подсчёт не берите.
Консоль показывает текущий момент. Пик утром в 9:05 вы так не поймаете — для этого нужен журнал или мониторинг из разделов ниже.
Если консоль не открывается, проверьте, что служба агента сервера запущена, а на компьютере администратора зарегистрирована компонента radmin.dll той же версии платформы, что и сервер. Регистрацию делают из командной строки администратора: regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll".
Командная строка: rac и ring
Консоль удобна, но для подсчёта и скриптов лучше командная строка. Утилите rac нужен запущенный сервер администрирования ras (порт 1545 по умолчанию).
Запуск ras вручную (в отдельном окне, оно должно оставаться открытым):
cd "C:\Program Files\1cv8\<версия>\bin"
ras cluster --port=1545
Дальше узнайте идентификатор кластера и запросите лицензии сеансов:
rac cluster list
rac session list --cluster=<uuid-кластера> --licenses
Если на кластере заведён администратор, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>.
На каждую лицензию команда выводит блок полей. Самые полезные:
| Поле | Что значит |
|---|---|
user-name, host | кто и с какого компьютера |
app-id | тип клиента: 1CV8C — тонкий, 1CV8 — толстый, WebClient — веб |
license-type | soft — программная, HASP — аппаратный ключ |
issued-by-server | yes — выдал сервер, no — клиент получил лицензию сам |
max-users-all | на сколько мест рассчитан ключ или файл |
full-presentation | читаемое описание лицензии |
Аналогичная выборка по процессам — rac process list --cluster=<uuid> --licenses. Полный список параметров смотрите в rac help session.
Сколько мест куплено: ring
Активированные программные лицензии показывает утилита лицензирования ring (ставится вместе с платформой, модуль license):
ring license list
ring license info --name <имя-лицензии-из-списка>
list выводит все лицензии на этом компьютере, info — подробности по одной: продукт, количество рабочих мест, регистрационные данные. Сложите места по всем клиентским лицензиям — это и есть потолок одновременной работы через сервер.
Для аппаратных сетевых ключей HASP число мест и текущих подключений видно в утилите Aladdin Monitor: она опрашивает менеджер лицензий HASP License Manager и показывает ключи в сети и занятые слоты.
Диспетчер задач и процессы rmngr, rphost, ragent
Диспетчер задач Windows лицензии не считает. Но он отвечает на соседний вопрос: живы ли процессы, которые эти лицензии раздают.
| Процесс | Роль |
|---|---|
ragent.exe | агент сервера, принимает подключения клиентов и консоли |
rmngr.exe | менеджер кластера, ведёт реестр сеансов и сервисов, в том числе сервис лицензирования |
rphost.exe | рабочие процессы, через них клиенты работают с базой |
Что полезно посмотреть на вкладке «Подробности»:
- 🔍 есть ли
rmngr.exeи не упирается ли он в 100% одного ядра — при зависшем менеджере кластера новые лицензии не выдаются; - 📈 сколько памяти съели
rphost.exe— раздутый процесс часто держит «мёртвые» соединения; - 👤 на терминальном сервере — сколько запущено
1cv8c.exeи1cv8.exe. Каждый такой процесс в терминальной сессии занимает отдельную клиентскую лицензию.
Последний пункт — самый практичный. Если на терминальном сервере 30 пользователей открыли по две базы, это до 60 процессов клиента, и считать нужно именно их.
Не завершайте rmngr.exe или ragent.exe из диспетчера задач в рабочее время. Оборвутся все сеансы кластера, пользователи потеряют несохранённые документы. Перезапуск службы сервера — только вечером или после предупреждения людей.
Технологический журнал: событие LIC
Когда нужно понять, кто и когда занимал лицензии за день или почему утром их «не хватило», включите технологический журнал с событием LIC. Оно фиксирует операции с лицензиями: получение, освобождение, ошибки поиска.
Файл настройки logcfg.xml кладут в каталог conf платформы (например, C:\Program Files\1cv8\conf\). Пример:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\1C_TechLog\lic" history="48">
<event>
<eq property="name" value="LIC"/>
</event>
<event>
<eq property="name" value="SESN"/>
</event>
<property name="all"/>
</log>
</config>
history="48"— хранить журнал 48 часов, старые файлы платформа удалит сама.SESNдобавлен, чтобы видеть начало и конец сеансов рядом с лицензиями.- Каталог журнала заранее создайте и дайте на него права пользователю, от имени которого работает служба сервера.
Журнал пишется в текстовые файлы *.log по часам. Ищите по ним строку LIC и имя пользователя — так видно, в какую минуту закончились свободные места и какие сеансы их держали.
Событие LIC пишет немного, но не оставляйте <property name="all"/> с широким набором событий надолго: журнал по всем событиям на загруженном сервере вырастает на гигабайты за часы.
Клиентские и серверные лицензии считают по-разному
Это два разных вида лицензий, и на вопрос «сколько лицензий на сервере» у каждого свой ответ.
| Клиентская лицензия | Лицензия на сервер | |
|---|---|---|
| Что разрешает | одновременную работу пользователей | работу самого сервера 1С в клиент-серверном режиме |
| Как считается | по числу одновременных подключений: 1, 5, 10, 20, 50 мест и т. д. | одна на рабочий сервер кластера |
| Где искать занятость | rac session list --licenses, узел «Лицензии» | файл *.lic или ключ на самом сервере, ring license list |
| Что будет при нехватке | новый пользователь не войдёт | сервер не запустит работу с базами |
Серверные лицензии бывают обычные и КОРП; КОРП нужна для ряда возможностей масштабирования кластера. Количество пользователей серверная лицензия не задаёт — его ограничивают только клиентские.
При нехватке клиентских мест пользователь видит сообщение вроде Не обнаружено свободной лицензии!. Прежде чем докупать комплект, проверьте два случая:
- Флаг выдачи лицензий сервером выключен у части баз — клиенты ищут лицензию у себя и не находят.
- Лицензии формально заняты сеансами, в которых давно никто не работает . Об этом следующий раздел.
Зависшие сеансы, которые держат лицензии
Типичная утечка: человек закрыл ноутбук, ушёл домой, а сеанс и лицензия на сервере остались. Утром места нет у того, кто пришёл первым.
Как найти такие сеансы:
- 🕒 в консоли откройте сеансы базы и отсортируйте по колонке последней активности — сеанс, где не было действий с вечера, кандидат на удаление;
- 🔁 ищите одного пользователя с нескольких компьютеров или несколько одинаковых сеансов с одного
host; - 🧩 сверьте сеансы в
rac session list --licensesс реальными людьми: уволенные, отпускники, общие учётки.
Завершить конкретный сеанс:
rac session list --cluster=<uuid>
rac session terminate --cluster=<uuid> --session=<uuid-сеанса>
То же в консоли: выделить сеанс → контекстное меню → «Удалить».
Перед удалением сеанса убедитесь, что пользователь не работает: несохранённые данные пропадут, а незавершённое проведение документа откатится.
Чтобы утечка не повторялась
В конфигураторе откройте Администрирование → Параметры информационной базы и задайте:
- Время засыпания пассивного сеанса — через сколько секунд без связи с клиентом сеанс засыпает. Спящий сеанс лицензию освобождает.
- Время завершения спящего сеанса — через сколько спящий сеанс завершается полностью.
Ориентир для офиса — засыпание через 300–600 секунд и завершение через несколько часов. Слишком короткое засыпание ударит по тем, у кого нестабильный интернет: сеансы будут засыпать посреди работы.
Мониторинг: оповещение до того, как места кончатся
Ручная проверка помогает разобраться один раз. Чтобы не узнавать о нехватке от бухгалтерии в день сдачи отчётности, поставьте простой счётчик по расписанию.
Скрипт PowerShell считает занятые лицензии и пишет предупреждение, когда свободных мест меньше порога:
$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$total = 50 # сумма мест по всем клиентским лицензиям (из ring license info)
$warn = 5 # предупреждать, когда свободно меньше
$cluster = ((& $rac cluster list | Select-String '^cluster\s*:' |
Select-Object -First 1).ToString() -split ':', 2)[1].Trim()
$used = (& $rac session list --cluster=$cluster --licenses |
Select-String '^session\s*:').Count
$free = $total - $used
$line = "{0:yyyy-MM-dd HH:mm} занято {1} из {2}, свободно {3}" -f (Get-Date), $used, $total, $free
Add-Content -Path "D:\1C_Monitor\licenses.log" -Value $line
if ($free -lt $warn) {
Write-EventLog -LogName Application -Source "1C-Licenses" -EntryType Warning -EventId 1001 -Message $line
}
Как запустить:
- Один раз зарегистрируйте источник событий:
New-EventLog -LogName Application -Source "1C-Licenses"(PowerShell от администратора). - В планировщике заданий Windows создайте задачу: запуск
powershell.exe -File D:\1C_Monitor\lic.ps1каждые 5 минут. - Убедитесь, что служба
rasработает постоянно — без неёracвернёт ошибку подключения.
Файл licenses.log за неделю покажет реальный пик. Если места кончаются только 10 минут в день, проблема в зависших сеансах, а не в нехватке лицензий.
Вместо записи в журнал Windows предупреждение можно отправлять в мессенджер или почту, а счётчик $used отдавать в Zabbix как пользовательский параметр. Логика та же: занято, всего, порог.
На Linux то же самое делается однострочником в cron:
rac session list --cluster=<uuid> --licenses | grep -c '^session'
Держите $total в актуальном состоянии. Докупили комплект на 10 мест и забыли поправить скрипт — оповещения станут ложными.
Частые вопросы
Занимает ли лицензию Конфигуратор?
Занимают ли лицензию фоновые и регламентные задания?
Можно ли посмотреть лицензии без прав администратора кластера?
rac потребуют их логин и пароль. Без них список сеансов и лицензий не откроется.Почему в консоли видно больше лицензий, чем куплено?
Где посмотреть, какую лицензию получил конкретный пользователь?
rac session list --licenses.