Thread Daten aus Server-Logfile erheben (Common Log Format) mit Suchmuster (9 answers)
Opened by mojo at 2008-10-30 00:01

mojo
 2008-10-30 00:01
#115842 #115842
User since
2008-10-29
4 Artikel
BenutzerIn
[default_avatar]
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
2
3
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)"
192.168.0.131 - - [28/Oct/2008:11:10:28 +0100] "POST http://mail.google.com/mail/channel/bind?at=xn3j35vkipm3ag8wbq29v4hr0ebgm1&VER=6&it=7200021&SID=7D0F626A0A21187&RID=31563&zx=ohytef6xzilb&t=1 HTTP/1.1" 200 26 "http://mail.google.com/mail/?ui=2&view=js&name=js&ver=GikK_XiN2lg&am=X_E4tcT3MCGpBf3gi728Yw" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; de-de) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1"
192.168.0.129 - - [28/Oct/2008:11:10:47 +0100] "POST http://207.46.109.80/gateway/gateway.dll?Action=poll&SessionID=579256175.2115166193 HTTP/1.0" 200 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; Windows Live Messenger 8.5.1302)"


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

View full thread Daten aus Server-Logfile erheben (Common Log Format) mit Suchmuster