Webserver-Analyse mit Piwik

Piwik-Logo

Ein recht vielversprechendes Projekt erscheint Piwik wenn es um die Webserver-Analyse geht.

Dabei werden nicht, wie bei AWStats die Logfiles des Webservers selbst zu Analysezwecken herangezogen. Piwik geht einen anderen Weg. Über eine eingebettete JavaScript-Code werden beim Besuch unserer Seiten Informationen in einer mySQL-Datenbank hinterlegt, die dann später für die Detailrecherche herangezogen werden.

Recht aufschlußreich ist dabei diese Piwik Präsentation von Matthieu Aubry.

Nachfolgend wird die Installation von Piwik unter CentOS 6.x beschrieben.

Das aktuelle Programmpaket holen wir uns am einfachsten von der Projektseite wie wget

# wget http://piwik.org/last.zip

Den Inhalt dieses Archives legen wir in unser altbekannten bevorzugten Platz ab. Dazu legen wir uns das entsprechende Verzeichnis an.

# mkdir /usr/share/piwik/
# chown apache:apache piwik
# unzip last.zip -d /usr/share/

Für den Zugriff auf unsere Piwik-Installation legen wir uns einen virtuellen Host an. Die entsprechende Konfigurationsdatei vhosts.conf haben wir im Verzeichnis /etc/httpd/conf.d angelegt. Mit dem Editor unserer Wahl ergänzen wir nun unsere virtuelen Hosts um einen weiteren:

# vim /etc/httpd/conf.d/vhosts.conf
vhosts.conf
#
# piwik.nausch.org
#
<VirtualHost *:80>
    ServerAdmin webmaster@nausch.org
    ServerName piwik.nausch.org
    ServerAlias www.piwik.nausch.org
    ServerPath /
    DocumentRoot "/var/www/piwik"
    <Directory "/var/www/piwik">
        AllowOverride AuthConfig
        Order allow,deny
        Allow from all
    </Directory>
    DirectoryIndex index.php
    ErrorLog logs/piwik_error.log
    CustomLog logs/piwik_access.log combined
</VirtualHost>

Dabei ist zu beachten, nicht versehentlich den Zugriff via Order allow,deny versehentlich zu beschränken. Andererseits bekommt man später Probleme bei der Datensammlung - die mySQL-Datenbanktabelle würde nicht befüllt werden.

Laut den Requirements-Angaben werden die beiden Pakete php-gd und php-pdo benötigt. Diese installieren wir einfach via yum:

# yum install php-gd php-pdo -y

Zu guter Letzt passen wir noch den für PHP nutzbaren Speicherbedarf an. Dazu editieren wir die Konfigurationsdatei /etc/php.ini

 # vim /etc/php.ini
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60         ; Maximum amount of time each script may spend parsing request data
memory_limit = 256M         ;Maximum amount of memory a script may consume 

Mit einem service httpd restart wird die vorgenannte VHost-Definition und auch diese Änderung unserem System/Webserver bekannt gemacht.

Da die Webanalysedaten in einer MySQL-Datenbank abgelegt und zur Auswertung vorgehalten werden, legen wir uns noch einen entsprechenden Datenbankuser an. Dazu benutzen wir entweder das Clientprogramm mysql oder für den faulen Admin steht phpMyAdmin zur Verfügung. Mittels folgender MySQL-Statements legen wir nun den notwendigen Datenbankuser an und erteilen ihm die nötigen Rechte:

CREATE DATABASE `webstats`;
CREATE USER 'piwikuser'@'vml000090.dmz.nausch.org' IDENTIFIED BY 'First_Universal_Cybernetic-Kinetic_Ultra-Micro_Programmer';
GRANT all on webstats.* to 'piwikuser'@'vml000090.dmz.nausch.org';
FLUSH PRIVILEGES;

CREATE USER 'piwikuser'@'10.0.0.90' IDENTIFIED BY 'First_Universal_Cybernetic-Kinetic_Ultra-Micro_Programmer';
GRANT all on webstats.* to 'piwikuser'@'10.0.0.90';
FLUSH PRIVILEGES;

Anschließend testen wir, ob wir uns erfolgreich von der Konsole aus mit unserem neu definierten Datenbankuser bei unserem MySQL-Server anmelden können:

 $ mysql -D webstats -u piwikuser -h datenbankhost.dmz.nausch.org -p
Enter password: 
Welcome TO the MySQL monitor.  Commands END WITH ; OR \g.
Your MySQL connection id IS 33
Server version: 5.1.52 SOURCE distribution
 
Copyright (c) 2000, 2010, Oracle AND/OR its affiliates. ALL rights reserved.
This software comes WITH ABSOLUTELY NO WARRANTY. This IS free software,
AND you are welcome TO MODIFY AND redistribute it UNDER the GPL v2 license
 
