Проблема мониторинга программных лицензий в среде 1С:Предприятие 8 является одной из самых актуальных для системных администраторов. В отличие от аппаратных ключей HASP, программные лицензии (файлы с расширением .lic) сложнее поддаются визуальному контролю. Часто возникает ситуация, когда в консоли сервера 1С отображается множество «зависших» сеансов, которые продолжают удерживать лицензии, хотя пользователи уже вышли из системы. Рассмотрим подробно, как получить достоверную информацию о лицензиях и как бороться с некорректным завершением работы пользователей.
Для получения списка всех установленных на сервере программных лицензий проанализируем возможности утилиты ring, которая входит в состав современной платформы 1С. Этот инструмент позволяет работать с лицензиями через командную строку, что удобно для автоматизации и формирования отчетов.
Разберем по шагам, как получить список лицензий:
ring (путь может отличаться в зависимости от версии платформы):
cd "c:\Program Files\1C\1CE\ring\"
ring license list
info:
ring license info --name 49XXXXXXXXXXXXX-81XXXXXXXX
Важный нюанс: Утилита ring видит только те лицензии, которые были активированы через неё или находятся в стандартных путях поиска службы лицензирования. Если лицензии «раскиданы» по разным папкам пользователей, рекомендуется собрать их в общую директорию %ProgramData%\1C\licenses.
Рассмотрим, как правильно интерпретировать данные в стандартной консоли сервера 1С. Если мы перейдем в ветку Сеансы, в заголовке окна справа будет указано общее количество активных сеансов. Однако, как отмечают многие специалисты, это число часто не соответствует реальному количеству занятых лицензий из-за «зависших» подключений.
Проанализируем свойства конкретного сеанса. В колонке Лицензия можно увидеть подробное описание:
Помним, что если лицензия выдается сервером, то на каждый запуск базы тратится одна лицензия. Если лицензия выдается клиентом, то на одном компьютере можно запустить неограниченное количество баз, расходуя всего одну лицензию.
Выясним причину, почему лицензии не освобождаются. Часто это происходит при использовании Linux-клиентов (например, через FreeRDP) или некорректном закрытии окна терминала пользователем. В таких случаях процесс 1cv8.exe на сервере не завершается, а переходит в состояние «Disconnected», продолжая удерживать лицензию.
Для исправления ситуации выполним следующие настройки на стороне Windows Server:
Если штатных средств недостаточно, рассмотрим более продвинутые методы мониторинга, такие как 1С:Сервер лицензирования. Это отдельный программный продукт, который позволяет:
Для системных администраторов, предпочитающих автоматизацию, эффективным решением будет использование связки Prometheus + Grafana с установленным 1c_exporter. Это позволит построить графики потребления лицензий и настроить уведомления в Telegram, если количество свободных лицензий станет критически малым.
Посмотрим, как можно программно извлечь информацию о сессиях и лицензиях через COMConnector. Это позволяет создать внешнюю обработку, которая будет выводить только «чистые» данные, игнорируя спящие сеансы.
Пример логики на языке 1С:
Соединитель = Новый COMОбъект("V83.COMConnector");
Соединение = Соединитель.ConnectServer("ИмяСервера");
Соединение.Authenticate(АдминистраторКластера, ПарольАдминистратора);
Кластеры = Соединение.GetClusters();
РабочийПроцесс = Соединение.GetWorkingProcesses(Кластеры[0]);
Для Каждого Процесс Из РабочийПроцесс Цикл
Сеансы = Соединение.GetSessions(Кластеры[0]);
Для Каждого Сеанс Из Сеансы Цикл
// Здесь можно проанализировать свойство Сеанс.License
// и отфильтровать активные сессии от зависших
КонецЦикла;
КонецЦикла;
Подведем итог: для эффективного управления лицензиями необходимо комбинировать административные меры (настройка таймаутов RDP), использование системных утилит (ring) и, при необходимости, внедрение внешних систем мониторинга. Это обеспечит бесперебойную работу пользователей и прозрачность использования дорогостоящих программных активов.