チェック間隔が180分で、通知間隔が10分であるという要件があります。サービスの所有者は、サービスが重要である場合に通常180分後に表示されるアラートを見逃した場合、サービスが通常に戻るまで10分ごとにチェックと通知を続けます。
私はnotification.confでinterval = 0
パラメータを試しましたが、それは要件を満たしていません。
サービスに問題がある場合は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$" ]
}
。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分ごとに実行されます。