TYPE 'help;' OR '\h' FOR help. TYPE '\c' TO clear the CURRENT INPUT statement.
 
mysql> STATUS;
--------------
mysql  Ver 14.14 Distrib 5.1.52, FOR unknown-linux-gnu (x86_64) USING readline 5.1
 
Connection id:          33
CURRENT DATABASE:       webstats
CURRENT USER:           piwikuser@vml000090.dmz.nausch.org
SSL:                    NOT IN USE
CURRENT pager:          stdout
USING OUTFILE:          ''
USING delimiter:        ;
Server version:         5.1.52 SOURCE distribution
Protocol version:       10
Connection:             10.0.0.30 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306
Uptime:                 2 days 1 HOUR 27 MIN 14 sec
 
Threads: 1  Questions: 141  Slow queries: 0  Opens: 19  FLUSH TABLES: 1  OPEN TABLES: 12  Queries per SECOND avg: 0.0
--------------
 
mysql> quit
Bye

Nachdem auch dieser Schritt erfolgreich zu Ende geführt worden ist, machen wir uns weiter auf den Weg unsere Pwiki-Installation weiter vorzunehmen.

Ab dieser Stelle wir es nun das erste Mal, so richtig spannend und vor allem einfach und komfortabel. Im Grunde ist es schon sehr unspektakulär, denn wir geben in unserem Webbrowser einfach die URL unseres Piwik-VHostes an: http://piwik.nausch.org

Wir klicken uns also durch die folgenden Seiten und geben jeweils die Daten unserer Laufzeitumgebung an:

 PHOTO: Piwik-Installation via WEB-GUI

Werden von Piwik, wie in diesem Fall Fehler beanstandet, so sind einfach die nötigen Konfigurationsänderungen und -korrekturen vorzunehmen, bis alles im grünen Bereich ist.

 PHOTO: Piwik-Installation via WEB-GUI

 PHOTO: Piwik-Installation via WEB-GUI

In disem Fall werden die Datei-/Verzeichnisrechte beanstandet. Wie angemerkt ändern wir auf der konsole die entsprechenden Zugriffsrechte via chmod.

 PHOTO: Piwik-Installation via WEB-GUI

Anschließend wird die Datenbank eingerichtet.

 PHOTO: Piwik-Installation via WEB-GUI

Anscheinend haben wir uns bei der Eingabe unseres Passwortes vertippt, da sofort ein entsprechender Fehlerhinweis gemeldet wurde.

 PHOTO: Piwik-Installation via WEB-GUI

Nach der erneuten und richtigen Eingabe wird auch hier nun das anlegen der einzelnen Tabellen in unserer Datenbank positiv bestätigt.

 PHOTO: Piwik-Installation via WEB-GUI

Als nächstes Legen wir unseren Aadministrativen Nutzer „root“ an.

 PHOTO: Piwik-Installation via WEB-GUI

Hier erfolgt nun die Definition unserer „zu beobachtenden Webserveradresse“.

 PHOTO: Piwik-Installation via WEB-GUI

Der notwendige JavaScript-Code, den wir in die Webseiten einfügen wird uns nun Bildschirm angezeigt, so dass wir diesen bequem per cut and paste an die richtige Stelle bringen können. Selbstverständlich können wir diesen Code-schnipsel auch jederzeit später in der Administrationsebene von Piwik abfragen.

 PHOTO: Piwik-Installation via WEB-GUI

Am Ende unserer Installation werden wir dann abschließend informiert:

 PHOTO: Piwik-Installation via WEB-GUI

Das war's nun auch schon (fast). ;-) Wir tragen den uns gezeigten JavaScript-Code in unsere Webseiten ein und melden uns an unserem Piwiki-Server an.

 PHOTO: Anmeldefenster

Zum automatischen erstellen der Archiv-Daten legen wir uns einfach einen passenden cron-job an.

Hierzu tragen wir einfach folgende Zeile in unserer crontab-Konfigurationsdatei ein.

5 * * * * www-data /var/www/piwik/misc/cron/archive.sh > /dev/null
 # vim /etc/crontab 

Somit wird alle 5 Minuten entsprechende Archivdaten generiert. Bei hochfrequentierten Seiten empfiehlt es sich hier einen Abstand von 30 Minuten zu setzen. Die Eintragungen in der /etc/crontab lauten hierzu entsprechend.

30 * * * * www-data /var/www/piwik/misc/cron/archive.sh > /dev/null

Wenn wir nun das script von Hand aufrufe, sollte uns in ein entsprechende Ausgabe der Daten in XML-Format entgegenfallen.

