From b4f797a71117cf00b3d75e6d4560195e72d08d8f Mon Sep 17 00:00:00 2001 From: Ludovic Cartier Date: Mon, 16 Mar 2026 15:47:49 +0100 Subject: [PATCH] add uptime check --- files/nrpe/check_uptime | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 files/nrpe/check_uptime diff --git a/files/nrpe/check_uptime b/files/nrpe/check_uptime new file mode 100644 index 0000000..ccdf203 --- /dev/null +++ b/files/nrpe/check_uptime @@ -0,0 +1,39 @@ +#!/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 -c "; 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 \ No newline at end of file