S9Y: Wieviele Subscriber hab' ich eigentlich?
Ich bin Neugierig. Es liegt wohl in der Natur des Menschen wenn man Selbstbestätigung sucht. Neben der Auswertung der Lesezugriffe auf die Artikel interessiert mich deswegen auch, wieviele Leser mein Blog für so interessant halten, dass sie es in einem RSS Reader aufnehmen.
Da ich die Blog Software (Serendipity) selbst betreibe und keinen Feed Management Service wie Feedburner für die Verwaltung von RSS und Atom Abonomenten verwende muss ich mir selbst helfen. In meinen Fall höchst ineffiziente Unix Befehle.
Ich begnüge mich mit dem einfachen Ansatz: innerhalb eines Tages sind alle Zugriffe von der selben IP auf den selben XML Feed ein Subscriber. Das ist nicht ganz exakt, da unter Umständen mehrere Leser hinter einer IP sitzen oder aber einzelne Leser zwei oder mehr IP-Addressen am Tag haben.
Ich habs mir mal einfach gemacht und gehe davon aus, dass die beiden Trends sich gegenseitig aufheben. Wichtig ist nur, dass man nicht mehr als einen Tag betrachtet. Daneben gibt es noch Subscriber die ich so nicht erwische, weil die etwa Bloglines oder vergleichbares nutzen. Dies bekomme ich dann über die Referer mit.
Folgender Befehl sucht alle Zugriffe auf RSS und Atom Files zusammen, und gibt davon die IP Addresse, das Datum und die zugegriffene Addresse aus. Ich gehe hier von Apache Logfiles aus, die bei einer S9Y Installation mit folgendem Format geschrieben werden:
84.163.26.152 - - [11/Sep/2005:03:38:23 +0200] "GET /rss.php?version=2.0 HTTP/1.1" 200 45677 "-" "Mozilla/5.0 (Sage)"
Folgender Befehl:
# egrep '(GET /feeds|GET /rss.php)' /var/log/httpd/itblog.eckenfels.net-access_log | awk -F'[ :]' '{print $1" "$4" "$10}' | sort | uniq -c > /tmp/blog.log
Erzeugt daraus Zeilen der Art:
10 84.163.26.152 [11/Sep/2005 /rss.php?version=2.0
Damit erhalte ich dann eine Zeile pro IP und Tag und Feed. In der ersten Spalte zusätzlich die Anzahl der gleichartigen Zugriffe innerhalb des jeweiligen Tages (im Beispiel sind es 10). Ich entferne daraus alle Zeilen bei der nur ein Zugriff von einer IP pro Tag erfolgte (das sind vermutlich Bots und RSS Scans):
# egrep -v "^ +1 " /tmp/blog.log > /tmp/blog-filtered.log
# wc -l /tmp/blog.log /tmp/blog-filtered.log
9348 /tmp/blog.log
5879 /tmp/blog-filtered.log
Und dann kann man das ganze nach Tagen analysieren. Auch dies geht noch mit Umsortierung und Spalten-Auswahl mittels awk, ich habe es mir jedoch einfach gemacht. (Nicht immer sind Algorithmen mit quadratischer Laufzeit schlecht, besonders dann nicht wenn der Entwickler mehr Zeit braucht als das Programm.)
# for i in 01 02 03 04 05 06 07 08 09 10;
> do echo $i/Sep `grep $i/Sep/2005 /tmp/blog-filtered.log | wc -l`;
> done
01/Sep 61
02/Sep 40
03/Sep 52
04/Sep 38
05/Sep 50
06/Sep 38
07/Sep 40
08/Sep 43
09/Sep 39
10/Sep 43
Damit komme ich bei mir auf 40-60 Subscriber pro Tag. Eventuell kann man das ganze noch in schicke Trend Grafiken verpacken. Mit ein wenig Perl und assoziativen Arrays sollte das einfacher sein als mit Shell Scripten. Weitere Auswertungen sind z.B. die Überwachung von RSS-Readern die es mit dem Polling übertreiben. Meine Top-3 Poller Gestern:
grep 10/Sep /tmp/blog-filtered.log | sort -n | tail -3
20 64.78.155.100 [10/Sep/2005 /feeds/index.rss2
24 81.169.156.174 [10/Sep/2005 /rss.php?version=2.0
39 84.163.189.82 [10/Sep/2005 /rss.php?version=1.0
Comments
Display comments as Linear | Threaded
Fred on :
Bernd Eckenfels on :