Configurer Piwik pour les sites à fort trafic

Date: 8/07/2011 | Catégories: Blog,Open-source,Planet-libre,Web | Tags: ,,

Nous avons vu dans un précédant billet comment installer et configurer Piwik comme une alternative libre à Google Analytics. Un des commentaire m'a conduit vers une page du Wiki officiel de Piwik ou il est expliqué que pour un site qui génère plus de quelques centaines de visites pas jour (drôle de définition d'un site à fort trafic :)), une configuration complémentaire est nécessaire.

De base, Piwik traite dynamiquement les données quand vous accédez à l'interface Web. L'idée est de forcer automatiquement cette génération toute les heures pour disposer d'un affichage plus rapide des rapports.

Mise en place du traitement automatique des données

Nous allons utiliser la crontab système pour lancer toutes les heures le traitement des informations stockés dans la base de donnée MySQL. Si vous avez suivi mon tutoriel sur l'installation de Piwik, le script permettant traiter les informations devrait se trouver dans le répertoire suivant: /var/www/piwik/misc/cron/archive.sh.

On commence par vérifier les droits de ce fichier et l'utilisateur a qui il appartient:

ls -alF  /var/www/piwik/misc/cron/archive.sh

-rwxr-xr-x 1 www-data www-data 3832 Mar 29 03:24 /var/www/piwik/misc/cron/archive.sh*

Il est bien en lecture et exécution (rx) pour l'utilisateur www-data.

On peut donc configurer la crontab de l'utilisateur www-data en ajoutant les deux lignes suivantes (je rappelle que pour éditer la crontab  il faut saisir la commande "sudo crontab -u www-data -e"):

MAILTO="USER@DOMAINE.COM"

5 * * * * /var/www/piwik/misc/cron/archive.sh > /dev/null

Il faut bien sûr remplacer USER@DOMAINE.COM par une adresse mail valide qui sera utilisé en cas de problème pour vous prévenir.

Configurer l'interface Web

Une fois le crontab mis en place, il faut dire à l'interface Web de ne plus traiter automatiquement les données quand vous accédez à un rapport. Pour cela, il faut se rendre dans le menu Paramètres > Onglets Paramètres Généraux:

On demande à Piwik de ne pas traiter les données à partir de l'interface Web (1) puis on configure le délais de 3600 secondes (1 heure) entre deux générations de rapport (2).

Et voili, vous devriez avoir un Piwik qui boost même avec un trafic important !

  • Hello Nicolas,
    Ton article tombe très bien, je voulais savoir depuis quand tu utilisais Piwik…
    Je songe à abandonner GA, mais j’ai quelques petites réticences…

    En tout cas, la technique est intéressante pas que pour les sites à fort trafic, mais également les petits hébergements… (genre SheevaPlug :p )

  • Al

    je me posais la question de savoir si avec piwik il serait possible d’avoir des stats de strealing icecast par exemple ?

  • Al

    d’ailleurs je cherche un bon outil de stats icecast, et malgré de nombreuses recherches, je n’ai rien trouvé d’excellent.

    qqu aurait il un bon plan/idée ?

  • Question bête, pourquoi tu configures la tâche cron à s’exécuter toutes les 5 minutes si les rapports seront générés au plus toutes les heures ?

  • Oups, désolé, j’ai mal lu, c’est toutes les heures à :05.

    Mais alors, n’y a-t-il pas redondance entre le réglage dans l’interface web de « 3600 secondes » et la périodicité du cron ?

    • Le cron fait seulement un pré-traitement des données stockées dans la base MySQL tandis que le réglage dans l’interface Web donne le temps entre deux générations de rapports.

      • Ah je pense avoir compris. La configuration dans l’interface web s’intitule :

        Rapports du jour (ou n’importe quelle autre plage de dates incluant aujourd’hui) seront calculés tout au plus chaque…

        Cela signifie que archive.sh ne fait quelque chose que si le dernier rapport date de plus de x secondes…
        On pourrait lancer archive.sh toutes les minutes, ça ne changerait rien (je pense, pas testé…).