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

In einer Datei nach IPv4-Adressen suchen

Mit Hilfe von grepcidr lässt sich in einer Datei nach IPv4-Adressen suchen. Im FreeBSD -Portbaum findet man grepcidr unter net-mgmt/grepcidr:

# cd /usr/ports/net-mgmt/grepcidr && make install clean

Nun kann analog zu grep in einer Datei nach einer IPv4-Adresse gesucht werden und die entsprechenden Zeilen werden ausgegeben:

# cat hosts 
10.0.0.1        host1.chruetertee.ch
10.0.0.10       host2.chruetertee.ch
10.0.0.12       host3.chruetertee.ch
10.0.0.20       host4.chruetertee.ch
127.0.0.1       localhost
192.168.1.1     jail1.chruetertee.ch
192.168.1.9     jail2.chruetertee.ch
# grepcidr 127.0.0.1 hosts
127.0.0.1       localhost

Weiter kann auch ein Netz in der CIDR -Notation angegeben werden und alle Adressen innerhalb dieses Netzwes werden ausgegeben:

# grepcidr 192.168.1.0/24 hosts
192.168.1.1     jail1.chruetertee.ch
192.168.1.9     jail2.chruetertee.ch

Ausserdem ist es möglich einen IP-Adressbereich anzugeben nach welchem gesucht werden soll:

# grepcidr 10.0.0.10-10.0.0.19 hosts
10.0.0.10       host2.chruetertee.ch
10.0.0.12       host3.chruetertee.ch

Mit Hilfe der -c Option werden die gefundenen Zeilen nicht ausgegeben sondern angezeigt wie viele Treffer in der Datei erziehlt wurden. Mit der -v Option werden alle Zeilen ausgegeben welche die Suchadressen nicht beinhalten.

 Permalink

Zeit beim Systemstart synchronisieren

Möchte man die Uhrzeit beim Systemstart mit Hilfe von ntpdate synchronisieren, so kann dies durch das Setzen von ntpdate_enable in der /etc/rc.conf gemacht werden. Mit der Variable ntpdate_hosts können die NTP-Server angegeben werden, welche zur Synchronisation verwendet werden sollen:

ntpdate_enable="YES"
ntpdate_hosts="0.freebsd.pool.ntp.org"
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Verfügbarkeit des Portquellcodes überprüfen

Mit Hilfe von distilator kann die Verfügbarkeit des Quellcodes eines Ports überprüft werden. Im FreeBSD -Portbaum findet man den distilator unter ports-mgmt/distilator:

# cd /usr/ports/ports-mgmt/distilator && make install clean

Nun kann ein Port mit Hilfe des distilators überprüft werden und der HTTP-Statuscode von jedem Mirror-Server sowie der in der pkg-descr eingetragenen Webseite wird angezeigt:

# distilator /usr/ports/www/firefox
200 [DISTFILE]  http://ring.nict.go.jp/archives/net/www/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://mirror.internode.on.net/pub/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [WWW]       http://www.mozilla.com/firefox
404 [DISTFILE]  http://ftp.isu.edu.tw/pub/Mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  ftp://ftp.informatik.rwth-aachen.de/pub/mirror/ftp.mozilla.org/pub/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://jp-nii02.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  ftp://ftp.kaist.ac.kr/pub/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://mozilla.c3sl.ufpr.br/releases/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://mirror3.mirrors.tds.net/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://jp-nii01.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://kyoto-mz-dl.sinet.ad.jp/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://ftp.acc.umu.se/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://ftp.twaren.net/Unix/Mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://mozilla.mtk.nao.ac.jp/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://www.gtlib.cc.gatech.edu/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://ftp.ntu.edu.tw/pub/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  ftp://ftp.fh-wolfenbuettel.de/pub/www/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
500 [DISTFILE]  ftp://mozilla.mirror.pacific.net.au/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://ring.riken.jp/archives/net/www/mozilla/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
200 [DISTFILE]  http://mozilla.isc.org/pub/mozilla.org/firefox/releases/3.6.12/source/firefox-3.6.12.source.tar.bz2
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Apache-Logdateien mit SQL auswerten

Mit Hilfe von asql können Apache-Logdateien mit Hilfe von SQL ausgewertet werden. Im FreeBSD-Portbaum findet man asql unter www/asql:

# cd /usr/ports/www/asql && make install clean

Startet man asql muss zuerst die Apache-Logdatei mit Hilfe des load Kommandos geladen werden:

# asql
asql v1.6 - type 'help' for help.
asql> load /var/log/httpd-access.log                                                                                                     
Loading: /var/log/httpd-access.log

Durch das show Kommandos werden die Spalten angezeigt welche angefragt werden können:

