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

в 5:33, , рубрики: FLEXlm, powershell, windows, zabbix, Серверное администрирование, системное администрирование

Zabbix: LLD-мониторинг служб FLEXlm на PowerShell - 1
Продолжаю тему шаблонов низкоуровнего обнаружения для Windows. Далее речь пойдет о службе лицензирования FLEXlm от компании Flexera Software, которая используется многими вендорами для защиты своих продуктов.

Как показала обратная связь, мониторинг этой службы под Windows интересует многих. И это понятно: не все разработчики предоставляют серверы лицензирования под системы, отличные от Windows.

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

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


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

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

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

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

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

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

Шаблон

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

Шаблон

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

Для тех, кто хочет сделать так же

В именах элементов и триггеров используется вложенная переменная вида {${#ID}}. Таким образом происходит двойное преобразование: первый раз, когда подставляется {#ID} от обнаружения, второй — когда подставляется уже вся переменная из макроса шаблона/узла/etc.

Скрипт PS

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

windows.flex.ps1

lmutil.exe

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

Немного об AutoCAD

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

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

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

Для решения достаточно взять lmutil.exe версии 11.5 из произвольного пакета (CSoft/Nanosoft). Или выполнить на хосте команду вида

lmutil lmpath -override all «путь_к_файлу_вашей_лицензии»

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

Аналогичным образом можно использовать команду

lmutil lmpath -add «произвольное_имя_вендора» «путь_к_файлу_вашей_лицензии»

Эти данные нигде больше не используются. Подробнее об этих и других командах вы можете узнать из инструкции по лицензированию, рекомендую к прочтению при дебаге.
Важно! Для Windows 8.1 x64 потребовалось выполнить данную процедуру от имени системной учетной записи.

Итого

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

В планах прикрутить к шаблону поиск ошибок и расшифровки к ним. Но это будет уже в другой серии.

Автор: AcidVenom

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js