Zabbix: LLD-мониторинг служб FlexLM (ОБНОВЛЕНО)

    image

    Эта статья — более детальная проработка предыдущей. Теперь шаблон унифицирован для использования как в Windows (PowerShell), так и в Linux (Bash). Если вы использовали предыдущий шаблон, то все должно встать болт-он.

    Что умеет: находить серверы/лицензии, считывать состояния серверов, считывать суммарное и использованное количество лицензий, в случае ошибок передает коды состояний (строку с описанием) и рапортует о них.

    Схема все та же:

    • Шаблон
    • Скрипты (PowerShell/Bash)
    • Правильная настройка агента



    Шаблон


    Здесь все просто: импортировал и забыл. Шаблон был сконструирован в Zabbix версии 3.2, имейте это ввиду.

    Как и в прошлый раз, для читаемости используются макросы конструкции {${#ID}} в именах элементов и триггеров. Шаблон уже содержит некоторое количество макросов, вы просто добавляете свои преобразования, исходя из найденных элементов.

    Также внутри уже есть несколько базовых триггеров для отслеживания состояния серверов и отдельных лицензий.

    Шаблон


    Скрипт для Windows


    Скрипт для Windows писался под Windows 7 SP1 на PSv4, на XP он не работает. Само собой, на сервере должен быть разрешен запуск PowerShell-скприптов (Set-ExecutionPolicy Unrestricted).

    flex.ps1


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

    Если вы используете сервер лицензий Autodesk, то посмотрите особенность под спойлером.

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



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

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

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



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

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

    Команды эти нужно выполнить от имени системной учетной записи, иначе Zabbix-агент так и не сможет работать с утилитой. Сделать это можно с помощью утилиты PsExec с ключом -s: psexec -s cmd и в открывшее окно командной строки внести нужные команды.

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

    Скрипт для Linux


    А этот скрипт писался под Ubuntu. О том, как пошагово установить сервер лицензирования Autodesk на Ubuntu читай ниже (Ubuntu официально не поддерживается).

    Скрипт копируете в произвольную папку на сервере (путь ее указываете в конфиге агента, об этом ниже), не забывайте дать соответствующие права на его исполнение.

    Также необходимо указать в скрипте каталог утилиты lmutil в разделе «Пользовательские переменные».

    flex.sh (обновлен 2017/10/26)
    Исправлены регулярки для обнаружения количества лицензий
    Исправлено обнаружение серверов, когда их >=2


    Конфигурация Zabbix-агента


    Добиться одновременной работы разных систем от одного шаблона позволяет правильная настройка агента, а точнее его части UserParameter. Еще этот метод позволяется раз и навсегда забыть про перезапуск агента в случае добавления нового функционала в виде скриптов. Это важно для высоконагруженных серверов, где при перезапуске агента можно потерять часть метрик.

    Итак, в данном случае используется строка:

    для Windows — UserParameter=ZScript[*],powershell C:\Zabbix\Scripts\ $1.ps1 $2 $3 $4

    для Linux — UserParameter=ZScript[*],bash /etc/zabbix/scripts/$1.sh $2 $3 $4
    Пути и количество переменных указываете свои. Переменных можно указать с запасом, лишним не будет.А к необходимым скриптам можно будет обратиться, используя ключ ZScript[$1,$2,$3,$4].

    Спасибо за внимание!

    Благодарности
    Хочется поблагодарить моего работодателя за мотивацию к написанию статьи. Если бы не вы, то мне бы не пришлось оптимизировать нагрузку на наших слабых серверах, переводя сервисы на Ubuntu Server!


    Обновление! 2017/12/26


    В связи с последними веяниями я решил переписать все под серверный вариант работы без юзерпараметров и скриптов на клиентах. Вам понадобится шаблон и скрипт в каталог внешних проверок (для Ubuntu — /usr/lib/zabbix/externalscripts). Не забывайте дать соответствующие права на исполнение этого файла. Шаблон экспортирован из версии 3.4.4. Из новшеств: теперь Zabbix получает список активных пользователей той или иной лицензии.
    Software - FlexLM.xml


    flexlm.sh


    Шаблон универсален и работает как для Windows, так и для Linux. Из дополнительных настроек требуется:
    • Windows: прописать путь к lmutil в системные переменные среды
    • Linux: скопировать lmutil в /usr/bin (опять же, для Ubuntu) и дать права на исполнение. Если используете сервер лицензий только под wine, то ниже я оставлю ссылку на скачивание только lmutil.

    lmutil из пакета Autodesk NLM 11.13
    www95.zippyshare.com/v/MOawVaur/file.html
    SHA-1: 02EF9BBF03C058A82AD31B3764B670EA7063C80E
    SHA-256: F9343E73B2ACCC4ABF7F7011C1E4CA123BB82D1E66412494E42F8A473D6ACCFB
    Share post

    Comments 2

      0
      В случае с win2003 скрипт на ps надо поправить:
      #            $obj = $obj.trim( )
      # для powershell v2 так:
      	     $obj = $obj | foreach-object {$_.trim()}
      


        0
        Скрипты на агентах лучше бы вообще не использовать.

      Only users with full accounts can post comments. Log in, please.