假设我有一个nagios
客户。它的计划停机时间为周一早上 8 点到周二早上 8 点,并且机器在整个停机时间内都处于关闭状态。
每天进行一次服务检查
check_interval 1440
假设检查时间恰好安排在晚上 8 点。因此,星期一晚上 8 点,检查开始,但失败了,并且nagios
由于计划停机而什么也没做。
周二早上 8 点。机器恢复运行。但该项服务将保持该CRITICAL
状态,直到晚上 8 点进行下一次预定检查。
有什么方法可以告诉我nagios
“维护check interval 1440
;但是,如果您看到机器停机并重新启动,则无论间隔多长时间都强制重新检查”?
答案1
我从另一个论坛得到了答案。
我将一个事件处理程序(TIL)附加到我的主机对象:
define host{
use linux-server ; Inherit default values from a template
host_name volvo ; The name we're giving to this host
alias volvo ; A longer name associated with the host
event_handler host_state_change
}
将我的新 event_handler 名称与 shell 脚本关联起来
define command{
command_name host_state_change
command_line $USER1$/eventhandlers/hostup.sh $HOSTNAME$ $HOSTSTATE$
}
并创建了一个脚本来检查新状态是什么(即,它从 DOWN 变为 UP,所以我正在寻找 UP)并通过命令文件强制进行服务检查
printf "[%lu] SCHEDULE_FORCED_SVC_CHECK;$hostname;serial_number;$NOW\n" $NOW > $COMMANDFILE