Apache Logdateien auf der Kommandozeile auswerten
Mit Hilfe von snowlog können Zugriffslogdateien des Apache Webservers auf der Kommandozeile ausgewertet werden. Im FreeBSD Portbaum findet man snowlog unter sysutils/snowlog:
# cd /usr/ports/sysutils/snowlog && make install clean
Damit eine Logdatei ausgewertet werden kann, muss zuerst in der httpd.conf ein neues Logformat definiert und eine zusätzliche Logdatei konfiguriert werden. Für eine Standard-Apache 2 Konfiguration fügt man folgende zwei Zeilen zum Beispiel in eine vhost Konfiguration in /usr/local/etc/apache2/httpd.conf ein:
LogFormat "%a\t%l\t%u\t%{%s}t\t%r\t%>s\t%X\t%{Content-Type}o\t%b\t%{Referer}i\t%{User-Agent}i\t%V\t%{LogHint}e" parsable CustomLog /var/log/httpd-access-parsable-vhost.log parsable
Danach muss die Konfiguration neu eingelesen werden:
# /usr/local/etc/rc.d/apache2 configtest Performing sanity check on apache2 configuration: Syntax OK # /usr/local/etc/rc.d/apache2 graceful
Mit der -f Option kann snowlog die Logdatei übergeben werden. Die in der Logdatei enthaltenen Anfragen werden nun nach IP-Adresse sortiert. Mit der Pfeil nach unten und der Pfeil nach oben Taste kann durch die einzelnen Anfragen navigiert werden. Dabei werden im unteren Teil des Terminals verschiedene Informationen zur Anfrage angezeigt:
# snowlog -f /var/log/httpd-access-parsable-vhost.log * Snowlog 1.1.1 xx.xx.102.187 - / 304 /files/images/blog/kde4.png 200 / 200 /links/ 200 /themes/2-cols/buttons/rss.png 200 /themes/chrueterng/buttons/rss.png 200 /files/images/chrueterteeBSD_hellgruen.png 200 /links/maintainer/ 200 /freebsd/ 200 xx.xx.144.157 http://www.google.com/reader/view/ /files/images/blog/kde4_thumb.png 200 xx.xx.231.88 Google: freebsd dbus_enable xorg 2009 /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html 200 /themes/chrueterng/css/mobile.css 200 /themes/chrueterng/css/main_chrueter.css 200 /favicon.ico 200 //themes/chrueterng/buttons/freebsd.png 200 //themes/chrueterng/buttons/chruetertee.png 200 //themes/chrueterng/buttons/rss.png 200 /themes/chrueterng/buttons/comments.png 200 /files/images/logo.jpg 200 //themes/chrueterng/buttons/xhtml10.png 200 /dynimages/gravatar/5a3fde99fe127a44bec6d05cb9190975?gravatar_id=5edbb08fd0cd2ea894f67f801725b4c6&border=aaaaaa&rating=X&size=40 200 /dynimages/gravatar/2b2e73a0b373fd724b7d9d726b4f052f?gravatar_id=a66a582a1fcacd1032b43ad670088e24&border=aaaaaa&rating=X&size=40 200 /blog/freebsd/ 200 /files/images/blog/kde4_thumb.png 200 /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html 304 ---------------------------------------------------------------------------------------------------------------------------------------------- Line 423/646 GET /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html 200 Sat Feb 7 16:20:09 2009 text/html, 5 KB Firefox/3.0.6 (Windows) www.chruetertee.ch http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Aen-GB%3Aofficial&hs=gs9&q=freebsd+dbus_enable+xorg+2009&btnG=Suche&meta= ---------------------------------------------------------------------------------------------------------------------------------------------- 557 requests from 89 hosts (11.16 MB). (H)elp.
In der Datei ~/.snowlog/filters können verschiedene Filter definiert werden. Der Name des Filters wird dabei in eckigen Klammern angegeben. Folgendes Beispiel definiert einen Filter, der alle Anfragen bis auf Anfragen von XML-Dateien anzeigt und einen weiteren Filter, der alle Anfragen anzeigt, welche den HTTP-Statuscode 404 hatten. Drückt man nun in snowlog die Taste f, werden alle Filter angezeigt. Durch Auswählen der entsprechenden Filternummer wird der Filter angewendet:
[without RSS feeds] request !xml [404] httpstatus =404
Befinden sich zum Beispiel Refferer-Spamer unter den Anfragen, navigiert man mit den Pfeiltasten zu der entsprechenden Anfrage und drückt die s-Taste. Dadurch werden alle Anfragen der Absender-IP-Adresse und des Refferers nicht mehr angezeigt. Durch das Drücken der q Taste verlässt man snowlog wieder. Mehr Informationen zu snowlog und den Filtermöglichkeiten findet man in der Manpage snowlog(1).