Skip to content

Downloads zählen mit Apache

Bei freiesMagazin wollen wir natürlich auch wissen, wie oft eine neue Ausgabe jeden Monat heruntergeladen wird. Wir grübeln schon seit Jahren, wie wir aus den Apache-Log die richtigen Zahlen extrahieren können.

Bisher fuhren wir mit folgenden Modell ganz gut:

grep "GET $FILE .* 200 " /var/log/apache2/access.log | wc -l

„HTTP 200“ sagt aus, dass die Anfrage erfolgreich verlief (aber natürlich nichts darüber, ob der Download erfolgreich verlief). Letzten Monat hatten wir aber seltsamerweise einen recht hohen Peak mit über 13000 Download, den Monat davon waren es realistischere 8000.

Obige Methode hat uns dann fragen lassen, ob es nicht bessere wäre, die Gesamtdateigröße aller Downloads zu zählen und durch die Dateigröße zu dividieren. Zusätzlich hatten wir auch überlegt die „HTTP 206“-Einträge mit zu zählen. Dies ergibt für den letzten Monat eine realistischere Zahl von 6900 Downloads.

Ich habe dann noch einmal drüber nachgedacht, ob man nicht einfach über die IPs gehen kann:

grep "GET $FILE" /var/log/apache2/access.log | egrep " 200 | 206 " | awk '{ print $1 }' | uniq | wc -l

Dies liefert eine realistische Zahl von 7200 Downloads.

Hat jemand von Euch sonst noch Ideen, wie man „richtig“ die Downloads aus dem Apache-Log zählen kann?

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

anon am :

Wozu dieses tracking? Wozu überhaupt die Logs? Downloads sind doch zum herunterladen da!!1!
.

Dee am :

Wenn wir sehen, dass das Interesse am Magazin schwindet, fragen wir uns, ob und was wir falsch machen. Und wenn die Zahlen zu gering sind, stellen wir die Arbeit ein. Ohne Downloads, d.h. ohne Leser kann man das Magazin auch einstellen und die Zeit, die alle 20 Freiwilligen in das Projekt investieren, anderweitig sinnvoll einsetzen.

Privat bin ich z.B. an den Leserzahlen meines Blogs nicht interessiert und führe auch keinerlei Statistik über die Zugriffe. Ich habe auch kein Plug-in in der Richtung interessiert. Hier schreibe ich für mich. Das Magazin machen wir aber für ein bestimmtes Publikum. Und ohne Publikum wäre es nur unnötige Arbeit.

Phil am :

Ansonsten schaut Euch doch mal diese Tools an, die die Logs auswerten, wie es dort umgesetzt wurde. Da wird auch nach uniq ausgewertet.

Denny Schäfer am :

Hier wurden sich schon mal Gedanken zu diesen Thema gemacht.

http://www.deimeke.net/dirk/blog/index.php?/archives/2452-Hoererzahlen-bei-DeimHart-....html

Dirk Deimeke am :

@Dominik: Hilft es Dir, wenn ich Dir die Skripte schicke?

Ich werte alle 200er Return Codes als (Teil-)Downloads und schreibe die Resultate in eine sqlite-Datenbank.

Dee am :

Danke, das ist nicht nötig. Ein Skript zum Zählen haben wir schon. Es war nur die Frage, ob wir das nehmen oder einfach nur die Unique-IPs zählen.

Dirk Deimeke am :

Das ist keine gute Idee, da mehrere User, die über den gleichen Proxy kommen, nur ein Mal gezählt werden.

Dirk Deimeke am :

Nachtrag: Das ist kein ausschliessliches Problem von Firmenproxies. Ein grosser Teil des mobilen Internets wird über Proxies abgewickelt.

Dee am :

Ok, ich spezifiziere: die Unique-IPs, die nacheinander kommen. Also so, wie oben gegreppt. Sprich, wenn man an zwei Tagen auf der Seite vorbeischaut, dann wird es zweimal gezählt, weil dazwischen jemand anderes da war. Insgesamt ist die Anzahl damit aber immer noch höher als die Zahl Gesamtgröße/Dateigröße.

Dirk Deimeke am :

Hm, das heisst, wenn einer im Buero Bescheid sagt, dass es eine neue Ausgabe von freiesMagazin gibt, worauf drei Kollegen ueber den gleichen Proxy herunterladen, wuerde das nur ein Mal gezaehlt, Dieser Fall ist noch nicht einmal an den Haaren herbeigezogen.

Was ist die Motivation dahinter, die Ergebnissmenge durch das Aussortieren gleicher IPs einzuschraenken?

Dee am :

Die Motivation ist das, was alle Menschen abtreibt: Faulheit! ^^ - Nein, Einfachheit. Der Unterschied zwischen einem komplexen Skript, was die Dateigrößen addiert und dividiert und einer Zeile mit grep und awk sind für mich enorm und wesentlich einfacher.

Und wie geschrieben, schränkt die IP-Suche nicht ein, ganz im Gegenteil erhalte ich ja im Vergleich zur Dateigrößen-Zählung ein höheres Ergebnis. Die Frage ist wohl eher, wie man Downloads überhaupt definiert. Ist ein Klick ein Download? Oder müssen alle Bytes übertragen werden? Wahrscheinlich ist die Dateigrößenzählung immer noch die Sinnvollste.

Rein technisch würde mich natürlich interessieren, wie die ganzen Zeilen in den Apache-Log zustande kommen. Die 206 habe ich verstanden – und addiert man untereinander stehende IPs zusammen, kommt sogar meist die richtige Dateigröße bei raus. :)

Dirk Deimeke am :

Gut, das verstehe ich, wenngleich das Skript auch keine höhere Mathematik darstellt.

Letzten Endes bestimmst Du selber, wie genau bzw. ungenau Du die Anzahl an Downloads ermitteln möchtest. Eine gute Grössenordnung bekommst Du in jedem Fall auch mit Deiner Zeile (Hinweis am Rande: awk kann alles, was grep auch kann, grep ist also nicht nötig). Manuell zusammenzählen musst Du die Tagesergebnisse dann auch noch ...

Ich packe mein Skript mal bei mir ins Blog, dann kannst Du selber entscheiden, ob Du es nutzen möchtest oder nicht.

Saddy am :

Zu wenig Infos. Ein apache-Beispiel Log und ein Muster des traffic Log wäre sinnvoll.

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Formular-Optionen