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
A local check that sorts all processes by memory size. Limited to 20 processes due to the number of processes. This check is also just about finding the memory hogs.
On the server to be monitored, copy after