Starting Piwik reports archiving...
 
 
Archiving period = day for idsite = 1...
<?xml version="1.0" encoding="utf-8" ?>
<results>
        <result date="2011-11-23" />
        <result date="2011-11-24" />
        <result date="2011-11-25" />
        <result date="2011-11-26" />
        <result date="2011-11-27" />
        <result date="2011-11-28" />
        <result date="2011-11-29" />
        <result date="2011-11-30" />
        <result date="2011-12-01" />
        <result date="2011-12-02" />
        <result date="2011-12-03" />
        <result date="2011-12-04" />
        <result date="2011-12-05" />
        <result date="2011-12-06" />
        <result date="2011-12-07" />
        <result date="2011-12-08" />
        <result date="2011-12-09" />
        <result date="2011-12-10" />
        <result date="2011-12-11" />
        <result date="2011-12-12" />
        <result date="2011-12-13" />
        <result date="2011-12-14" />
        <result date="2011-12-15" />
        <result date="2011-12-16" />
        <result date="2011-12-17" />
        <result date="2011-12-18" />
        <result date="2011-12-19" />
        <result date="2011-12-20" />
        <result date="2011-12-21" />
        <result date="2011-12-22" />
        <result date="2011-12-23" />
        <result date="2011-12-24" />
        <result date="2011-12-25" />
        <result date="2011-12-26" />
        <result date="2011-12-27" />
        <result date="2011-12-28" />
        <result date="2011-12-29" />
        <result date="2011-12-30" />
        <result date="2011-12-31" />
        <result date="2012-01-01" />
        <result date="2012-01-02" />
        <result date="2012-01-03" />
        <result date="2012-01-04" />
        <result date="2012-01-05" />
        <result date="2012-01-06" />
        <result date="2012-01-07" />
        <result date="2012-01-08" />
        <result date="2012-01-09" />
        <result date="2012-01-10" />
        <result date="2012-01-11" />
        <result date="2012-01-12" />
        <result date="2012-01-13" />
</results>
Archiving period = week for idsite = 1...
<?xml version="1.0" encoding="utf-8" ?>
<results>
        <result date="2011-01-17 to 2011-01-23" />
        <result date="2011-01-24 to 2011-01-30" />
        <result date="2011-01-31 to 2011-02-06" />
        <result date="2011-02-07 to 2011-02-13" />
        <result date="2011-02-14 to 2011-02-20" />
        <result date="2011-02-21 to 2011-02-27" />
        <result date="2011-02-28 to 2011-03-06" />
        <result date="2011-03-07 to 2011-03-13" />
        <result date="2011-03-14 to 2011-03-20" />
        <result date="2011-03-21 to 2011-03-27" />
        <result date="2011-03-28 to 2011-04-03" />
        <result date="2011-04-04 to 2011-04-10" />
        <result date="2011-04-11 to 2011-04-17" />
        <result date="2011-04-18 to 2011-04-24" />
        <result date="2011-04-25 to 2011-05-01" />
        <result date="2011-05-02 to 2011-05-08" />
        <result date="2011-05-09 to 2011-05-15" />
        <result date="2011-05-16 to 2011-05-22" />
        <result date="2011-05-23 to 2011-05-29" />
        <result date="2011-05-30 to 2011-06-05" />
        <result date="2011-06-06 to 2011-06-12" />
        <result date="2011-06-13 to 2011-06-19" />
        <result date="2011-06-20 to 2011-06-26" />
        <result date="2011-06-27 to 2011-07-03" />
        <result date="2011-07-04 to 2011-07-10" />
        <result date="2011-07-11 to 2011-07-17" />
        <result date="2011-07-18 to 2011-07-24" />
        <result date="2011-07-25 to 2011-07-31" />
        <result date="2011-08-01 to 2011-08-07" />
        <result date="2011-08-08 to 2011-08-14" />
        <result date="2011-08-15 to 2011-08-21" />
        <result date="2011-08-22 to 2011-08-28" />
        <result date="2011-08-29 to 2011-09-04" />
        <result date="2011-09-05 to 2011-09-11" />
        <result date="2011-09-12 to 2011-09-18" />
        <result date="2011-09-19 to 2011-09-25" />
        <result date="2011-09-26 to 2011-10-02" />
        <result date="2011-10-03 to 2011-10-09" />
        <result date="2011-10-10 to 2011-10-16" />
        <result date="2011-10-17 to 2011-10-23" />
        <result date="2011-10-24 to 2011-10-30" />
        <result date="2011-10-31 to 2011-11-06" />
        <result date="2011-11-07 to 2011-11-13" />
        <result date="2011-11-14 to 2011-11-20" />
        <result date="2011-11-21 to 2011-11-27" />
        <result date="2011-11-28 to 2011-12-04" />
        <result date="2011-12-05 to 2011-12-11" />
        <result date="2011-12-12 to 2011-12-18" />
        <result date="2011-12-19 to 2011-12-25" />
        <result date="2011-12-26 to 2012-01-01" />
        <result date="2012-01-02 to 2012-01-08" />
        <result date="2012-01-09 to 2012-01-15" />
