Дано:
Есть проприетарный софт Trassir (сервер видеонаблюдения) в котором лицензирование настроено через файл license.txt, находящийся в папке с программой.
Сервер видеонаблюдения windows server - trsprm
Сервер zabbix - zabbix 4.0
Задача:
Необходимо настроить оповещение о заканчивающейся лицензии в zabbix мониторинге
Решение:
Для решения поставленной задачи воспользуемся powershell. Разделим задачу на подпункты
1) Написать скрипт который будет отсчитывать дни от нынешней даты до истечения лицении в отдельный файл
2) Научить zabbix agent передавать данные в мониторинг эту информацию
3) Настроить тригер zabbix на срабатывание, если лицензии осталось меньше чем на 2 дня.
1) Скрипт напишем на powershell, я не знаток его, потому он достаточно грубый и без явного рефакторинга, возможно для конкретно вашей ситуации, кое что нужно будет изменить.
В двух словах что делает скрипт:
читает файл Trassir 3 License.txt записывает дату истечения лицензии в временный файл, отнимает от нынешней даты, дату указанную в временном файле
Есть проприетарный софт Trassir (сервер видеонаблюдения) в котором лицензирование настроено через файл license.txt, находящийся в папке с программой.
Сервер видеонаблюдения windows server - trsprm
Сервер zabbix - zabbix 4.0
Задача:
Необходимо настроить оповещение о заканчивающейся лицензии в zabbix мониторинге
Решение:
Для решения поставленной задачи воспользуемся powershell. Разделим задачу на подпункты
1) Написать скрипт который будет отсчитывать дни от нынешней даты до истечения лицении в отдельный файл
2) Научить zabbix agent передавать данные в мониторинг эту информацию
3) Настроить тригер zabbix на срабатывание, если лицензии осталось меньше чем на 2 дня.
1) Скрипт напишем на powershell, я не знаток его, потому он достаточно грубый и без явного рефакторинга, возможно для конкретно вашей ситуации, кое что нужно будет изменить.
В двух словах что делает скрипт:
читает файл Trassir 3 License.txt записывает дату истечения лицензии в временный файл, отнимает от нынешней даты, дату указанную в временном файле
#подсчет времени до истечения лицензии из файла Trassir 3 License.txt. Без рефакторинга. #lic - путь до файла лицензии $lic = "C:\DSSL\Trassir-4.0-service\Trassir 3 License.txt" #пути до временных файлов. Их можно не создавать. $path = "C:\DSSL\Trassir-4.0-service\tmp.txt" $end = "C:\DSSL\Trassir-4.0-service\end.txt" #Проверяем есть ли временные файлы, если нет - создаем. If(!(test-path $path)) { New-Item -ItemType file -Force -Path $path } If(!(test-path $end)) { New-Item -ItemType file -Force -Path $end } #очищаем от старых данных clear-content $path clear-content $end #читаем 7 строку файла лицензии и записываем в переменную $Expires $Expires = (Get-Content $lic )[6] #если строка не пустая, записываем дату if ($Expires) { #убираем лишнее значение [Expires:] из переменной $Expires = $Expires -split "[Expires:]" $Expires = $Expires.Trim() #записываем дату истечения лицензии в tmp.txt Add-Content -Value "$Expires" -Path $path #Записываем нынешнюю дату в переменную в нужном формате $Date = Get-Date -Format d #удаляем лишние пробелы в файле $Expires = $Expires -replace '\s','' #Преобразовываем значения в DateTime $Expires = (Get-Content $path) #Высчитываем сколько осталось дней до истечения $ts = New-TimeSpan -Start $Date -End $Expires $ts.Days # Check results #Удаляем время из даты $ts $ts = $ts -split "[.00:00:00]" $ts = $ts.Trim() Add-Content -Value "$ts" -Path $end } #если строка пустая, пишем, что лицензия бессрочная else { $Expires = "unlimited license" Add-Content -Value "$Expires" -Path $end Get-Content $end } Exit
Сохраняем этот файл по пути C:\DSSL\Trassir-4.0-service\lic.ps1 на сервере trsprm
Запускаем его и убеждаемся, что в папке C:\DSSL\Trassir-4.0-service\ создалось два файла
tmp.txt - записанная дата окончания лицензии
end.txt - кол-во дней оставшихся до окончания лицензии
2) Идем в zabbix agent C:\Program Files\Zabbix Agent на сервере trsprm и создаем там файл lic.bat:
@echo off
for /f "usebackq tokens=*" %%a in ("C:\DSSL\Trassir-4.0-service\end.txt") do (echo %%~a)
cmd
Тут мы просим скрипт прочитать содержимое файла end.txt, в котором указано оставшееся кол-во дней.Открываем конфиг zabbix агента C:\Program Files\Zabbix Agent\zabbix_agentd.conf
и в самом низу дописываем:
UserParameter=lic, "C:\Program Files\Zabbix Agent\lic.bat"
При попытке выполнить скрипт из консоли, должно возвращаться значение записанное в файле end.txtТ.е., у нас есть скрипт lic.ps1, который считает и записывает оставшиеся дни до окончания лицензии и есть скрипт lic.bat, который выполняется заббикс агентом и передает полученный параметр на сервер
3) Настраиваем заббикс-сервер
Идем в админку, Настройка - Узлы сети. Выбираем на сервере trsprm - Элементы данных - Создать
Главное указать Ключ, такой же как мы записали в zabbix_agentd.conf (UserParameter=lic)
По такому же принципу создаём тригер:
В выражении прописываем: {Trassir-server:lic.last()}=2
Вместо Trassir-server укажите название вашего сервера заведенного в zabbix. В моем случае это ссылка на элемент данных нескольких серверов.
Комментариев нет:
Отправить комментарий