Piwik verwalten

Piwik verwalten

Im Folgenden wird eine Aufstellung von Maßnahmen gegeben, die einen sinnvollen Einsatz von Piwik ermöglichen.

Kampagnen verwalten

Screenshot Piwik Kampagne

Mittels sogenannter Kampagnen bietet Piwik eine Möglichkeit, Besucher einer Werbemaßnahme zuzuordnen und so zu ermitteln, wie erfolgreich eine Werbemaßnahme war.

Zur Verwaltung von Kampagnen ist in Piwik selbst keine Pflege nötig. Man muss lediglich einen Parameter pk_campaign an die URL anfügen (erster Parameter mit ?, weitere Parameter mit & anfügen):

https://www.example.com/some/where/?pk_campaign=Newsletter-03-2016

Wenn ein Benutzer diese URL aufruft, dann legt Piwik unter Verweise/Kampagnen automatisch eine Kampagne Newsletter-03-2016 an und zählt die Zugriffe entsprechend. Analog kann man die URLs für weitere Werbemaßnahmen mit dem Parameter für Kampagnen erweitern, z. B. Online-Werbung.

Kampagnenparameter in Google Search Console verwalten

Piwik Kampagnen Parameter bei Google nicht zur Unterscheidung von Inhalten verwenden
pk_campaign einpflegen

URL-Parameter werden oft eingesetzt, um zwischen Seiteninhalten zu unterscheiden. Der Parameter pk_campaign hat jedoch keinerlei Einfluss auf Inhalte, die der Benutzer angezeigt bekommt.

Damit eine Suchmaschine wie Google nicht durcheinander kommt, kann man Google mitteilen, dass ein Parameter niemals Einfluss auf Inhalte haben wird. Hierzu kann man sich in der Google Search Console anmelden und unter Crawling/URL-Parameter angeben, dass pk_campaign keinen Einfluss auf Inhalte hat. Sofern Google den Parameter nicht schon gefunden hat, muss man ihn neu anlegen und dann auswählen: "Nein: Hat keinen Einfluss auf den Seiteninhalt".

Zusätzlich empfiehlt es sich, den Suchmaschinen ein Canonical-Metatag anzubieten, damit Kampagnenparameter im Idealfall nicht in Suchergebnissen Verwendung finden. Und, damit die Suchmaschine die URL-Variante mit Kampagnenparameter der URL-Variante ohne Kampagnenparameter zuschlägt (Vermeidung von duplicate content).

Github-Seiten mit Piwik tracken

Mit etwas Vorwissen lassen sich GitHub-Seiten mit Piwik tracken, sofern die Inhalte in Markdown erstellt werden können. Dies ist bei Issues und bei .md-Dateien im Quellcode der Fall. Bei Markdown-Inhalten lassen sich Bilder einfügen, respektive auch Zählpixelbilder, respektive auch das Zählpixel-Bild von Piwik.

Jedoch hält GitHub Bilder mittels Proxy im eigenen Cache vor und liefert diese selbst an Benutzer aus, um gemischte Inhalte im Zusammenspiel mit HTTPS zu vermeiden. Die Auslieferung gecachter Inhalte durch GitHub führt zunächst dazu, dass ein Besucher auf einer GitHub-Seite eben keinen Request gegen die Piwik-Instanz macht und Piwik somit keine Zählung vornehmen kann.

Jedoch lässt sich das Caching durch GitHub vermeiden, wenn folgende Voraussetzungen erfüllt sind:

  • Der Header Cache-Control: no-cache muss gesetzt sein und
  • Einer der Header Expires, Last-Modified oder Etag muss gesetzt sein

Bezüglich Piwik lässt sich dies mittels Apache-Konfiguration für das Zählpixel wie folgt umsetzen:

<Files ~ "^piwik\.php$">
    <IfModule mod_headers.c>
        Header set Cache-Control "no-cache"
    </IfModule>
    <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresByType image/gif "access plus 1 second"
        ExpiresByType text/html "access plus 1 second"
    </IfModule>
</Files>

Wenn alles klappt, erhält man die geforderten Header:

curl -I https://piwik.example.com/piwik.php?idsite=9

[...]
Cache-Control: no-cache
Expires: Wed, 27 Jan 2016 10:33:01 GMT
[...]

Anschließend kann man ein Zählpixel-Bild in den Markdown Code einfügen:

![Piwik](https://piwik.example.com/piwik.php?idsite=9&rec=1&url=https://github.com/ghuser/ghproject/issues/11)

Wobei

  • idsite die bei Piwik-Hinterlegte Site-ID aus dem Tracking-Code ist
  • rec das Tracking aktiviert
  • url die URL der GitHub-Seite ist (in diesem Fall die Issue 11)

Anschließend scheint jeder Request vom Proxy tatsächlich gegen Piwik geschickt zu werden. Allerdings geht einiges an Information verloren, denn die Requests kommen eben nur vom Proxy und nicht vom Seitenbesucher.

Rückwirkende Archivierung

Mittels rückwirkender Archivierung können alte Logs nochmalig von Piwik verarbeitet werden. Die Berichte werden hierbei für noch vorhandene Log-Daten an den aktuellen Softwarestand und die aktuelle Konfiguration (z. B. hinterlegte Kampagnen) angepasst.

Die rückwirkende Archivierung sollte allerdings nur durchgeführt werden, wenn alle die Log-Daten noch in der Datenbank vorhanden sind. Sollte dies nicht der Fall sein, z. B. weil diese zwischenzeitlich gelöscht wurden, dann sollte man auf gar keinen Fall eine rückwirkende Archivierung durchführen, denn diese würde zu fehlenden Zeiträumen in den bereits vorhandenen Berichten führen.

Die rückwirkende Archivierung über alle Seiten und über den Zeitraum der letzten 10 Jahre lässt sich erreichen mit dem Befehl

./console core:archive --force-all-websites --force-all-periods=315576000 --force-date-last-n=1000 --url=https://piwik.example.com

Städtenamen anzeigen mit PHP5-PECL-Modul

Installation:

sudo apt-get install geoip-database-contrib php5-geoip
cd /var/lib/geoip-database-contrib
ln -s GeoLiteCity.dat GeoIPCity.dat
ln -s GeoLiteCityv6.dat GeoIPCityv6.dat

Im Apache-vHost:

php_admin_value open_basedir "/path/to/piwik-www:/var/lib/geoip-database-contrib/"
php_admin_value geoip.custom_directory "/var/lib/geoip-database-contrib"

In /etc/php5/cli/conf.d/30-geo-ip.ini:

geoip.custom_directory=/usr/share/GeoIP/

Der abweichende Pfad kommt zustande, weil die Symlinks in /usr/share/GeoIP/ teilweise auf Dateien in /etc/alternatives verweisen und dieses Verzeichnis aus Sicherheitsgründen nicht in open_basedir verwendet werden sollte.

In Piwik unter Administration/Standorterkennung "GeoIP (PECL)" auswählen.

Die GeoIP-Datenbank wird über das Paket geoip-database-contrib mittels Cron-Job in /etc/cron.d/geoip-database-crontrib laufend aktualisiert. Diesbezüglich ist daher keine weitere Konfiguration zur Aktualisierung der Datenbank in Piwik notwendig.

Das Paket geoip-database-contrib verwendet Datenbanken der Firma MaxMind, welche folgende Lizenzbedingungen zugrunde legt: http://dev.maxmind.com/geoip/geoip2/geolite2/