вторник, 29 июля 2014 г.

Мониторинг HASP ключей 1с в Zabbix

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

Велосипед изобретать не хотел. Поэтому первым делом начал искать готовые решения. Решения, которые   удовлетворяли бы меня, я не нашел. Но наткнулся на интересную тему на форуме Zabbix. Правда то решение мне не особо нравилось. Потому что практически на все у меня настроены LLD. Руками каждый раз вбивать элементы данные в какой-то момент мне надоело, и я настроил на все что мог LLD. Поэтому и для HASP я решил пойти этим путем.

Делать все будем на Windows сервере. В вышеприведенной ссылке один из участников форума написал небольшую программу, которая обращается к библиотеке hsmon.dll из состава Aladdin  Monitor. Ее и будем использовать. Так же нам понадобиться утилиты sed и grep. Чтоб не заниматься поиском, в конце будет ссылка на архив.

Итак. Предположим что zabbix-agent у нас в папке C:\zabbix. Создаем в этой папке еще одну папку и называем ее hasp. Содержимое архива кидаем туда. В конфиг zabbix добавляем строки

UserParameter=hasp_id,powershell -File "C:\zabbix\hasp\hasp.ps1" get_id
UserParameter=hasp_used[*],powershell -File "C:\zabbix\hasp\hasp.ps1" get_load $1 
UserParameter=hasp_max[*],powershell -File "C:\zabbix\hasp\hasp.ps1" get_max $1 

Скрипт занимается 2 вещами. Для начала он выводит в формате JSON ID ключей Hasp. Это необходимо для работы LLD. Если скрипту в качестве переменной передать ему get_load ID, то он выдаcт количество активных подключений. Если передать get_max ID, то выдаст еще и максимально возможное количество.

В самом Zabbix создаем шаблон. Называем как угодно, например Template Hasp. Переходим в Правила Обнаружения. Создаем новое. Пусть называется оно Hasp discovery. В графе ключ вписываем hasp_id, интервал 3600. Сохраняем. Дальше в прототипы данных. Создаем прототип. Назовем Hasp keys used for id {#ID}, ключ hasp_used[{#ID}], Интервал обновления можно 60 сек. И еще один такой же элемент, но с именем Hasp keys max for id {#ID}, а  в строке ключ hasp_max[{#ID}]. Первый покажет сколько занято. Второй максимальное количество. На основе этих элементов создаем график с таким же именем. В качестве прототипа выбираем наши созданные элементы данных. Так же можно создать триггер, который будет сравнивать текущее количество с максимальным. Как создавать такой триггер описывать не стану. Ничего сложного в этом нет.

Вот и все. Все необходимое есть в этом архиве. Возможно скрипт написан не совсем элегантно. Делал на скорую руку.

UPD. Перевел на Powershell.  Архив обновил.

Не забываем разрешить выполнение скриптов Powershell.