Process Speicherüberwachung
Beschreibung:
Ein lokal check der alle Prozesses nach Speichergröße sortiert.
Auf Grund der Prozessmenge auf 20 Stück Limitiert.
Bei diesem Check gehts auch nur darum die Speicherfresser zu finden.
Das Script
#!/bin/bash
# Schwellenwerte in Megabyte
WARN=1000 # Beispiel: 1000 MB
CRIT=2000 # Beispiel: 2000 MB
COUNT_PROC=20 #Anzahl der prozesse die ausgeben werden sollen -1 maximal 20
#diese werden nach speicherverbrauch sortiert
#Programm Variablen, bitte nicht verändern
#Laufvariable
i=0
#da bei null angefangen wird zu zählen-proccount um einen dezimieren
COUNT_PROC=$((COUNT_PROC-1))
# Anfang der Ausgabe für den Service
output="P \"Speicherverbrauch der Prozesse in MB\" "
# ps Befehl, um Prozessname und Speicherverbrauch (RSS) zu bekommen
while IFS= read -r line; do
memory=$(echo $line | awk '{print $1}')
#teilen durch 1024
memory=$((memory/1000))
process=$(echo $line | awk '{print $2}' | sed 's/[^a-zA-Z0-9]/_/g')
# Hinzufügen der Performance-Daten für jeden Prozess zum Output
printf -v format_i "%02d" $i
output+="NR-$format_i-${process}=${memory};${WARN};${CRIT}|"
if [ $i == $COUNT_PROC ]
then
break
fi
if [ $COUNT_PROC > -1 ]
then
i=$((i+1))
fi
done <<< $(ps -eo rss,comm --sort=-rss | awk 'NR>1')
#letztes semikolon entfernen
output="${output%?}"
#entferne , aus dem string
output=${output//[,]/}
#enterfne leerzeichnen aus dem string
output=${output//[_]/}
# Ausgabe des gesammelten Outputs
echo "$output"
Ausgabe:
P "Speicherverbrauch der Prozesse in MB" NR-00-kvm=67338;1000;2000|NR-01-kvm=4382;1000;2000|NR-02-kvm=4307;1000;2000|NR-03-cephosd=3305;1000;2000|NR-04-cephosd=3099;1000;2000|NR-05-cephosd=2875;1000;2000|NR-06-cephosd=2679;1000;2000|NR-07-kvm=1879;1000;2000|NR-08-kvm=1264;1000;2000|NR-09-kvm=916;1000;2000|NR-10-java=576;1000;2000|NR-11-cephmon=491;1000;2000|NR-12-kvm=436;1000;2000|NR-13-kvm=420;1000;2000|NR-14-cephmgr=325;1000;2000|NR-15-mongod=167;1000;2000|NR-16-corosync=165;1000;2000|NR-17-pveproxy=157;1000;2000|NR-18-launcher=154;1000;2000|NR-19-pveproxy=144;1000;2000
Installation
Auf dem zu überwachenden Server nach
/usr/lib/check_mk_agent/local/process.sh
kopieren