You've already forked nrpe
39 lines
987 B
Bash
Executable File
39 lines
987 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# Nagios Exit Codes
|
|
STATE_OK=0
|
|
STATE_WARNING=1
|
|
STATE_CRITICAL=2
|
|
STATE_UNKNOWN=3
|
|
|
|
# Default values (in minutes)
|
|
warn=1440
|
|
crit=30
|
|
|
|
# Retrieve arguments
|
|
while getopts "w:c:" opt; do
|
|
case $opt in
|
|
w) warn=$OPTARG ;;
|
|
c) crit=$OPTARG ;;
|
|
*) echo "Usage: $0 -w <minutes> -c <minutes>"; exit $STATE_UNKNOWN ;;
|
|
esac
|
|
done
|
|
|
|
# Extract uptime (in seconds) via /proc
|
|
uptime_seconds=$(cat /proc/uptime | awk '{print $1}' | cut -d. -f1)
|
|
uptime_min=$((uptime_seconds / 60))
|
|
|
|
# Performance Data
|
|
PERFDATA="|uptime_min=${uptime_min}min;${warn};${crit};0;"
|
|
|
|
# Decision logic
|
|
if [ "$uptime_min" -le "$crit" ]; then
|
|
echo "CRITICAL - Recent reboot detected (${uptime_min} min < threshold ${crit} min)$PERFDATA"
|
|
exit $STATE_CRITICAL
|
|
elif [ "$uptime_min" -le "$warn" ]; then
|
|
echo "WARNING - Uptime low (${uptime_min} min < threshold ${warn} min)$PERFDATA"
|
|
exit $STATE_WARNING
|
|
else
|
|
echo "OK - System stable (Uptime: ${uptime_min} min)$PERFDATA"
|
|
exit $STATE_OK
|
|
fi |