# asql> show                                                                                                                                  

   The table 'log' table has the following columns:

  id      - ID of the request
  source  - IP, or hostname, which made the request.
  request - The HTTP request
  status  - The HTTP status-code returned
  size    - The size of the response served, in bytes.
  method  - The HTTP method invoked (GET, PUT, POST etc).
  referer - The HTTP referer (sic).
  agent   - The User-Agent which made the request.
  version - The HTTP version used by this client.
  date    - The date and time at which the request was made.
  label   - Any label applied when the logfile was read.
  user    - The remote (authenticated) user, if any.

Nun kann mit SQL zum Beispiel die Anzahl Logzeilen abgefragt werden:

# asql> SELECT COUNT(id) FROM logs                                                                                                            
11824

Im folgenden Beispiel wird abgefragt welche 10 IP Adressen am meisten Inhalte heruntergeladen haben und wieviele Bytes im Total:

# asql> SELECT source,SUM ( size ) AS Number FROM logs GROUP BY source ORDER BY Number DESC, source LIMIT 10                                  
xxx.xxx.144.25 27051285778
xxx.xxx.170.131 14517940587
xxx.xxx.191.155 13897162645
xxx.xxx.35.202 7229313024
xxx.xxx.208.198 6773282128
xxx.xxx.115.44 6044618675
xxx.xxx.160.156 5183653049
xxx.xxx.253.241 4906880739
xxx.xxx.7.52 4906749542
xxx.xxx.7.104 4906746880
asql> exit

Mit Hilfe des exit Kommandos wird asql wieder beendet. Mehr Informationen zu asql erhält man mit der --manual Option von asql.

 Permalink

ZFS-Statistiken anzeigen

Mit Hilfe von zfs-stats können auf einem FreeBSD System alle ZFS relevanten Informationen angezeigt werden. Im FreeBSD -Portbaum findet man zfs-stats unter sysutils/zfs-stats:

# cd /usr/ports/sysutils/zfs-stats && make install clean

Mit der -F Option werden die FreeBSD-Informationen angezeigt:

# zfs-stats -F
------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Oct 23 21:14:34 2010
------------------------------------------------------------------------
System Information:

        Kernel Version:                         900019 (osreldate)
        Hardware Platform:                      i386
        Processor Architecture:                 i386

FreeBSD 9.0-CURRENT #3: Thu Sep 2 13:27:05 CEST 2010 root
 9:14PM  up 40 mins, 2 users, load averages: 0.26, 0.06, 0.02

Verwendet man die -M Option so werden Informationen zum Arbeitsspeicher angezeigt:

# zfs-stats -M
------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Oct 23 21:16:30 2010
------------------------------------------------------------------------
System Memory Statistics:
        Physical Memory:                        1011.41M
        Kernel Memory:                          34.55M
        DATA:                           71.94%  24.86M
        TEXT:                           28.06%  9.70M
------------------------------------------------------------------------

Die ZFS und ZFS-Pool Versionen können mit der -p Option abgefragt werden:

# zfs-stats -p
------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Oct 23 21:17:47 2010
------------------------------------------------------------------------
ZFS pool information:
        Storage pool Version (spa):             28
        Filesystem Version (zpl):               5
------------------------------------------------------------------------

Alle ZFS relevanten sysctl-Variablen werden mit der -s Option angezeigt:

# zfs-stats -s
------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Oct 23 21:19:05 2010
------------------------------------------------------------------------
ZFS Tunable (sysctl):
        kern.maxusers=384
        vfs.zfs.l2c_only_size=0
        vfs.zfs.mfu_ghost_data_lsize=0
        vfs.zfs.mfu_ghost_metadata_lsize=8192
        vfs.zfs.mfu_ghost_size=8192
        vfs.zfs.mfu_data_lsize=0
        vfs.zfs.mfu_metadata_lsize=177664
        vfs.zfs.mfu_size=296448
        vfs.zfs.mru_ghost_data_lsize=0
        vfs.zfs.mru_ghost_metadata_lsize=39936
[...]

Weiter können folgende Statistiken abgefragt werden: ARC (-A Option), VDEV cache (-D Option) , L2 ARC (-L Option) und DMU zfetch (-Z Option):

# zfs-stats -ADLZ
------------------------------------------------------------------------
ZFS Subsystem Report                            Sat Oct 23 21:53:57 2010
------------------------------------------------------------------------
ARC Misc:
        Deleted:                                8
        Recycle Misses:                         0
        Mutex Misses:                           0
        Evict Skips:                            0

ARC Size:
        Current Size (arcsize):         0.20%   1.26M
        Target Size (Adaptive, c):      100.00% 640.00M
        Min Size (Hard Limit, c_min):   12.50%  80.00M
        Max Size (High Water, c_max):   ~8:1    640.00M

ARC Size Breakdown:
        Recently Used Cache Size (p):   50.02%  320.14M
        Freq. Used Cache Size (c-p):    49.98%  319.86M
