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
Ein super Blog. Endlich mal jemand, der etwas wichtiges bloggt, mit dem Insider etwas anfangen können. Werde öfter vorbei kommen. Weiter so.