Zabbix: LLD-мониторинг служб FLEXlm на PowerShell

72d814d5f25e4f0f8eb39930e0d9bb37.png
Продолжаю тему шаблонов низкоуровнего обнаружения для Windows. Далее речь пойдет о службе лицензирования FLEXlm от компании Flexera Software, которая используется многими вендорами для защиты своих продуктов.
Как показала обратная связь, мониторинг этой службы под Windows интересует многих. И это понятно: не все разработчики предоставляют серверы лицензирования под системы, отличные от Windows.

Что находит и отслеживает данный шаблон:

  • Серверы лицензирования разных вендоров
  • Доступные продукты (feature/increment)
  • Количество доступных и использованных лицензий по продуктам.


Выглядит это так:
dc3a00082756484f835ef22598bc1331.jpg

Суммарно понадобятся:

  1. утилита lmutil.exe
  2. скрипт на PS
  3. шаблон

Настройка агента


Подробности о настройке агента можно посмотреть в предыдущей статье. В этом шаблоне используются те же методы.

Шаблон


Шаблон создан и экспортирован из Zabbix 3.2, на предыдущих версиях импорт не гарантируется.
Шаблон


Так как Заббикс при обнаружении получает нечитаемые для глаза человека имена серверов и продуктов, то в шаблоне используются макросы для корректного отображения. Если у вас, к примеру, обнаружен продукт XXXXACD_2015_0F, то создайте макрос »{$XXXXACD_2015_0F}» равный «AutoCAD 2015». Аналогично дело обстоит и с серверами. Сам шаблон уже содержит некоторое количество доступных мне преобразований.
Для тех, кто хочет сделать так же
В именах элементов и триггеров используется вложенная переменная вида {${#ID}}. Таким образом происходит двойное преобразование: первый раз, когда подставляется {#ID} от обнаружения, второй — когда подставляется уже вся переменная из макроса шаблона/узла/etc.

Скрипт PS


Проверен на Windows XP SP3×86, 7 SP1×64, 8.1×64. Ключей совсем немного. Как и ранее, скрипт нужно положить в папку, которую вы прописали в UserParameter в конфигурации агента.
windows.flex.ps1


lmutil.exe


Эта утилита командной строки входит (практически) во все версии менеджеров лицензий, именно через нее запрашиваются все данные. Мною проверены менеджеры от CSoft, Nanosoft и Autodesk. Для корректной работы скрипта необходимо добавить путь к папке, в которой лежит lmutil.exe, в переменную Path в системные переменные среды без кавычек. К примеру, по умолчанию для CSoft v11.5 это папка «C:\Program Files (x86)\CSoft\CS License Server», а для Autodesk v11.13.1 — «C:\Autodesk\Network License Manager». В качестве разделителя используйте используется знак »; ».

Немного об AutoCAD


С этим разработчиком оказалось не все так просто. «Из коробки» lmutil отдает ошибку -1,359. Хотя если указать порт@хост, то все нормально.
41de23c6ffee4c77916a44de90094cee.jpg

Связано такое поведение скорее всего с тем, что в старших версиях FLEXlm lmutil сопоставляет пути переменных LM_LICENSE_FILE и VENDOR_LICENSE_FILE. Пути эти стандартные и по умолчанию не существуют.

Для решения достаточно взять lmutil.exe версии 11.5 из произвольного пакета (CSoft/Nanosoft). Или выполнить на хосте команду вида
lmutil lmpath -override all «путь_к_файлу_вашей_лицензии»
a121d6b995734fff956b7c211a30e6c4.jpg

Аналогичным образом можно использовать команду
lmutil lmpath -add «произвольное_имя_вендора» «путь_к_файлу_вашей_лицензии»
Эти данные нигде больше не используются. Подробнее об этих и других командах вы можете узнать из инструкции по лицензированию, рекомендую к прочтению при дебаге.
Важно! Для Windows 8.1×64 потребовалось выполнить данную процедуру от имени системной учетной записи.

Итого


У меня в таком режиме мониторинг работает немногим более года. И с помощью этого шаблона я практически полностью забыл о ситуации «мне лицензию не выдает» от пользователей, просто назначив на триггер перезапуск нужной службы через «Действия».
В планах прикрутить к шаблону поиск ошибок и расшифровки к ним. Но это будет уже в другой серии.

Комментарии (0)

© Habrahabr.ru