[...]

Alle Informationen in einer Ausgabe werden mit der -a Option dargestellt:

# zfs-stats -a

Ruft man zfs-stats ohne Optionen auf, werden alle verfügbaren Optionen aufgelistet.

Related Entries:
ZFS-Installation mit Hilfe von mfsBSD
FreeBSD nur auf ZFS installieren
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
ZFS Dateisystemoptionen verwenden
 Permalink

Überprüfen ob eine PID-Datei noch gültig ist

Mit Hilfe von stalepid kann überprüft werden ob der Prozess, welcher in einer PID-Datei gespeichert ist, noch existiert. Gibt es den Prozess nicht mehr, wird die veraltete PID-Datei automatisch gelöscht. Im FreeBSD-Portbaum findet man stalepid unter sysutils/stalepid:

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

An stalepid wird nun die PID-Datei und der Prozessnamen übergeben, worauf stalepid überprüft ob der Prozess aus der PID-Datei noch existiert und allenfalls die PID-Datei löscht:

# stalepid /var/run/powerd.pid powerd

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

 Permalink

Musik auf der Kommandozeile abspielen

Möchte man auf der Kommandozeile Musik abspielen, kann dazu herrie verwendet werden. Im FreeBSD -Portbaum findet man herrie unter audio/herrie:

# cd /usr/ports/audio/herrie && make install clean

Um mit herrie Musik abzuspielen, wechselt man ins Verzeichnis, welches alle Audio-Dateien beinhaltet und ruft danach herrie auf:

# cd ~/music && herrie

Danach sieht man um unteren Teil von herrie die Audio-Dateien und alle Unterverzeichnisse. Möchte man ein Lied zur Wiedergabeliste hinzufügen so drückt man die a-Taste. Mit der x-Taste startet man das Abspielen der selektierten Lieder. Durch das Drücken der v-Taste stoppt man die Wiedergabe. Durch die y- und die v-Taste springt man ein Lied in der Wiedergabeliste rück- oder vorwärts. Möchte man herrie beenden, so drückt man die q-Taste.

Mehr Informationen und alle Tastenkombinationen von herrie findet man in der Manpage herrie(1). Danke Ed!

Comments (1)  Permalink

Kalender auf der Kommandozeile verwenden

Mit Hilfe von calendar lassen sich Termine auf der Kommandozeile anzeigen. Dabei werden immer die Einträge des aktuellen und des nächsten Tages angezeigt. Freitags werden auch die Einträge des Wochenendes ausgegeben. Standardmässig werden die Einträge aus ~/calendar genommen:

# cat ~/calendar
10/02   Fest bei mir zuhause
10/03   Aufräumen
10/07   DevSummit
10/08   DevSummit
10/09   EuroBSDCon
10/10   EuroBSDCon
# calendar
 2 Okt  Fest bei mir zuhause
 3 Okt  Aufräumen

Zuätzlich gibt es auf FreeBSD einige vorgefertigte calendar-Dateien. So sind zum Beispiel in calendar.computer Ereignisse aus der Computer-Geschichte eingetragen. Möchte man eine solche Datei mit calendar verwenden, so kann dazu die -f Option verwendet werden:

# ls /usr/share/calendar/
calendar.all          calendar.christian    calendar.dutch        calendar.german       calendar.hungarian    calendar.music        calendar.southafrica  calendar.world        de_DE.ISO8859-15@     hr_HR.ISO8859-2/      uk_UA.KOI8-U/
calendar.australia    calendar.computer     calendar.freebsd      calendar.history      calendar.judaic       calendar.newzealand   calendar.ukrainian    de_AT.ISO_8859-15/    fr_FR.ISO8859-1/      hu_HU.ISO8859-2/
calendar.birthday     calendar.croatian     calendar.french       calendar.holiday      calendar.lotr         calendar.russian      calendar.usholiday    de_DE.ISO8859-1/      fr_FR.ISO8859-15@     ru_RU.KOI8-R/
# calendar -f /usr/share/calendar/calendar.computer
 2 Okt  First robotics-based CAM, 1939

Auf FreeBSD ist calendar standardmässig im Basissystem vorhanden. Mehr Informationen zu calendar findet man in der Manpage calendar(1).

 Permalink

Warten bis ein Prozess beendet ist

Mit Hilfe von pwait kann gewartet werden bis sich ein Prozess beendet hat. Dazu wird die Prozess-ID an pwait übergeben:

# pwait <PID>

Durch die -v Option wird der Rückgabewert des beendeten Prozesses angezeigt.

# pwait -v 2151
2151: exited with status 0.

Auf FreeBSD ist pwait standardmässig im Basissystem vorhanden. Mehr Informationen zu pwait findet man in der Manpage pwait(1).

 Permalink
Prev Next71-80/521