BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Systemstatistiken aufzeichnen

Mit Hilfe von gather lassen sich Systemstatistiken aufzeichnen und im nachhinein abfragen. Im FreeBSD-Portbaum findet man gather unter sysutils/gather:

# cd /usr/ports/sysutils/gather && make install clean

Nun müssen in der /etc/crontab folgende Einträge gemacht werden. Damit werden alle fünf Minuten die Daten gespeichert und automatisch nach sieben Tagen gelöscht:

*/5 * * * * root /usr/local/bin/gather collect
18  0 * * * root /usr/local/bin/gather expire 7

Nun kann abgefragt werden, welche Daten aufgezeichnet werden:

# gather show utils
-----------------------------------------------------------------------
name       cmd                      desc
-----------------------------------------------------------------------
df         /bin/df                  df output
fstat      /usr/bin/fstat           fstat output
netstat-La /usr/bin/netstat -Lna    netstat listening socket statistics
netstat-a  /usr/bin/netstat -na     netstat socket statistics
netstat-i  /usr/bin/netstat -ni     netstat interface statistics
netstat-m  /usr/bin/netstat -m      netstat mbuf statistics
netstat-rs /usr/bin/netstat -rs     netstat routing statistics
netstat-s  /usr/bin/netstat -s      netstat system wide statistics
nfsstat    /usr/bin/nfsstat         nfsstat output
ps         /bin/ps auxww            processes statistics
sockstat   /usr/bin/sockstat        sockstat output
sysctl     /sbin/sysctl -a          sysctl variables
top        /usr/bin/top -d1 -b 100  top output
uptime     /usr/bin/uptime          system uptime
vmstat     /usr/bin/vmstat          vmstat output
vmstat-i   /usr/bin/vmstat -ai      vmstat interrupts statistics
vmstat-m   /usr/bin/vmstat -m       vmstat kernel malloc(9) statistics
vmstat-z   /usr/bin/vmstat -z       vmstat kernel uma(9) statistics

Möchte man abfragen wie der System-Load am 12. November 2010 zwischen 2:00 und 3:00 war, kann folgender Befehl verwendet werden:

# gather show -t '2010-11-12/02' grep '.*' uptime
2010-11-12/02/00:  2:00AM  up 120 days,  9:50, 0 users, load averages: 2.31, 1.92, 1.42
2010-11-12/02/05:  2:05AM  up 120 days,  9:55, 0 users, load averages: 0.84, 1.27, 1.27
2010-11-12/02/10:  2:10AM  up 120 days, 10 hrs, 0 users, load averages: 0.86, 0.97, 1.11
2010-11-12/02/15:  2:15AM  up 120 days, 10:05, 0 users, load averages: 4.51, 2.75, 1.83
2010-11-12/02/20:  2:20AM  up 120 days, 10:10, 0 users, load averages: 4.36, 3.54, 2.45
2010-11-12/02/25:  2:25AM  up 120 days, 10:15, 0 users, load averages: 4.15, 3.99, 2.99
2010-11-12/02/30:  2:30AM  up 120 days, 10:20, 0 users, load averages: 4.43, 4.20, 3.37
2010-11-12/02/35:  2:35AM  up 120 days, 10:25, 0 users, load averages: 3.30, 3.88, 3.47
2010-11-12/02/40:  2:40AM  up 120 days, 10:30, 0 users, load averages: 0.95, 1.98, 2.69
2010-11-12/02/45:  2:45AM  up 120 days, 10:35, 0 users, load averages: 1.25, 1.24, 2.11
2010-11-12/02/50:  2:50AM  up 120 days, 10:40, 0 users, load averages: 0.93, 1.02, 1.74
2010-11-12/02/55:  2:55AM  up 120 days, 10:45, 0 users, load averages: 1.06, 1.04, 1.54

Auch können nur bestimmte Zeilen von den aufgezeichneten Daten angezeigt werden. Im folgenden Beispiel wird jeweils nur die Zeile mit den offenen Dateien innerhalb des angegebenen Zeitfensters aus den aufgezeichneten sysctl-Variablen angezeigt:

# gather show -t '2010-11-13/1--2010-11-13/2' grep '^kern.openfiles:' sysctl
2010-11-13/01/00: kern.openfiles: 255
2010-11-13/01/05: kern.openfiles: 259
2010-11-13/01/10: kern.openfiles: 261
2010-11-13/01/15: kern.openfiles: 261
2010-11-13/01/20: kern.openfiles: 264
2010-11-13/01/25: kern.openfiles: 261
2010-11-13/01/30: kern.openfiles: 261
2010-11-13/01/35: kern.openfiles: 270
2010-11-13/01/40: kern.openfiles: 308
2010-11-13/01/45: kern.openfiles: 311
2010-11-13/01/50: kern.openfiles: 296
2010-11-13/01/55: kern.openfiles: 308
2010-11-13/02/00: kern.openfiles: 311
2010-11-13/02/05: kern.openfiles: 306
2010-11-13/02/10: kern.openfiles: 282
2010-11-13/02/15: kern.openfiles: 265
2010-11-13/02/20: kern.openfiles: 269
2010-11-13/02/25: kern.openfiles: 301
2010-11-13/02/30: kern.openfiles: 311
2010-11-13/02/35: kern.openfiles: 294
2010-11-13/02/40: kern.openfiles: 311
2010-11-13/02/45: kern.openfiles: 311
2010-11-13/02/50: kern.openfiles: 309
2010-11-13/02/55: kern.openfiles: 294

Auch können die Anzahl gefunden Zeilen ausgegeben werden. Möchte man wissen wieviele offene Sockets der www-Benutzer hatte, kann folgender Befehl verwendet werden:

# gather show -t '2010-11-09' grep -c '^www\s' sockstat 
2010-11-09/00/00: 32
2010-11-09/00/05: 32
2010-11-09/00/10: 35
2010-11-09/00/15: 35
2010-11-09/00/20: 34
2010-11-09/00/25: 34
[...]
2010-11-09/23/30: 32
2010-11-09/23/35: 32
2010-11-09/23/40: 32
2010-11-09/23/45: 32
2010-11-09/23/50: 32
2010-11-09/23/55: 32

Mehr Informationen zu gather findet man in der Manpage gather(1).

Comments (1)  Permalink