[[webdev:php:piwik]]

Piwik Artikel

Es sollte ein Podcast, der mit PHP generiert wird, getrackt werden. Es existiert keine Seite, wo man den Tracker per Javascript oder Bild einbinden könnte.

frei nach http://piwik.org/docs/tracking-api/#toc-piwiktracker-php-class-api

require_once "../piwik/libs/PiwikTracker/PiwikTracker.php";
PiwikTracker::$URL="http://example.com/piwik/"; // url der piwik installation
$t = new PiwikTracker( $idSite = 123456 ); // deine site-id
// optional
$t->setUrl( $url = 'http://example.com/blog/post/to-be-or-not-to-be.html' );
$t->doTrackPageView('to-be-or-not-to-be');

Die Piwik-Software habe ich auf einen anderen Server eingespielt. Muss sagen, das der Umzug der Software und Datenbank absolut null Probleme bereitete. Schöne neue Welt..

~~LINKBACK~~ ~~DISCUSSION~~

Wenn im Header schon ein DNT bzw x-do-not-track angegeben ist, sollte man es vllt. als Seitenbetreiber auch unterstützen. Für Piwik bekommt man ein Plugin der das Seitentracking deaktiviert -falls vorhanden. Ich bin gespannt wann es gebundelt mit Piwik ausgeliefert wird. Jedenfalls unterstütze ich es und habe es auch in den Datenschutzeinstellungen als weitere Option angegeben. Ob der eigene Browser einer der beiden genannten mitsendet kann man hier testen. Ich finde diese Spezifikation sehr sinnvoll und hoffe, das viele Seitenbetreiber dem nachkommen werden und sich als Standard durchsetzt bzw weiterentwickelt wird.

Links:

Mozilla Firefox 5 sendet DNT mit:

