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


Пошаговая установка Autodesk NLM в Ubuntu

Заголовок спойлера
0) Установка ОС за вами
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!

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