Hallo liebe Debian Nutzer,
ich habe einen neuen Server der nur als Gameserver genutzt wird.
Ich möchte hier Abstand zu aufwendigen Web basierenden Programmen zum Server Monitoring nehmen (cacti, serverstats etc..)
Ich strebe eine einfache Lösung an die folgendes ausführen soll:
1. Nur CPU Last soll mitgeschnitten werden wenn diese über 90% ist
2. Ausgabe in einfache Datei mit Datum und Uhrzeit, mit allen Prozessen die über 5% der CPU-Performance in Anspruch nehmen.
Ob das ganze Perl oder SH basierend ist, wäre mir im Endeffekt egal.
Wäre nett wenn jemand Lösungsansätze hätte.
Grüße
aubergine
CPU Auslastung mit einfachen Mitteln Monitoren
CPU Auslastung mit einfachen Mitteln Monitoren
Hallo,
Monitoring-tools gibt es meines Wissens zur genüge.
Das gibt Dir als Ergebnis die Prozessorauslastung zurück. Die könntest Du mit einer Kontrollstruktur wie if...then...else auswerten. Dann könntest Du da noch date einbauen; wegen Datum/Uhrzeit - oder eben einfach eines der sowieso schon vorhandenen tools nehmen.
Gruß
Matthias
Monitoring-tools gibt es meines Wissens zur genüge.
Ja dann mußt Du halt mit den systemeigenen Mitteln schauen, was Du da so ermitteln kannst. Eine Möglichkeit -als erster Ansatz- wäre:...Ich möchte hier Abstand zu aufwendigen Web basierenden Programmen zum Server Monitoring nehmen
Code: Alles auswählen
cat /proc/loadavg | cut -d " " -f 1
Gruß
Matthias
Code: Alles auswählen
#
# einen dateinamen für eine temporäre datei bauen.
# kann man besser machen!
# insbesondere in /tmp statt im aktuellen dir.
#
tmpfile=$$
#
# ps mit awk analysieren.
# insbesondere in einem rutsch alle prozesse mir über max cpu% ausgeben und
# derweil das gesamtmaximum bestimmen.
# exit-code success bei gesamt cpu% über maxtotal.
# hier sollte nochmal nachgebastelt werden, um tatsächliche awk-fehler
# dennoch erkennen zu können...
# ps praucht --no-headers, sonst versucht awk die zeile mit den überschriften
# auch auszuwerten...
# -v maxtotal=xxx und -v max=yyy anpassen
#
ps auxwww --no-headers | awk -v maxtotal=25 -v max=5 '
BEGIN {
FS=" "
total=n=pigs=0
}
$3>=max {
print
pigs++
}
{
total+=$3
n++
}
END {
printf "max cpu%% : %3.1f\n",maxtotal
printf "total cpu%% : %3.1f\n",total
printf "maxPerProcess%%: %3.1f\n",max
printf "processes : %d\n",n
printf "cpu pigs : %d\n",pigs
exit total>=maxtotal
}' > "${tmpfile}"
#
# der awk-teil endete erfolgreich, wenn die cpu-last über maxtotal lag.
# dann also tmpfile anzeigen, mailen oder so...
#
if let $? ; then
cat "${tmpfile}"
fi
#
# das tmpfile löschen
#
rm "${tmpfile}"