Привет, сегодня будем мониторить использование лицензий NormaCS.
Для мониторинга использования лицензий будем использовать данные, которые отдает NormaCS Server.
Данные выдаются в виде HTML страницы:
Конечно можно время от времени запускать NormaCS Server и записывать полученные данный в, к примеру, Excel, но это скучно и неинтересно.
Нас интересует число в предложении «активно 2 пользователя из 10 возможных»
Для реализации этого я придумал следующую схему:
— скачиваем вебстраницу (см. рисунок выше)
— ищем интересующий нас диапазон в тексте, в котором содержится цифра используемых лицензий
— копируем цифру в отдельный текстовый файл
— zabbix-ом смотрим содержимое этого файла и выводи его на график.
Приступим: Мониторинг лицензий NormaCS с помощью Zabbix
1. Скачать веб страницу — так как в Windows нет (или я плохо искал) команды для скачивания веб страницы, воспользуемся утилитой Wget . Устанавливаем.
2. Для вырезания нужного нам диапазона воспользуемся программой cut.exe из пакета GNU utilities for Win32 . Скачиваем и кидаем ее в c:/Windows/system32/. (Если не секьюрно напишите в комменты)
3. Пишем скрипт script1.bat следующего содержания:
@echo off
C:\"Program Files (x86)"\GnuWin32\bin\wget -O D:/monitor/normacs/new.txt -l 1 http://localhost:8888/Status?page=users
cut -c 359-360 D:/monitor/normacs/new.txt > D:/monitor/normacs/out2.txt
Здесь вебстраница копируется в файл new.txt, затем из диапазона 359-360 выдергивается цифра и копируется в файл out2.txt
4. Добавляем в конфигурационный файл агента на сервере пользовательский параметр (у вас свой путь):
D:\monitor\zabbix_agentd.win.conf:
UserParameter=normacs.used, D:\monitor\normacs\script1.bat
4. Идем в zabbix и создаем на нужном нам сервере (где установлена NormaCS) 2 элемента данных
— первый будет запускать скрипт D:\monitor\normacs\script1.bat
Для проверки того что UserParametr работает можно со стороны Zabbix запустить команду zabbix_get -s 192.168.0.4 -p 10050 -k vfs.file.contents[d:/monitor/normacs/out2.txt] в нашем случае должно вернуться число
я поставил интервал раз в 5мин
— второй считывать данный из файла out2.txt
будем использовать ключ vfs.file.contents[файл,<кодировка>] описание ключей Zabbix
Так как ключ vfs.file.contents ,по умолчанию, возвращает тип данных как текст — переопределим в тип информации «целое число» и обязательно — единица измерения item
Делаем график:
Готово!
P.S.
А вообще у меня сложилось впечатление, что можно было сделать проще… в zabbix есть такой параметр web.page.get[хост,<путь>,<порт>]
… но это в следующий раз 🙂