Michael Vogel: Logfile auf User-Agent analysieren

Moin!

So, mein ISP hat die Aenderungen gemacht, im Logfile steht jetzt zusaetzlich der User-Agent. (Das nennt man schnelle Reaktion!)
Wie werte ich das am Besten aus?

Mein ISP setzt Linux ein (2.0er Kernel) und ich hab'n Shell-Account und kann Cron-Jobs anstossen. Zur Zeit nutzt er fuer meine Seiten den Webalizer 0.98.

Ich wuerde dann gerne Statistiken der Zugriffe in Prozent der verschiedenen User-Agents haben.

  1. Hallo Michael

    Ich wuerde dann gerne Statistiken der Zugriffe in Prozent der verschiedenen User-Agents haben.

    Schau dir mal die Liste auf <../../tech.htm#a7> an, dort siehst du, wie sich diverse Browser "identifizieren".

    Bei den hier auf http://www.teamone.de/cgi-local/selfstats.pl ausgelesenen Ergebnissen liegen folgende Abfragen in Perl zugrunde (wenn irgendwas daran falsch ist, waere es ganz gut, wenn mich jemand korrigiert!):

    if($User =~ /Mozilla/3.0 (.*/) { $NS30++; }  
    if($User =~ /Mozilla/3.0.*[/) { $NS30++; }  
    if($User =~ /Mozilla/4.0.*[/) { $NS40++; }  
    if($User =~ /Mozilla/4.5.*[/) { $NS45++; }  
    if($User =~ /Mozilla/4.6.*[/) { $NS46++; }  
    if($User =~ /Mozilla/2.0.*MSIE 3/) { $IE30++; }  
    if($User =~ /Mozilla/4.0.*MSIE 4/) { $IE40++; }  
    if($User =~ /Mozilla/4.0.*MSIE 5/) { $IE50++; }  
    if($User =~ /Opera/) { $OP++; }

    Nimm einfach an, in $User sei jeweils eine Zeile aus dem Logfile gespeichert, und $NS30 usw. seien Zaehler fuer die einzelnen Browser.

    viele Gruesse
      Stefan Muenz

    1. Bei den hier auf http://www.teamone.de/cgi-local/selfstats.pl ausgelesenen Ergebnissen liegen folgende Abfragen in Perl zugrunde:
      if($User =~ /Mozilla/3.0 (.*/) { $NS30++; }  
      if($User =~ /Mozilla/3.0.*[/) { $NS30++; }  
      ...

      "elsif" wäre schneller und sicherer (bis ich den regexps ansehe, ob sie wirklich alle disjunkt sind ...).
      Gibt es auch einen else-Fall am Ende? (Wäre ein schöner Test, ob die Liste vollständig ist.)

      Nimm einfach an, in $User sei jeweils eine Zeile aus dem Logfile gespeichert ...

      Also den split () über die Logfile-Zeile würde ich schon machen - wer weiß, was für ein Zeug in der URL drin steht?

  2. Moin!

    So, mein ISP hat die Aenderungen gemacht, im Logfile steht jetzt zusaetzlich der User-Agent. (Das nennt man schnelle Reaktion!)
    Wie werte ich das am Besten aus?

    Mein ISP setzt Linux ein (2.0er Kernel) und ich hab'n Shell-Account und kann Cron-Jobs anstossen. Zur Zeit nutzt er fuer meine Seiten den Webalizer 0.98.

    Ich wuerde dann gerne Statistiken der Zugriffe in Prozent der verschiedenen User-Agents haben.

    Such doch mal nach Analog. Sollte auf www.freshmeat.net zu finden sein. Dann kannst du das Ding so einstellen, daß es aus dem Logfile alle 5 Minuten ne Statistik generiert, die du dann per Browser abrufen kannst. Du kannst auch das Logfile runterladen, und daheim auswerten. Oder du benutzt das CGI-Frontend zu Analog, und kannst dir die Datei ber CGI auswerten lassen.

    1. Such doch mal nach Analog. Sollte auf www.freshmeat.net zu finden sein. Dann kannst du das Ding so einstellen, daß es aus dem Logfile alle 5 Minuten ne Statistik generiert, die du dann per Browser abrufen kannst. Du kannst auch das Logfile runterladen, und daheim auswerten. Oder du benutzt das CGI-Frontend zu Analog, und kannst dir die Datei ber CGI auswerten lassen.

      Hallo,

      ja, analog ist ein mächtiges und kostenloses logfile-analyze-tool. Es kommt von http://www.statslab.cam.ac.uk/~sret1/ und liegt derzeit in version 3.32 vor.

      Das Programm selbst kann man allerdings natürlich nicht so einstellen, dass es zu bestimmten zeiten läuft - das macht man im betriebssystem (eben cron in unix-systemen). Und alle 5 minuten die gesamten logdateien neu zu analysieren würde ziemliche unnötige server-cpu-belastung verursachen - alle 24h einmal ist sicher empfehlenswerter. Du kannst es selbst per CGI-script nach bedarf aktualisieren lassen.

      ciao,
      robert