Thread Daten aus Server-Logfile erheben (Common Log Format) mit Suchmuster
(9 answers)
Opened by mojo at 2008-10-30 00:01
Hallo werte Community,
ich möchte ein Perl-Skript erstellen, welches mir aus einer Logdatei eines Servers(Proxy) die übertragene Datenmenge jeder geloggten IP-Adresse an einem bestimmten Tag (24h) herauszieht, die Datenmengen jeder IP aufaddiert und anschließend eine Art Statistik ausgibt, sortiert nach IP. z.B. so: IP: 192.168.0.178 Byte: 145552 IP: 192.168.0.211 Byte: 12121212 IP: 192.168.0.122 Byte: 999988 etc. Die Logdatei ist im Common Log Format. Also nach diesem Schema: 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 mich interessieren die beiden fettgedruckten Einträge (IP und Bytes) Auszug: Code: (dl
)
1 192.168.0.1 - - [28/Oct/2008:11:10:27 +0100] "GET http://www.google.com/search?hl=de&lr=&client=iceweasel-a&rls=org.debian:de:unofficial&ie=UTF-8&oe=UTF-8&q=lpx+formfaktor+design+jpg&start=30&sa=N HTTP/1.1" 200 6199 "http://www.google.com/search?hl=de&lr=&client=iceweasel-a&rls=org.debian:de:unofficial&ie=UTF-8&oe=UTF-8&q=lpx+formfaktor+design+jpg&start=20&sa=N" "Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.8.1.16) Gecko/20080702 Iceweasel/2.0.0.16 (Debian-2.0.0.16-0etch1)" Ein entsprechendes Suchmuster habe ich mit bereits erstellt, dieses funktioniert auch. Mit einer Schleife habe ich IP und Bytes in Skalare einlesen lassen und kann diese ausgeben lassen, so wie in der o.g. Liste. Mir ist klar, das dies nicht reicht. Ich müsste alle IPs und dazugehörige Datenmengen via Hash oder Array(s) ablegen und bei immer wieder auftauchenden IPs die Bytes aufaddieren lassen. Vorher müsste geprüft werden, ob die IP bereits erfasst wurde und ob überhaupt Daten übertragen wurden. Da es nicht sehr viele zu erfassende IPs sind, sollte am Ende eine recht übersichtliche Auswertung herauskommen. Einige (vielleicht auch viele :) ) mögen die Lösung dieses Problems vielleicht als Pillepalle empfinden, ich jedoch wäre schon für die ein oder andere Anregung hierzu sehr dankbar. Wie würdet Ihr (schrittweise) herangehen ? Grüße |