File: //usr/lib/check_mk_agent/local/status_lshttpd
#!/bin/bash
SERVICE="lshttpd"
# 1. STATUS CHECK
if systemctl is-active --quiet "$SERVICE"; then
STATE=0
MSG_STATUS="RUNNING"
else
STATE=2
MSG_STATUS="NOT RUNNING"
fi
# 2. CPU Usage (%)
CPU=$(ps -C lshttpd -o %cpu --no-headers 2>/dev/null | awk '{sum+=$1} END {print sum}')
CPU=${CPU:-0}
# 3. RAM Usage (MB)
RAM=$(ps -C lshttpd -o rss --no-headers 2>/dev/null | awk '{sum+=$1} END {print int(sum/1024)}')
RAM=${RAM:-0}
# 4. CONNECTION count (port 80 / fallback 443)
CONN=$(ss -tn sport = :80 2>/dev/null | wc -l)
if [ "$CONN" -eq 0 ]; then
CONN=$(ss -tn sport = :443 2>/dev/null | wc -l)
fi
# 5. UPTIME (seconds)
UPTIME_RAW=$(systemctl show lshttpd -p ActiveEnterTimestamp | awk -F'= ' '{print $2}')
if [ -n "$UPTIME_RAW" ]; then
UPTIME_TS=$(date -d "$UPTIME_RAW" +%s 2>/dev/null)
NOW=$(date +%s)
UPTIME=$((NOW - UPTIME_TS))
else
UPTIME=0
fi
# 6. RPS (DISABLED NOW - set static 0 for fallback)
RPS=0
# OUTPUT FORMAT FOR CHECKMK LOCAL CHECK WITH THRESHOLDS
# CPU Warning >80%, Critical >95%
# RAM Warning >400MB, CRIT left empty (can be set via GUI rule override)
# CONN Warning >200, Critical >250
echo "$STATE Status_Litespeed rps=${RPS};;;; cpu=${CPU}%;80;95;0;100 ram_mb=${RAM}MB;400;; conn=${CONN};2000;2500;; uptime=${UPTIME}s - LiteSpeed $MSG_STATUS | RPS=$RPS CPU=$CPU RAM_MB=$RAM CONN=$CONN UPTIME=$UPTIME"