Продолжаю тему шаблонов низкоуровнего обнаружения для Windows. Далее речь пойдет о службе лицензирования FLEXlm от компании Flexera Software, которая используется многими вендорами для защиты своих продуктов.
Как показала обратная связь, мониторинг этой службы под Windows интересует многих. И это понятно: не все разработчики предоставляют серверы лицензирования под системы, отличные от Windows.
Что находит и отслеживает данный шаблон:
- Серверы лицензирования разных вендоров
- Доступные продукты (feature/increment)
- Количество доступных и использованных лицензий по продуктам.
Выглядит это так:
Суммарно понадобятся:
- утилита lmutil.exe
- скрипт на PS
- шаблон
Настройка агента
Подробности о настройке агента можно посмотреть в предыдущей статье. В этом шаблоне используются те же методы.
Шаблон
Шаблон создан и экспортирован из 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)\CSoft\CS License Server», а для Autodesk v11.13.1 — «C:\Autodesk\Network License Manager». В качестве разделителя используйте используется знак ";".
Немного об AutoCAD
С этим разработчиком оказалось не все так просто. «Из коробки» lmutil отдает ошибку -1,359. Хотя если указать порт@хост, то все нормально.
Связано такое поведение скорее всего с тем, что в старших версиях FLEXlm lmutil сопоставляет пути переменных LM_LICENSE_FILE и VENDOR_LICENSE_FILE. Пути эти стандартные и по умолчанию не существуют.
Для решения достаточно взять lmutil.exe версии 11.5 из произвольного пакета (CSoft/Nanosoft). Или выполнить на хосте команду вида
lmutil lmpath -override all «путь_к_файлу_вашей_лицензии»
Аналогичным образом можно использовать команду
lmutil lmpath -add «произвольное_имя_вендора» «путь_к_файлу_вашей_лицензии»
Эти данные нигде больше не используются. Подробнее об этих и других командах вы можете узнать из инструкции по лицензированию, рекомендую к прочтению при дебаге.
Важно! Для Windows 8.1 x64 потребовалось выполнить данную процедуру от имени системной учетной записи.
Итого
У меня в таком режиме мониторинг работает немногим более года. И с помощью этого шаблона я практически полностью забыл о ситуации «мне лицензию не выдает» от пользователей, просто назначив на триггер перезапуск нужной службы через «Действия».
В планах прикрутить к шаблону поиск ошибок и расшифровки к ним. Но это будет уже в другой серии.
Поделиться с друзьями