#!/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
正如其他一些人在他们的评论中所说,Nagios 在重新启动时没有检测到服务器不可用,因为它们花费的时间很少。
要检查服务器是否已重新启动,您可以编写自己的插件。您只需将服务器的正常运行时间保存在一个临时文件中并检查当前正常运行时间与旧的正常运行时间。如果当前正常运行时间低于保存的正常运行时间,则插件将返回关键状态。
您还可以使用 check-uptime 插件(https://exchange.nagios.org/directory/Plugins/System-Metrics/Uptime/check-uptime/details),当正常运行时间小于时,该插件将返回关键状态,例如例如,5 分钟。这样,当服务器的正常运行时间低于 5 分钟时,您将收到通知,这意味着它已重新启动。
如果您需要以秒为单位检查正常运行时间,请改用此脚本: