CPU Auslastung mit einfachen Mitteln Monitoren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
aubergine
Beiträge: 23
Registriert: 15.08.2005 22:17:59

CPU Auslastung mit einfachen Mitteln Monitoren

Beitrag von aubergine » 18.02.2006 22:58:28

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

Methusalix

CPU Auslastung mit einfachen Mitteln Monitoren

Beitrag von Methusalix » 19.02.2006 01:54:19

Hallo,

Monitoring-tools gibt es meines Wissens zur genüge.
...Ich möchte hier Abstand zu aufwendigen Web basierenden Programmen zum Server Monitoring nehmen
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:

Code: Alles auswählen

cat /proc/loadavg | cut -d " " -f 1
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. :wink:

Gruß
Matthias

yeti

Beitrag von yeti » 19.02.2006 02:51:38

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}"

aubergine
Beiträge: 23
Registriert: 15.08.2005 22:17:59

Beitrag von aubergine » 24.02.2006 20:03:17

Hi,

vielen Dank ist schonmal eine nette Idee :)

Antworten