我已经修复了许多服务器上的问题,这些问题表明 Nagios 上存在错误,但由于某种原因,即使问题已修复,警报仍然出现。所以我想知道,有没有办法强制检查所有主机?
答案1
目前为止最简单的方法就是重启 Nagios。重启后它将开始新的检查周期。
答案2
所以我想知道,有没有办法强制检查所有主机?
SCHEDULE_FORCED_HOST_SVC_CHECKS
外部命令就是您正在寻找的。
要获取所有主机,请查看MK 实时状态:
# echo -e 'GET hosts\nColumns: host_name' | unixcat /usr/local/nagios/var/rw/live
然后通过管道传输SCHEDULE_FORCED_HOST_SVC_CHECKS
命令:
echo -e 'GET hosts\nColumns: host_name' | unixcat /usr/local/nagios/var/rw/live | while read host; do echo "[$(date +%s)] SCHEDULE_FORCED_HOST_SVC_CHECKS;$host;$(date +%s)\n" $(date +%s) >> /usr/local/nagios/var/rw/nagios.cmd; done
答案3
下面是基于 Nagios 示例脚本和外部命令“SCHEDULE_FORCED_HOST_SVC_CHECKS”的 bash 脚本:
#!/bin/sh
# This is a sample shell script showing how you can submit the SCHEDULE_HOST_SVC_CHECKS command
# to Nagios. Adjust variables to fit your environment as necessary.
now=`date +%s` commandfile='/usr/local/nagios/var/rw/nagios.cmd'
for i in hosts/*.cfg
do
SITE=$(grep host_name $i | head -1 | sed 's/host_name//' | tr -d '[:blank:]')
/usr/bin/printf "[%lu] SCHEDULE_HOST_SVC_CHECKS;${SITE};1110741500\n" $now > $commandfile
done
答案4
https://github.com/joshforcier/nagiosForceImmediateCheck
这是一个 Nagios XI 组件,用于强制立即检查多个主机/服务。