Icinga
基於 Icinga2 中的 Service_State 動態設置 check_interval 參數
我有一個要求,檢查間隔為 180 分鐘,而通知間隔為 10 分鐘。意味著服務所有者希望如果他錯過任何通常在 180 分鐘後出現的警報,如果服務很關鍵,那麼 Icinga 會繼續檢查並每 10 分鐘通知他們一次,直到服務恢復正常。
我嘗試
interval = 0
了 notification.conf 中的參數,但這不符合要求。如果服務不正常,它每 10 分鐘發送一次警報,但它不檢查服務。
例如。如果服務在 180 分鐘之前恢復正常(即下一次檢查),它將繼續提醒直到下一次檢查。
在這裡找到了類似的問題, 但它是針對 Nagios 的,我無法將它與 Icinga2 合併。
我確定它將使用
CHANGE_NORMAL_SVC_CHECK_INTERVAL
參數完成,但不知道如何實現它。我還在 Icinga 頁面下方找到:
請幫忙。
這就是我為解決我的問題所做的。
1. 創建腳本
/icinga/plugins/change_check_interval.sh
#!/bin/bash now=`date +%s` commandfile='/var/run/icinga2/cmd/icinga2.cmd' case "$1" in OK) /usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;servername;servicename;180\n" $now >> $commandfile ;; WARNING) ;; UNKNOWN) ;; CRITICAL) /usr/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;servername;servicename;10\n" $now >> $commandfile ;; esac exit 0
2.然後用這個腳本在commands.conf中定義event_command
object EventCommand "change_check_interval"{ import "plugin-event-command" command = [ "/icinga/plugins/change_check_interval.sh", "$service.state$" ] }
3.並在services.conf中使用了event_command
apply Service "Service-Name" { import "template" check_command = "nrpe-arg" vars.remote_nrpe_command = "nrpe command" vars.remote_nrpe_arguments = "arg1" event_command = "change_check_interval" assign where host.name == "servername" }
此事件處理程序在服務正常時每 180 分鐘執行一次,而在服務至關重要時每 10 分鐘執行一次。