Zabbix. Мониторинг лицензий NanoCAD (FlexLM)

Привет, друзья.

С целью определения необходимости продления/закупки, понадобилось организовать сбор статистики об использовании лицензий программ линейки NanoCAD. (у руководства было подозрение о том, что приобретенные программы не используются или используются неэффективно, которое, кстати, подтвердилось).

Программы приобретались в виде абонемента на год и такая статистика необходима для принятия решения о продлении или от отказа использования.

Приступим:

Для начала надо понять как вытаскивать необходимые данные с сервера лицензий  FlexLM, которые потом будем передавать в Zabbix.

На сервере WS 2008 R2 установлен сервер лицензий FlexLM который имеет консольную утилиту, позволяющую получать данные о количестве лицензий и о пользователях, которые их используют —  lmstat

Запуск утилиты производится:

C:\Program Files (x86)\Nanosoft\Nanosoft License Server>lmutil lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500XXXX-XXXXX.lic» -a

где:

NCSP500XXXX-XXXXX.lic —  файл лицензий NanoCAD
-a показать всю доступную информацию из файла лицензий

(Так как сервак рабочий пришлось замазать имена пользователей и компьютеров :))

FlexLM вывод лицензий NanoCAD

FlexLM вывод лицензий NanoCAD

Команда показывающая кол-во доступных лицензий более структурировано:
C:\Program Files (x86)\Nanosoft\Nanosoft License Server>lmutil lmstat display -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500XXXX-XXXXX.lic»

FlexLM вывод

FlexLM вывод

Наша задача отфильтровать полученные данные по количеству используемых лицензий.(…Total of XX licenses…) Для этих целей необходимо на сервер установить дополнительную утилиту Cut.exe из пакета GNU utilities for Win32, кидаем ее в System32.

Далее пишем команду, которая ищет строку с названием нужной программы и вырезает из строчки цифры показывающие количество используемых лицензий (подбирается методом «научного тыка» с помощью cut)
Вот, что у меня получилось в итоге:

«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «NanoELS» | cut -c 58-60

продолжение кода

«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoSPDS» | cut -c 60-62
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoCAD_Plus» | cut -c 64-66
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoWS» | cut -c 57-59
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoPPR» | cut -c 57-59
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoHeating» | cut -c 61-63
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika:» | cut -c 63-65
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Networks» | cut -c 72-74
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Civil» | cut -c 69-71
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Geomodel» | cut -c 72-74
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Alignments» | cut -c 74-76
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Sections» | cut -c 72-74
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoConstrSuite_Rf» | cut -c 74-76
«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoConstrSuite_Found» | cut -c 71-73

В процессе работы решил, что неплохо бы еще и пользователей, которые используют лицензии мониторить — это иногда нужно, когда происходит задвоенность лицензий, поэтому решил оставить запрос:

«C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP5002072-99999.lic» -a

Заносим полученные запросы в файл агента на нашем сервере:D:\monitor\zabbix_agentd.win.conf в самый конец:

……

# Mandatory: no
# Default:
# UserParameter=
UserParameter=licenses.nanocadELS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «NanoELS» | cut -c 58-60

продолжение кода

UserParameter=licenses.nanocadSPDS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoSPDS» | cut -c 60-62
UserParameter=licenses.nanocadPLUS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoCAD_Plus» | cut -c 64-66
UserParameter=licenses.nanocadWS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoWS» | cut -c 57-59
UserParameter=licenses.nanocadPPR.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoPPR» | cut -c 57-59
UserParameter=licenses.nanocadHEATING.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoHeating» | cut -c 61-63
UserParameter=licenses.nanocadGeonika_TOPO.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika:» | cut -c 63-65
UserParameter=licenses.nanocadGeonika_NETWORKS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Networks» | cut -c 72-74
UserParameter=licenses.nanocadGeonikaCIVIL.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Civil» | cut -c 69-71
UserParameter=licenses.nanocadGeonikaGEOMODEL.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Geomodel» | cut -c 72-74
UserParameter=licenses.nanocadGeonikaALIGNMENTS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Alignments» | cut -c 74-76
UserParameter=licenses.nanocadGeonikaSECTIONS.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoGeonika_Sections» | cut -c 72-74
UserParameter=licenses.nanocadConstrSuite_RFCONSTR.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoConstrSuite_Rf» | cut -c 74-76
UserParameter=licenses.nanocadConstrSuite_FOUND.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP500хххх-ххххх.lic» -a | find /i «Users of NanoConstrSuite_Found» | cut -c 71-73
UserParameter=licenses.users.used, «C:\Program Files (x86)\Nanosoft\Nanosoft License Server\lmutil» lmstat  -c «C:\ProgramData\Nanosoft\LicServSetup\Licenses\NCSP5002072-99999.lic» -a

Перезапускаем службу zabbix-agent

Теперь в Zabbix нужно создать необходимые группы элементов данных, элементы, графики и триггеры для контроля состояния лицензий:

Буду показывать на элементе nanocadHEATING_lic —  остальные аналогично:
Создаем элемент данных nanocadHEATING_lic :

Zabbix элементы

Zabbix элементы

В него передается UserParameter  «licenses.nanocadHEATING.used» (который мы использовали в файле D:\monitor\zabbix_agentd.win.conf)

Настраиваем триггер на срабатывание, когда кол-во используемых лицензий станет больше 0 (так как у нас всего одна лицензия данного продукта — для других лицензий триггеры будут свои)

Zabbix триггер

Zabbix триггер

Создаем график использования лицензий — общий для всех.(само создание графиков не описываю)

Zabbix график использования лицензий NanoCAD

Zabbix график использования лицензий NanoCAD

Vladimir

Добавить комментарий