Der ein oder andere hat ja mitbekommen, dass es den
Click! Clack! Hack! Podcast gibt. Unbedingt abonieren, wenn ihr das noch nicht gemacht habt.
Wenn man podcastet will man natürlich auch wissen, ob und wie oft man gehört wird.
Nun gibt es die Möglichkeit Wordpress oder ähnliche CMS zu verwenden die einem in Verbindung mit Podlove-Plugins alles fertig zur Verfügung stellen.
Naja - wer die Nerdbude kennt, dem ist klar, dass das nicht in Frage kommt.
(Podlove ist natürlich trotzdem unterstützenswert - keine Frage)
Ich habe auf Github ein
PODCAST REPO begonnen.
Dort findet sich alles was man zum DIY Podcasten braucht.
Unteranderem auch eine Möglichkeit Statistiken zu bekommen.
Übersicht
Um Statistiken (Downloads, Player, etc.) von seinem Podcast zu bekommen, benutzen Wordpress und Co. Datenbanken.
Kann man machen. Muss man aber nicht. Ich will hier eigentlich alles so klein halten wie möglich, also kein Wordpress und keine DB.
Was also steht zur Verfügung um an Statistiken zu kommen?
Wenn der Webspace-Provider schon Logs schreibt, dann nutzen wir die doch auch.
(Vorab: Die IP-Adressen werden anonymisiert.)
Zusätzlich braucht es für Visualisierung noch separate Software in Form von GoAccess.
Log-Files
Der Provider muss, dank Gesetzeslage, Access-Logs schreiben.
In diesen Logs befinden sich natürlich auch die Zugriffe auf die einzelnen Podcast-Episoden.
Man muss sie nur filtern.
So sieht ein Entry im Access-Log aus den man haben will:
anon - - [04/Mar/2021:23:23:00 +0100] "GET /podcast/audio/CCH_001.mp3 HTTP/2.0" 200 11376985 "-" "Pocket Casts"
Der Aufbau:
[IP] - - [DATE:TIME] [FILE] [HTTP CODE] [FILESIZE] [CLIENT]
Der Aufbau wird später noch wichtig zu Analyse.
Nun befinden sich im Logfile aber auch noch andere Zugriffe die für den Podcast nicht relevant sind.
Dazu hab ich ein kleines Shell script im Repository, dass die Logfile aufsplittet.
Zuerst werden nur die Einträge rausgefiltert die sich auf des Verzeichnis mit den Episoden beziehen:
BASH
Hier werden per grep alle Einträge die "/podcast/audio" enthalten, aus der Logfile in eine temporäre filtered.log geschrieben.
Dadurch bekommen wir alle Einträge die sich auf die Episoden beziehen und werfen den Rest weg.
Danach wird nach Episoden gefiltert, sprich alle Einträge für jede einzelne Episode.
BASH
Hier holt grep die Lines aus der filtered.log die, die Episode enthält und schreibt sie in eine neue temporäre Log-File die episodenspeziefisch ist (f000.log).
Das wird nun für jede Episode gemacht, so das man einen Log Katalog bekommt mit allen Episoden (f000.log, f001.log usw.).
Weiter gehts mit den Downloads.
BASH
Hier greift sich grep alle Lines mit dem HTTP Code 200 (für Download) und die komplette Dateigröße in Byte (233223) aus dem File "f000.log" und schreibt sie wiederum in die temoräre "fs000.log"
Damit bekommen wir nur die Einträge für abgeschlossene Downloads.
Nun wird der Inhalt der temporären "fs000.log" an die episode0.log angefügt:
BASH
Cat liest den Inhalt aus "fs000.log" und "episodeo.log" und schreibt beide Inhalte in "episode0.log". So bekommt man die gesamten Log Einträge seit anbeginn.
Zum Schluss fügen wir noch alle verfügbaren Episoden-Logs zu einem Master zusammen:
BASH
Hier auch wieder alle temporären Episoden-Logs (fs000.log, fs001.log etc) werden in eine temporäre Master-Log-File geschrieben (fsmaster.log)
und anschliesend in die final_master.log geschrieben, so das man eine Log-File hat in der alle Episoden-Downloads drin sind.
Anschließend werden noch die temporären log-files gelöscht, da wir die nicht mehr brauchen.
Wem das alles zu viel Aufwand ist, benutzt die "sortlog.sh" im Repository.
An dieser Stelle sind die Log-Files fertig.
Dashboard
Nun sehen Statistiken besser aus, wenn man sie in einem schönen Dashboard hat.
Es gibt Möglichkeiten sich das ganze mit Grafana und ähnlichen Tools darstellen zu lassen, allerdings hängt auch auch eine DB dran und das ist für meinen kleinen Podcast mit Kanonen auf Spatzen geschossen.
Deswegen bemühen wir ein Tool namens
"GoAccess" - ein kleiner feiner Log-File-Viewer der vorrangig im Terminal läuft aber auch die Möglichkeit eines HTML-Dashboards zur Verfügung stellt.
Damit GoAccess mit den Log-Files umgehen kann, müssen Parameter mitgegeben werden. In meinem Fall (Beispiel siehe oben) sehe das so aus:
BASH
Das startet GoAccess im Terminal mit der master.log.
Das HTML Dashboard lässt sich mit den folgenden Parametern starten:
BASH
Nun sieht man im Terminal, dass ein kleiner Dashboard-Server gestartet wird.
Unter: /home/ph_0x17/dashboard.html ist das Dashboard per Browser erreichbar.
Taddaaaa! Statistiken!
Viel Spaß damit.