Piwik zeigt keinen Report vom letzten Tag an



Nach einem Update auf Piwik 2.0.4 ist es bei einer Piwik-Installation passiert, dass für den letzten Tag keine Besucher bei einer einzelnen Webseite angezeigt wurden. Andere, aber kleinere weitere Webseiten am gleichen Piwik-Server, wurden normal angezeigt. Bei meiner Installation läuft jede Nacht ein Cronjob zur Archivierung der Logdaten, die Piwik Logdatei meldete keinen Fehler.

Testweise versuchte ich per Shell den Cronjob manuell nochmals abzurufen. Dabei arbeitete das Programm brav alle Seiten-IDs ab, nur bei der betreffenden Seite meldete mir das Archivierungsprogramm folgenden Fehler bei der Durchführung:

Got invalid response from API request: (…) This report has been reprocessed since your last click. To see this error less often, please increase the timeout value in seconds in Settings > General Settings (…)

Eine Änderung des Wertes unter „Einstellungen / Allgemeine Einstellungen / Berichte für heute (sowie jeden anderen Zeitraum, die den heutigen Tag beinhalten) höchstens so oft neu berechnen“ brachte auch kein anderes Ergebnis.

Lösung: Piwik Reports aus Logs neu erzeugen

Die Piwik Dokumentation beschreibt, wie man die Erstellung eines Reports anhand der originalen Logdateien neu forcieren kann. Ansonsten werden Reports nur einmal erstellt und dann in der Datenbank archiviert. Wenn man die Piwik Oberfläche besucht und sich die Statistik für den vorigen Tag (oder Woche, Monat ,….) ansieht, präsentiert einem Piwik einem die bereits bearbeiteten Daten direkt aus der Archivdatenbank.

Achtung: Um die Daten neu zu erstellen, wird Zugriff auf die historischen Logdaten benötigt. Dazu darf nicht die Funktion „Alte Besucher-Logs automatisch aus der Datenbank entfernen“ unter Einstellungen / Privatspäre beziehungsweise mit einem zu kurz eingestellten Löschungszeitrahmen aktiviert sein. Die Doku weißt ausdrücklich darauf hin, dass wenn man die alten Logs gelöscht hat nicht mit der Prozedur fortfahren soll, weil Teile der Piwik Daten für immer weg sein könnten.

Der empfohlene und von mir getestete Weg ist zuerst die existierenden Archivdaten bereinigen indem die zwei MySQL Tabellen  piwik_archive_* für den entsprechenden Monat (in meinem aktuellen Fall Juli) komplett gelöscht werden. Wenn ein größerer Zeitraum neu erzeugt werden soll, müssen dementsprechend auch die jeweils zwei weiteren Tabellen gelöscht werden.

Nach der Löschung loggt man sich entweder im Piwik ein (falls die Daten direkt beim Besuch der GUI erzeugt werden) oder startet über die Shell folgenden Befehl, wenn die Archivierung wie in meinem Fall über Cronjob passiert.

./console core:archive –force-all-websites –force-all-periods=315576000 –force-date-last-n=1000 –url=DEINE_PIWIK_URL

Damit werden alle Seiten-IDs neu durchgearbeitet und die Reports neu erstellt. Nachdem Piwik bei mir nach einer gewissen Zeit alle Daten ohne Fehler neu erstellt hatte, waren diese nach dem Einloggen im Piwik wieder sichtbar.

Was war der Fehler?

Mit Bestimmtheit kann ich nicht beurteilen, warum beim nächtlichen Durchlauf der Report für die eine Seite fehlerhaft oder gar nicht erstellt wurde. Dennoch habe ich vor dem Neuerstellen der Reports, die Laufzeit von der PHP- und FCGID-Umgebung erhöht, eventuell benötigte Piwik beim Berechnen zu Lange und überschritt eine Timeout-Grenze. Wer eine zu enge Memory_Limit Grenze bei PHP gesetzt hat, sollte diese auch versuchen zu erhöhen. Nicht vergessen, den Wert auch in der php.ini für CGI zu ändern, wenn über Cronjobs/Shell gearbeitet wird.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.