Meik: Serverlogfile auslesen

hallo,

ich habe ein grooooooooooooosses Problem. Ich habe eine Logfile, die ich auslesen möchte. Kleiner auszug daraus:

#Software: Microsoft Internet Information Services 5.0
#Version: 1.0
#Date: 2002-10-01 00:06:25
#Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)
2002-10-01 00:06:25 - OutboundConnectionResponse SMTPSVC1 HOLBORN1 - 25 - - 421+Server+too+busy. 0 0 20 0 31 SMTP - - - -
2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 EHLO - +blackice2.blackice.com 250 0 299 27 0 SMTP - - - -
2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 x-link2state - +LAST+CHUNK={0000006a}+MULTI+(5)+({00000051}+DIGEST_QUERY+7f3d5026818051419c665280fc201492+6d7d9f9299dbda2c2eaa5abefe40ae24++)++ 200 0 68 140 0 SMTP - - - -
2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 MAIL - +FROM:broadcast@blackice.sendfax.com 250 0 55 42 0 SMTP - - - -
2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 RCPT - +TO:scherrer@bluesite.de 250 0 33 30 0 SMTP - - - -
2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 xexch50 - +1020+2 354 0 22 14 0 SMTP - - - -
2002-10-01 00:12:46 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 DATA - +BLACKICE28s4KWiGtXs00000145@blackice2.blackice.com 250 0 90 15879 344 SMTP - - - -
2002-10-01 00:12:46 204.249.218.98 blackice2.blackice.com SMTPSVC1 HOLBORN1 212.86.195.208 0 QUIT - blackice2.blackice.com 0 1547 68 4 0 SMTP - - - -

Jetzt ist meine Frage wie ich es schaffe die Daten zu analysieren. Z.B. wer wann wieviel an wen daten gesendet hat. Bitte helft mir - ich sitze schon drei tage an diesem problem!
Gruss
Meik

  1. Hi

    #Date: 2002-10-01 00:06:25
    #Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)

    was fällt dir an diesen Zeilen auf?
    #Fields: da stehen mit leerzeichen getrennt die Feldnamen drin, denen dann in den nachfolgenden Zeilen mit leerzeichen getrennte Werte folgen.
    z.b.:

    2002-10-01 00:06:25 - OutboundConnectionResponse SMTPSVC1 HOLBORN1 - 25 - - 421+Server+too+busy. 0 0 20 0 31 SMTP - - - -
    2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com

    ... steht doch alles drin.. du mußt die Datei mit der dir beliebtesten Sprache einlesen und zeilenweise auswerten. Wie du die Daten behandelst, also was du wissen willst... da kann ich dir nicht reinreden.

    Übrigens gibt es bereits entsprechende Tools, welche solche und andere Logs grafisch visualisieren können.

    Gruß, Frank

    1. Hi

      #Date: 2002-10-01 00:06:25
      #Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)

      was fällt dir an diesen Zeilen auf?
      #Fields: da stehen mit leerzeichen getrennt die Feldnamen drin, denen dann in den nachfolgenden Zeilen mit leerzeichen getrennte Werte folgen.
      z.b.:

      2002-10-01 00:06:25 - OutboundConnectionResponse SMTPSVC1 HOLBORN1 - 25 - - 421+Server+too+busy. 0 0 20 0 31 SMTP - - - -
      2002-10-01 00:12:45 204.249.218.98 blackice2.blackice.com

      ... steht doch alles drin.. du mußt die Datei mit der dir beliebtesten Sprache einlesen und zeilenweise auswerten. Wie du die Daten behandelst, also was du wissen willst... da kann ich dir nicht reinreden.

      Übrigens gibt es bereits entsprechende Tools, welche solche und andere Logs grafisch visualisieren können.

      Gruß, Frank

      danke Dir, welche tools gibt es denn?
      Meik

      1. danke Dir, welche tools gibt es denn?
        Meik

        Hi nochmal,

        sorry, da fallen mir gerade keine konkreten Namen ein. Aber von 1&1 gab es mal Software zum Auswerten von Logfiles im Paket dazu.

        Ich kann mich noch dunkel daran erinnern, dass es da sowohl Freeware-Versionen gab, als auch richtig teure.

        ich bin mir sicher, ein paar leute hier können dir da weiterhelfen.

        oder mal mit Google suchen?

        Gruß, Frank

  2. Hi Meik,

    #Software: Microsoft Internet Information Services 5.0

    herrliches Beinkleid.

    #Fields: date time c-ip cs-username s-sitename s-computername s-ip
    s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status
    sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie)
    cs(Referer)

    Eieiei. Was machen denn Felder wie "Win32-Status" in einem HTTP-Log?

    Ein großer Teil der aufgelisteten Informationen hat allerdings zumindest eine vage Ähnlichkeit mit existierenden HTTP-Feldern. ;-)

    Der Weg, den zu gehen ich Dir empfehlen würde, besteht _nicht_ darin, ein eigenes Auswerteprogramm zu schreiben. Mit Webalizer und Konsorten konkurrieren zu wollen, halte ich für Zeitverschwendung - sofern Du keinen hochgradig wichtigen Grund dafür hast, etwas berechnen zu wollen, das _keines_ der gängigen Tools kann.
    Dazu müßtest Du uns allerdings _exakt_ beschreiben können, _was_ Du eigentlich berechnen möchtest. Ohne Aufgabenstellung kein brauchbarer Lösungsansatz.

    Ich empfehle dennoch prophylaktisch,

    • entweder ein Tool für Dein Format zu finden
    • oder Dein Format den Anforderungen eines guten Tools anzupassen.
      Beides erfordert das Verständnis der Definitionsmöglichkeiten für Log-Formate in Deinem M$-IIS.

    Ist das Dein eigener Server? Kannst und darfst Du dessen Konfiguration lesen bzw. ändern?
    Lesen würde Dir ggf. den Namen des verwendeten Formates liefern - der wiederum wäre ein hervorragender Suchmaschinen-Begriff, um Tools zu finden, die genau dieses Format lesen können.
    Ändern wäre noch besser - möglicherweise kannst Du statt dieses M$-Gruselwusel auch ein offenes Standardformat wie CLF erzeugen und hast dann Tools ohne Ende für die Auswertung.

    Falls alle Stricke reißen, bliebe Dir noch, einen Zeilenkonverter zu schreiben. Das ist ganz einfach, wenn Du das Zeilenformat verstanden hast.
    Offensichtlich sind diese Zeilen im Wesentlichen whitespace-separiert - mit "split()" oder nur unwesentlich mehr mehr an Intelligenz könntest Du eine Zeile in ihre Felder zerschlagen und anschließend in CLF etc. in eine andere Datei schreiben.
    Möglicherweise mußt Du dabei minimale Umcodierungen vornehmen - in Deinem Beispiel sehen bestimmte "+"-zeichen beispielsweise so aus, als ob sie eigentlich Leerzeichen codieren sollen (was Dir die Arbeit beim Einlesen übrigens erleichtert).
    Über das Ergebnis läßt Du dann den Webalizer drüber laufen, und fertig ist die Laube. Vermute ich jedenfalls - bis zum Beweis des Gegenteils.

    Viele Grüße
          Michael