Hi,
eigentlich wollte ich grad mal einfach die CPU-Last auf meinem Rechner mitloggen und dachte mir das geht ja ganz einfach:
top -bin 1 | grep 'CPU states' >> last.log
Dummerweise kommt da immer der gleiche Wert bei raus, top braucht wohl auch zwei Durchläufe um aus der Ã?nderung in /proc/stat die Last zu berechnen. Wenn ich
top -bin 2 | grep 'CPU states'
mach ist der zweite Wert dann auch richtig. Wiederum dummerweise dauert das relativ lange :(
Gibt's ein fertiges Tool das einfach nur die CPU-Last ausgibt oder hat jemand einen Vorschlag wie man das scripttechnisch anders lösen kann?
Ich würd's ja gern mit Perl direkt aus /proc/stat holen aber a) hab ich keine Ahnung wie man das genau berechnet und b) bin ich 'ne absolute Regexp-Lusche ;)
Danke
CPU-Last loggen
-
- Posts: 2138
- Joined: 2002-12-15 00:10
- Location: Bergheim
Re: CPU-Last loggen
mrtg... könnte aber overkill sein. Vielleicht solltest eher uptime auswerten. Das geht bei weitem einfacher.
-
- Posts: 9
- Joined: 2004-02-25 12:21
Re: CPU-Last loggen
Code: Select all
#!/usr/bin/perl
open(STAT, "</proc/stat");
($junk, $cpu_user, $cpu_nice, $cpu_sys, $cpu_idle) = split(/s+/, <STAT>);
close(STAT);
$cpu_total1 = $cpu_user + $cpu_nice + $cpu_sys + $cpu_idle;
$cpu_load1 = $cpu_user + $cpu_nice + $cpu_sys;
sleep 1;
open(STAT, "</proc/stat");
($junk, $cpu_user, $cpu_nice, $cpu_sys, $cpu_idle) = split(/s+/, <STAT>);
close(STAT);
$cpu_total2 = $cpu_user + $cpu_nice + $cpu_sys + $cpu_idle;
$cpu_load2 = $cpu_user + $cpu_nice + $cpu_sys;
$cpuusage = int((1000 * ($cpu_load2 - $cpu_load1)) / ($cpu_total2 - $cpu_total1))/10;
exit $cpuusage;
Ich hätte das aber gerne als return Wert anstatt als exit Code, so frag ich das jetzt im Bashscript als cpuload=$? direkt nach dem Aufruf des Perlscripts ab, hätte aber lieber cpuload=`./cpuload.pl` oder so in der Richtung :)
-
- Posts: 9
- Joined: 2004-02-25 12:21
Re: CPU-Last loggen
Gnah, einfach
print $cpuusage;
anstelle von
exit $cpuusage;
und im Bashscript
cpuusage=`./cpuusage.pl`
:D
print $cpuusage;
anstelle von
exit $cpuusage;
und im Bashscript
cpuusage=`./cpuusage.pl`
:D
-
- Posts: 122
- Joined: 2003-08-13 20:46
Re: CPU-Last loggen
Loadwerte loggen und Grafik erstellen mit rrdtool
Cronjob (jede minute):
rrdtool update loadavg.rrd `date +%s`:`cat /proc/loadavg | sed "s/(([0-9]+.[0-9]+ ){3}).*/1/" | sed "s/ ([^$])/:1/g"`
Graphik erzeugen (kann natürlich auch mit im Cronjob landen):
rrdtool graph loadavg.gif -h 200 -w 900 --start -86400 DEF:avg5=loadavg.rrd:5min:AVERAGE DEF:avg15=loadavg.rrd:15min:AVERAGE DEF:avg30=loadavg.rrd:30min:AVERAGE LINE2:avg5#FF0000 LINE2:avg15#00FF00 LINE2:avg30#0000FF
Cronjob (jede minute):
rrdtool update loadavg.rrd `date +%s`:`cat /proc/loadavg | sed "s/(([0-9]+.[0-9]+ ){3}).*/1/" | sed "s/ ([^$])/:1/g"`
Graphik erzeugen (kann natürlich auch mit im Cronjob landen):
rrdtool graph loadavg.gif -h 200 -w 900 --start -86400 DEF:avg5=loadavg.rrd:5min:AVERAGE DEF:avg15=loadavg.rrd:15min:AVERAGE DEF:avg30=loadavg.rrd:30min:AVERAGE LINE2:avg5#FF0000 LINE2:avg15#00FF00 LINE2:avg30#0000FF
-
- Posts: 79
- Joined: 2003-03-23 17:42
Re: CPU-Last loggen
Code: Select all
#!/usr/bin/perl
usw.
also wenn ich 4.5 zurückbekomme, ist das system zu 4.5% ausgelastet.
-
- Posts: 669
- Joined: 2002-12-20 19:47
- Location: Mönchengladbach
Re: CPU-Last loggen
Was spricht gegen snmp?
-
- Posts: 69
- Joined: 2004-12-08 19:10
Re: CPU-Last loggen
Wobei das nicht ganz läuft...niklas_ wrote:Loadwerte loggen und Grafik erstellen mit rrdtool
Cronjob (jede minute):
rrdtool update loadavg.rrd `date +%s`:`cat /proc/loadavg | sed "s/(([0-9]+.[0-9]+ ){3}).*/1/" | sed "s/ ([^$])/:1/g"`
Graphik erzeugen (kann natürlich auch mit im Cronjob landen):
rrdtool graph loadavg.gif -h 200 -w 900 --start -86400 DEF:avg5=loadavg.rrd:5min:AVERAGE DEF:avg15=loadavg.rrd:15min:AVERAGE DEF:avg30=loadavg.rrd:30min:AVERAGE LINE2:avg5#FF0000 LINE2:avg15#00FF00 LINE2:avg30#0000FF
Code: Select all
sarge:~# rrdtool create loadavg.rrd `date +%s`:`cat /proc/loadavg | sed "s/(([0-9]+.[0-9]+ ){3}).*/1/" | sed "s/ ([^$])/:1/g"`
ERROR: can't parse argument '1121339462:0.01:0.05:0.06'
-
- Posts: 669
- Joined: 2002-12-20 19:47
- Location: Mönchengladbach
Re: CPU-Last loggen
http://people.ee.ethz.ch/~oetiker/webto ... te.en.htmlrudi wrote:Scheint am "date +%s" zu liegen. Genau kenne ich mich damit nicht aus.Code: Select all
sarge:~# rrdtool create loadavg.rrd `date +%s`:`cat /proc/loadavg | sed "s/(([0-9]+.[0-9]+ ){3}).*/1/" | sed "s/ ([^$])/:1/g"` ERROR: can't parse argument '1121339462:0.01:0.05:0.06'
Kurz: Du kannst den Teil mit dem date... durch N ersetzen, dann wird automatisch der aktuelle Wert genommen.