Эта статья — более детальная проработка предыдущей. Теперь шаблон унифицирован для использования как в 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 и в открывшее окно командной строки внести нужные команды.
Подробнее об этих и других командах вы можете узнать из инструкции по лицензированию, рекомендую к прочтению при дебаге.
Связано такое поведение скорее всего с тем, что в старших версиях 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
Пошаговая установка Autodesk NLM в Ubuntu
Заголовок спойлера
0) Установка ОС за вами
1) Скачайте актуальный NLM от Autodesk.
На момент написания статьи это 11.13.1.2
2) Распакуйте архив
На выходе получается rpm-пакет.
3) Установите необходимые пакеты для работы
4) Конвертируем пакет в deb
На выходе получается adlmflexnetserver_12.0.36-1_amd64.deb.
5) Инсталлируем получившийся пакет
Инсталляция происходит в /opt/flexnetserver
6) Поместите вашу лицензию на продукты Autodesk на сервер.
7) Создайте папку для логов и задайте нужные права
8) Протестируйте работу лицензии
Путь к вашей лицензии может отличаться.
Если сервер отрабатывает верно, то переходите к следующему пункту. Если нет, то читайте лог и приступайте к дебагу.
9) Для запуска сервера лицензий в автоматическом режиме необходимо его прописать в rc.local. Запускать желательно от имени непривилегированного пользователя и через nohup. Эта утилита позволяет процессу работать даже при выходе пользователя.
и укажите строку перед exit 0
su user -c 'nohup /opt/flexnetserver/lmgrd -c /opt/flexnetserver/adskflex.lic -l /var/log/flex/flex.log'
10) Перезагрузите сервер и проверьте работу (пункт 8)
Все пути указывайте полностью!
1) Скачайте актуальный NLM от Autodesk.
На момент написания статьи это 11.13.1.2
wget http://download.autodesk.com/us/support/files/network_license_manager/11_13_1_2_v2/Linux/nlm11.13.1.2_ipv4_ipv6_linux64.tar.gz
2) Распакуйте архив
tar -xvzf nlm11.13.1.2_ipv4_ipv6_linux64.tar.gz
На выходе получается rpm-пакет.
3) Установите необходимые пакеты для работы
sudo apt-get install alient lsb -y
4) Конвертируем пакет в deb
sudo alien nlm11.13.1.2_ipv4_ipv6_linux64.rpm
На выходе получается adlmflexnetserver_12.0.36-1_amd64.deb.
5) Инсталлируем получившийся пакет
sudo dpkg -i adlmflexnetserver_12.0.36-1_amd64.deb
Инсталляция происходит в /opt/flexnetserver
6) Поместите вашу лицензию на продукты Autodesk на сервер.
7) Создайте папку для логов и задайте нужные права
sudo mkdir /var/log/flex
sudo chmod 777 /var/log/flex
8) Протестируйте работу лицензии
cd /opt/flexnetserver
./lmgrd -c /opt/flexnetserver/adskflex.lic -l /var/log/flex/flex.log
./lmutil lmstat -a
Путь к вашей лицензии может отличаться.
Если сервер отрабатывает верно, то переходите к следующему пункту. Если нет, то читайте лог и приступайте к дебагу.
9) Для запуска сервера лицензий в автоматическом режиме необходимо его прописать в rc.local. Запускать желательно от имени непривилегированного пользователя и через nohup. Эта утилита позволяет процессу работать даже при выходе пользователя.
sudo nano /etc/rc.local
и укажите строку перед exit 0
su user -c 'nohup /opt/flexnetserver/lmgrd -c /opt/flexnetserver/adskflex.lic -l /var/log/flex/flex.log'
10) Перезагрузите сервер и проверьте работу (пункт 8)
Все пути указывайте полностью!
Конфигурация 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!