Matomo

    Anciennement log2stats et gen-indexes

    Fonctionnement🔗

    Matomo (anciennement Piwik) génère des statistiques d’utilisation et de fréquentation de nos services. Ces informations nous permettent d’estimer le nombre de personnes qui utilisent nos outils et de connaître un peu mieux leurs usages afin d’améliorer notre qualité de service. La génération de statistiques fait d’ailleurs partie de nos engagements en tant que membre du collectif CHATONS.

    Pour consulter la durée de rétention de ces données, consultez nos mentions légales.

    Historique🔗

    Matomo a été mis en place le 4 juillet 2023 et remplace l’ancienne méthode de génération de statistiques utilisée depuis 2019 :

    • Le script log2stats.sh, précédemment logs-rapports.py, qui utilise GoAccess pour générer des statistiques hebdomadaires et mensuelles ;
    • Le script gen-indexes.py qui génère des fichiers d’index pour parcourir ces statistiques hebdomadaires.

    Ce remplacement intervient en constatant l’incapacité pour GoAccess de générer des rapports pour certains de nos services, notamment notre service Nitter, en raison du grand nombre de requêtes que ce service entraîne (plus de 48 millions de requêtes par semaine).

    Nous avons recherché un nouveau logiciel de génération de statistiques par la suite, avec les critères suivants :

    • La génération de statistiques doit se fonder uniquement sur l’analyse des journaux des services, sans JavaScript intégré à nos pages ;
    • La solution logicielle et l’ensemble de ses dépendances doivent consommer moins de 1 Go de RAM ;
    • Les statistiques générées doivent être consultables en web à travers une interface moderne et conviviale ;
    • Si possible, la solution logicielle doit permettre de simplifier la configuration précédente (assez lourde et complexe, avec deux scripts maison).

    Selon ces quatre critères, nous avons identifié Matomo comme l’une des seules solutions alternatives à GoAccess et a priori viables à notre échelle.

    Installation🔗

    Nous utilisons l’image library/matomo, variante FPM avec la version majeure et mineure explicite.

    Nous avons choisi la variante FPM après avoir constaté que l’image Apache (par défaut) consommait en moyenne 350 Mo de RAM de plus que nécessaire. Notre reverse-proxy sert désormais les fichiers statiques pour ce service.

    Tests🔗

    Selon la FAQ, l’adresse https://DOMAINE_DE_MATOMO/matomo.php devrait renvoyer un code de statut HTTP 200 si l’instance est fonctionnelle.

    Il est aussi possible de se connecter à l’instance Matomo avec les accès d’administration et vérifier s’il existe des données consultables, mais ces données pourraient ne pas être à jour (voir #Génération des archives).

    Statistiques d’utilisation🔗

    Matomo consomme une quantité importante de ressources, mais pas autant qu’indiqué sur leur documentation : environ 300 Mo de RAM en moyenne, sans compter sa dépendance MariaDB et le reverse-proxy nécessaires à son fonctionnement en mode PHP-FPM.

    Il consomme également sa part de CPU, avoisinant les 40 % d’usage constant d’un cœur de vCPU.

    Précautions🔗

    La page « System Check » dans l’onglet « Diagnostic » du menu d’administration permet de vérifier si l’instance est bien configurée.

    Entretien🔗

    Suppression des anciens journaux🔗

    Il est conseillé de paramétrer la suppression automatique des journaux dans les paramètres et de surveiller de près la consommation de ressources de Matomo, qui peut varier selon le trafic reçu sur les services. La taille de la base de données MariaDB peut varier assez drastiquement selon ce trafic, et pourrait augmenter continuellement si aucune suppression automatique n’est paramétrée.

    Génération des archives🔗

    À partir d’un certain trafic, il n’est plus possible de générer les archives de statistiques de manière dynamique (lors de la visite de l’interface de Matomo). Ces statistiques peuvent être alors générées au préalable à l’aide d’une cron :

    docker exec -i matomo bash -c "php console core:archive --url=https://DOMAINE_DE_MATOMO/" 
    

    Cette commande peut être exécutée une ou plusieurs fois par jour en fonction des ressources disponibles, et permet d’actualiser les statistiques sur le panel d’administration du logiciel.

    Mise à jour🔗

    Le processus de mise à jour de Matomo est pour le moins étrange avec Docker. Un ticket sur leur dépôt est consacré à ce sujet.

    Il consiste en trois étapes :

    1. Télécharger la nouvelle image de Matomo ;
    2. Supprimer le fichier matomo.php dans le volume Docker de Matomo ;
    3. Redémarrer le conteneur.

    Matomo détectera automatiquement que matomo.php est manquant et mettra à jour le contenu du volume.

    Le script import-logs.py, présent dans l’image de syslog-ng, devra éventuellement être mis à jour selon les préconisations dans les notes de version du logiciel. Le dépôt de ce script est disponible ici.

    Évolutions envisagées🔗

    Plateforme de statistiques publiques🔗

    Jusqu’à présent, nous utilisions une solution « maison » pour publier nos statistiques avec GoAccess : le script gen-indexes. Avec l’arrivée de Matomo, cette ancienne plateforme de statistiques est vouée à être archivée ou disparaître.

    Il est envisagé de développer une plateforme ou un site statique qui se base sur l’API de Matomo pour afficher des statistiques, d’une manière similaire que Framastats (dépôt). Il existe sans doute déjà des dépôts facilement adaptables pour nos besoins, un travail de recherche est nécessaire.