Array
(
    [Host] => 127.0.0.1:8080
    [User-Agent] => Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0
    [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [Accept-Language] => de-de,chrome://global/locale/intl.properties;q=0.5
    [Accept-Encoding] => gzip, deflate
    [Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
--> [DNT] => 1 <-- da isser
    [Connection] => keep-alive
)

~~LINKBACK~~ ~~DISCUSSION~~

In den Logdateien findet sich

... stderr: PHP message: Error in Piwik: Call to undefined method Piwik\\Menu\\MenuTop::add(), referer: ......

In meinem Fall war es das Plugin „PerformanceMonitor“, das den Fehler auslöste. Ich denke, das es noch nicht kompatibel mit der neuen Piwik Version ist. Das Plugin habe ich erstmal auskommentiert:

;Plugins[] = "PerformanceMonitor"

Weitere Hilfestellung findet sich hier:

https://github.com/piwik/piwik/issues/10876

~~LINKBACK~~ ~~DISCUSSION~~

Mod Evasive kann ein zusätzlicher Schutz sein wenn der Apache mit DoS Angriffen konfrontiert wird. Manchmal sperrt man auch gutartige Benutzer aus, gerade wenn sie requestlastige Webdienste aufrufen wie in diesem Fall das Piwik Dashboard. Betroffen war auch die Android App, die keine Daten mehr anzeigt dafür aber Netzwerkfehler. In den Log Dateien taucht mehrmals die eigene Ip Adresse auf:

[Sat Nov 11 17:17:25.611453 2014] [evasive20:error] [pid 12512:tid 139763923277568] [client 154.70.38.0:46393] client denied by server configuration: ..../piwik/index.php

Im Log Ordner von Mod Evasive (meist) /var/log/mod_evasive/ kann man sich auch finden:

$ /var/log/mod_evasive# ls
dos-154.70.38.0

Da die IP Adresse dynamisch vergeben wird, bringt es auch nicht viel, sie auf die Whitelist zu setzen. Bevor man auf die Idee kommt, das Modul wieder abzuschalten, kann man mit den Einstellungen experimentieren und versuchen DOSPageCount und DOSSiteCount herauf zu setzen:

<IfModule mod_evasive20.c>
    DOSHashTableSize    3097
    DOSPageCount        5
    DOSSiteCount        140
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
..
</IfModule>

Hilfreich bei den Einstellungen sind die Developer Tools in Chrome / Firefox, wenn man sich anschaut wie viele Requests abgefeuert werden auf die eigene Seite. Wenn zum Beispiel ein kleines Büro sich die öffentlich IP teilt und gleichzeitig auf das Dashboard zugreift sind die neuen Einstellungen nicht mehr gross genug ausgelegt. Wie man sieht kann das Modul Kopfzerbrechen bereiten.

~~LINKBACK~~ ~~DISCUSSION~~

Nach Umstellung der Piwik Archivierung (Ubuntu 14.04) auf ein Cronjob wurde nachm antriggern folgende Fehlermeldung present:

ERROR CoreConsole[2014-05-20 22:00:03] [2fbec] Got invalid response from API request: http://piwik.example.com/index.php?module=API&method=API.get&idSite=1&period=day&date=last2&format=php&token_auth=blablabblus&trigger=archivephp. Response was 'a:2:{s:6:"result";s:5:"error";s:7:"message";s:75:"Mysqli statement execute error : Prepared statement needs to be re-prepared";}'

Bug or not, ein Lösungsvorschlag das table_definition_cache hochzuschrauben (siehe Links) schaffte (mysql 5.1.73, php 5.3.2) Abhilfe und der Cronjob rattert durch:

table_definition_cache =  16384

Quellen:

~~LINKBACK~~ ~~DISCUSSION~~

Mir ist in den Piwik-Logs aufgefallen, dass nach ein paar Tagen keine Daten aus Owncloud empfangen wurden. Interessant wurde die Piwik-Integration in Owncloud (>=6)zb durch die Freigabe einer Gallery. Wie ich im Netz raus finden konnte liegt das an der CSP - der Content Security Policy was das Einschleusen von Scripten in Websites verhindern soll (XSS u.a.) und in Owncloud genutzt wird. In der config/config.sample.php findet man den Key custom-csp-policy der für die Piwik-Domain geändert und falls nicht in der config.php aufgeführt nachgetragen werden muss. In der Webkonsole von Firefox kann man nachprüfen ob die Policy greift.

Im Owncloud-Forum findet man einen ausführlichen Thread der Abhilfe schafft:

https://forum.owncloud.org/viewtopic.php?f=23&t=10500

~~LINKBACK~~ ~~DISCUSSION~~

Nach einem Update der Piwik-Version enthielten die Widgets Debugausgaben. Das Problem dieser Ausgaben ist auch das zum Beispiel die Android-App die Daten nicht mehr richtig Parsen kann (jedoch empfängt - was auch aus der Fehlermeldung hervorgeht) und es in der Anwendung zu Fehlern kommt und nix mehr angezeigt wird. In der Konfiguartion config/config.ini.php kann man die Logparameter einstellen und das ganze läuft auch wieder rund:

[log]
log_level = "INFO"
log_writers[] = "file"

Es funktioniert auch der Wert „NONE“, jedoch möchte ich natürlich wissen, was Piwik so treibt von daher schreibe ich es in eine Datei rein (statt es auf dem screen auszugeben), was im Key log_writers definiert wird. Ist kein logger_file_path angegeben wird tmp/logs verwendet.

Mehr Infos in der Dokumentation von Piwik:

http://developer.piwik.org/api-reference/Piwik/Log

~~LINKBACK~~ ~~DISCUSSION~~

Die Piwik-Installation läuft nun gut zwei Monate ohne grössere Schwierigkeiten. Allerdings ist mir aufgefallen (geoip plugin), das die USA als unknown Country gezählt werden - Aber, in der Weltkarte werden die USA angezeigt. :?: Gekümmert habe ich mich noch nicht darum.

~~LINKBACK~~ ~~DISCUSSION~~

~~DISCUSSION:off~~

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • webdev/php/piwik.txt
  • Zuletzt geändert: 2014/06/08 15:07
  • (Externe Bearbeitung)