我已经配置了 nagios 服务器并添加了 30 多台物理服务器和 25 多台虚拟机。所有配置已完成,nagios 服务器正在监控服务器、虚拟机和服务。
但是当我重新启动虚拟机时,Nagios 服务器没有检测到虚拟机不可用并且显示在线。
有人遇到过这个问题吗?有人能帮忙解决吗?
答案1
正如其他人在评论中所述,Nagios 没有检测到服务器在重启时是否不可用,因为它们执行此操作所需的时间很少。
要检查服务器是否已重启,您可以编写自己的插件。您只需将服务器的正常运行时间保存在临时文件中,然后检查当前正常运行时间与旧正常运行时间。如果当前正常运行时间低于保存的正常运行时间,则插件将返回关键状态。
您还可以使用 check-uptime 插件(https://exchange.nagios.org/directory/Plugins/System-Metrics/Uptime/check-uptime/details),当正常运行时间少于 5 分钟时,它将返回严重状态。这样,当服务器正常运行时间少于 5 分钟时,您将收到通知,这意味着服务器已重新启动。
如果您需要在几秒钟内检查正常运行时间,请使用此脚本:
#!/bin/bash
CRIT_VALUE=$1
if [[ "$CRIT_VALUE" == "" ]]
then
# if any parameter is missing it will print it out and exit.
echo "No argument supplied or argument missing."
echo "Usage: ./uptime.sh <critical value in seconds>"
echo "Example: ./uptime.sh 300"
exit 1
else
since=$(date -d "$(uptime -s)" +%s)
now=$(date +%s)
seconds_uptime=$(( now - since ))
if [[ "$seconds_uptime" -le "$CRIT_VALUE" ]]; then
echo "CRITICAL! System rebooted $(( seconds_uptime / 60 )) minutes ago."
exit 2
fi
echo "OK. Up since $(date -d "$(uptime -s)")"
exit 0
fi