</results>
Archiving period = month for idsite = 1...
<?xml version="1.0" encoding="utf-8" ?>
<results>
        <result date="2007-10" />
        <result date="2007-11" />
        <result date="2007-12" />
        <result date="2008-01" />
        <result date="2008-02" />
        <result date="2008-03" />
        <result date="2008-04" />
        <result date="2008-05" />
        <result date="2008-06" />
        <result date="2008-07" />
        <result date="2008-08" />
        <result date="2008-09" />
        <result date="2008-10" />
        <result date="2008-11" />
        <result date="2008-12" />
        <result date="2009-01" />
        <result date="2009-02" />
        <result date="2009-03" />
        <result date="2009-04" />
        <result date="2009-05" />
        <result date="2009-06" />
        <result date="2009-07" />
        <result date="2009-08" />
        <result date="2009-09" />
        <result date="2009-10" />
        <result date="2009-11" />
        <result date="2009-12" />
        <result date="2010-01" />
        <result date="2010-02" />
        <result date="2010-03" />
        <result date="2010-04" />
        <result date="2010-05" />
        <result date="2010-06" />
        <result date="2010-07" />
        <result date="2010-08" />
        <result date="2010-09" />
        <result date="2010-10" />
        <result date="2010-11" />
        <result date="2010-12" />
        <result date="2011-01" />
        <result date="2011-02" />
        <result date="2011-03" />
        <result date="2011-04" />
        <result date="2011-05" />
        <result date="2011-06" />
        <result date="2011-07" />
        <result date="2011-08" />
        <result date="2011-09" />
        <result date="2011-10" />
        <result date="2011-11" />
        <result date="2011-12" />
        <result date="2012-01" />
</results>
Archiving period = year for idsite = 1...
<?xml version="1.0" encoding="utf-8" ?>
<results>
        <result date="2002" />
        <result date="2003" />
        <result date="2004" />
        <result date="2005" />
        <result date="2006" />
        <result date="2007" />
        <result date="2008" />
        <result date="2009" />
        <result date="2010" />
        <result date="2011" />
        <result date="2012" />
</results>
Archiving for idsite = 1 done!
Reports archiving finished.
---------------------------
Starting Scheduled tasks...
 
task,output
Piwik_CoreAdminHome.optimizeArchiveTable,Time elapsed: 0.009s
Piwik_PDFReports.dailySchedule,Time elapsed: 0.005s
Piwik_PDFReports.weeklySchedule,Time elapsed: 0.001s
Piwik_PDFReports.monthlySchedule,Time elapsed: 0.002s
Piwik_PrivacyManager.deleteLogTables,Time elapsed: 0.000s
Finished Scheduled tasks.

Je nach Auslastung unserer gewählten VHosts, werden nun bei jedem Besucher entsprechende Profildaten in unserer MySQL-Datenbanktabelle angelegt.

Einen neuen Nutzer in unserem Piwik-System legen wir über den Menüpunkt User Management, nach der erfolgreichen Anmeldung anlegen können.

Abschließend weisen wir diesem User noch die Berechtigung auf die entsprechende URL unseres Webservers zu.

Weitere Web-Sitrs und Projekte geben wir unserem Piwik-System übeer den Menüpunkt SiteManagement bekannt.

Nachfolgenden CJavaScript-Code fügen wir dann den entsprechenden Seiten unseres Web-Projektes hinzu.

Beim Anlegen unseres VHostes ist darauf zu achten, dass nicht nur unser Admin-Account von einem Rechner oder Netz auf unseren VHost zugreifen können muss, sondern von überall her. Bei Schwierigkeiten am besten das Error-Logfile unseres Webservers ansehen, dort tauchen entsprechende Warnmeldungen auf.

Was auch zu Irritationen führen kann, ist die Verwendung des Firefox-Plugins Addblock Plus. Bei unserem Versuch, das Surfverhalten auf unseren Seiten zu erfassen uns später auszuwerten, sind wir natürlich darauf angewiesen, dass der bzw. die Nutzer JavaScript aktiviert haben und keinen Werbeblocker ala Addblock Plus verwendet/verwenden.

Bei eigenen Test mit „fehlenden Datenbankeinträgen“ beim Ansurfen also darauf achten, eine entsprechende Ausnahmeregel für unsere Domäne in Addblock Plus anzugeben.

Links

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/piwik.txt
  • Zuletzt geändert: 20.04.2018 10:26.
  • von 127.0.0.1