Si votre site Web a plus de quelques centaines de visites par jour (bravo !), attendre que Matomo traite vos données peut prendre quelques minutes. La meilleure façon d’éviter ces temps d’attente est de mettre en place un job cron sur votre serveur afin que vos données soient automatiquement traitées toutes les heures.

Si vous utilisez Matomo pour WordPress, vous n’avez pas besoin de le faire car il utilise le WP Cron. Si vous êtes sur le Matomo Cloud, ceci est automatiquement pris en charge pour vous.

Pour déclencher automatiquement les archives Matomo, vous pouvez configurer un script qui s’exécutera toutes les heures.

Vous trouverez ci-dessous des instructions pour les systèmes Linux/Unix utilisant une crontab, mais aussi des instructions pour les utilisateurs Windows avec le planificateur de tâches Windows, et pour des outils tels que CPanel. Si vous n’avez pas accès au serveur, vous pouvez également mettre en place un cron Web.

Linux/Unix : Comment configurer une crontab pour archiver automatiquement les rapports.

Une crontab est un service de planification basé sur le temps dans un serveur de type Unix. La crontab nécessite l’installation de php-cli ou de php-cgi. Vous aurez également besoin d’un accès SSH à votre serveur pour la configurer. Créons une nouvelle crontab avec l’éditeur de texte nano :

nano /etc/cron.d/matomo-archive

et ajoutons les lignes suivantes :

MAILTO= »youremail@example.com »
5 * * * * www-data /usr/bin/php /path/to/matomo/console core:archive –url=http://example.org/matomo/ > /home/example/matomo-archive.log

Le script d’archivage Matomo s’exécutera toutes les heures (à 5 minutes passées). En général, il s’exécute en moins d’une minute. Sur les sites Web plus importants (10 000 visites et plus), l’archivage Matomo peut prendre jusqu’à 30 minutes.

Répartition des paramètres :

  • MAILTO="youremail@example.com" S’il y a une erreur pendant l’exécution du script, la sortie du script et les messages d’erreur seront envoyés à l’adresse youremail@example.com.
  • www-data est l’utilisateur par lequel le job cron sera exécuté. L’utilisateur est parfois « apache ». Il est recommandé d’exécuter votre crontab avec le même utilisateur que celui de votre serveur Web (pour éviter les erreurs de permissions de fichiers).
  • /usr/bin/php est le chemin vers votre exécutable PHP. Il varie en fonction de la configuration de votre serveur et de votre système d’exploitation. Vous pouvez exécuter la commande « which php » ou « which php » dans un shell linux, pour connaître le chemin de votre exécutable PHP. Si vous ne connaissez pas le chemin, demandez à votre hébergeur ou à votre administrateur système.
  • /path/to/matomo/console est le chemin vers votre application Matomo sur votre serveur. Par exemple, il peut s’agir de /var/www/matomo/console.
  • --url=http://example.org/matomo/ est le seul paramètre requis dans le script, qui doit être défini à votre URL de base Matomo, par exemple http://analytics.example.org/ ou http://example.org/matomo/
  • > /home/example/matomo-archive.log est le chemin où le script écrira la sortie. Vous pouvez remplacer ce chemin par /dev/null si vous préférez ne pas enregistrer le dernier texte de sortie de Matomo cron. La sortie du script contient des informations utiles telles que les sites Web archivés, le temps de traitement pour chaque date et site Web, etc. Ce fichier journal doit être écrit dans un emplacement en dehors de votre serveur Web afin que les gens ne puissent pas le voir via leur navigateur (parce que ce fichier journal contiendra des informations sensibles sur votre installation Matomo). Vous pouvez également remplacer > par >> afin d’ajouter la sortie du script au fichier journal, plutôt que de l’écraser à chaque exécution (mais nous vous recommandons alors d’effectuer une rotation de ce fichier journal ou de le supprimer, par exemple, une fois par semaine).
  • 2> /home/example/matomo-archive-errors.log est le chemin optionnel où le script écrira les messages d’erreur. Si vous n’indiquez pas ce chemin dans l’onglet cron, les erreurs seront envoyées par e-mail à votre adresse MAILTO. Si vous l’écrivez dans la crontab, les erreurs seront enregistrées dans le fichier d’erreurs spécifié. Ce fichier journal doit être écrit dans un endroit en dehors de votre serveur Web afin que les gens ne puissent pas le voir via leur navigateur (parce que ce fichier journal contiendra des informations sensibles sur votre installation Matomo).

Description de l’utilitaire ‘linux cron’: L’utilitaire cron utilise deux types de fichiers de configuration différents : le crontab système et les crontabs utilisateur. La seule différence entre ces deux formats est le sixième champ.

  • Dans le system crontab, le sixième champ est le nom d’un utilisateur sous lequel la commande doit être exécutée. Cela permet à la crontab système d’exécuter des commandes sous n’importe quel utilisateur.
  • Dans une crontab utilisateur, le sixième champ est la commande à exécuter, et toutes les commandes sont exécutées par l’utilisateur qui a créé la crontab ; il s’agit d’une fonction de sécurité importante.

Si vous configurez votre crontab en tant que crontab d’utilisateur, vous écrirez plutôt :

5 * * * * /usr/bin/php /path/to/matomo/console core:archive –url=http://example.org/matomo/ > /dev/null

Ce job cron déclenchera le processus d’archivage jour/semaine/mois/année toutes les heures, après 5 minutes. Cela permettra de s’assurer que lorsque vous visiterez votre tableau de bord Matomo, les données auront déjà été traitées ; Matomo se chargera rapidement.

Tester la commande cron

Assurez-vous que la crontab fonctionne réellement en exécutant le script en tant qu’utilisateur de la crontab dans l’interpréteur de commandes :

su www-data -s /bin/bash -c « /usr/bin/php /path/to/matomo/console core:archive –url=http://example.org/matomo/ »

Vous devriez voir la sortie du script avec la liste des sites Web en cours d’archivage, et un résumé à la fin indiquant qu’il n’y a pas eu d’erreur.

Lancer plusieurs archiveurs en même temps

Si vous avez plusieurs sites, il peut être intéressant de lancer plusieurs archiveurs en parallèle pour accélérer l’archivage. Nous vous recommandons de ne pas les lancer en même temps, mais de les lancer à quelques secondes ou minutes d’intervalle pour éviter les problèmes de concurrence. Par exemple :

5 * * * * /usr/bin/php /path/to/matomo/console core:archive –url=http://example.org/matomo/ > /dev/null
6 * * * * /usr/bin/php /path/to/matomo/console core:archive –url=http://example.org/matomo/ > /dev/null

Dans l’exemple ci-dessus, un archiveur démarre à la minute 5 de chaque heure, l’autre démarre une minute plus tard. Vous pouvez également démarrer plusieurs archiveurs en même temps à l’aide d’un script que vous exécuterez ensuite régulièrement par le biais d’un cronjob.

CONCURRENT_ARCHIVERS=2
pour i in $(seq 1 $CONCURRENT_ARCHIVERS)
faire
(sleep $i && /path/to/matomo/console core:archive & )
terminé

Windows : Comment configurer l’archivage automatique à l’aide du planificateur Windows

-> Veuillez consulter notre FAQ dédiée à la mise en place d’une tâche planifiée sous Windows.

Plesk : Comment configurer le script Cron en utilisant Plesk

En savoir plus sur l’installation de Matomo sur Plesk et la configuration de la crontab d’archivage dans le guide Plesk Matomo

CPanel : Comment configurer le script Cron à l’aide de CPanel

Il est facile de configurer l’archivage automatique si vous utilisez une interface utilisateur telle que CPanel, Webmin ou Plesk. Voici les instructions pour CPanel :

  1. Connectez-vous à CPanel pour le domaine avec l’installation de Matomo
  2. Cliquez sur « Cron Jobs »
  3. N’indiquez pas d’e-mail
  4. Dans « Minutes », mettez 00 et laissez le reste vide.
  5. Vous devez ensuite coller le chemin vers l’exécutable PHP, puis le chemin vers le script Matomo /console, puis le paramètre avec votre URL de base Matomo –url=matomo.example.org/
    Voici un exemple d’installation chez Hostgator (dans cet exemple, vous devrez remplacer ‘yourcpanelsitename’ par le nom d’utilisateur du cpanel de votre domaine)

    /usr/local/bin/php -f /home/yourcpanelsitename/public_html/matomo/console core:archive –url=example.org/matomo/ > /home/example/matomo-archive-output.log

« yourcpanelsitename » correspond généralement aux huit premières lettres de votre domaine (à moins que vous ne l’ayez modifié lors de la création de votre compte cpanel).
6. Cliquez sur « Ajouter un nouveau job Cron »

Matomo traitera vos rapports automatiquement à l’heure.

Web Cron lorsque votre hébergeur ne prend pas en charge pas les tâches Cron

Si possible, nous vous recommandons vivement d’exécuter une tâche cron ou programmée. Cependant, sur certains hébergements partagés, ou sur certaines configurations de serveurs, l’exécution d’un cron ou d’une tâche programmée peut ne pas être facile ou possible.

Certains hébergeurs vous permettent de configurer un web cron, qui est une simple URL que l’hébergeur visitera automatiquement à une heure programmée. Si votre hébergeur vous permet de créer un cron Web, vous pouvez saisir l’URL suivante dans son interface d’hébergement :

https://matomo.your-server.example/path/to/matomo/misc/cron/archive.php?token_auth=XYZ

Remplacez le XYZ par le token_auth de 32 caractères du super utilisateur. Pour trouver le token_auth, connectez-vous en tant que super utilisateur dans Matomo, cliquez sur le lien Administration dans le menu supérieur, puis cliquez sur le lien API à gauche et le token_auth est affiché sur la page.

Notes :

  • Pour des raisons de sécurité, nous vous recommandons de POST le paramètre token_auth à l’URL https://matomo.your-server.example/path/to/matomo/misc/cron/archive.php (au lieu d’envoyer le token_auth en tant que paramètre GET).
  • Vous pouvez tester le Web cron en collant l’URL dans votre navigateur, attendez quelques minutes pour que le traitement se termine et vérifiez ensuite le résultat.
  • Le Web cron doit être déclenché au moins une fois par heure. Vous pouvez également utiliser un service de ‘surveillance de site Web’ (gratuit ou payant) pour demander automatiquement cette page toutes les heures.

Conseils importants pour les sites Web à trafic moyen ou élevé

Désactiver les déclencheurs de navigateur pour l’archivage Matomo et limiter les rapports Matomo à une mise à jour toutes les heures

Après avoir configuré le script d’archivage automatique comme expliqué ci-dessus, vous pouvez configurer Matomo de sorte que les requêtes dans l’interface utilisateur ne déclenchent pas l’archivage, mais lisent les rapports préarchivés. Connectez-vous en tant que super utilisateur, cliquez sur Administration > Système -> Paramètres généraux, et sélectionnez :

  • Archiver les rapports lorsqu’ils sont consultés à partir du navigateur : Non
  • Archiver les rapports au maximum toutes les X secondes : 3600 secondes

Cliquez sur Enregistrer pour sauvegarder vos modifications. Maintenant que vous avez configuré le cron d’archivage et modifié ces deux paramètres, vous pouvez profiter de rapports prétraités en temps quasi réel dans Matomo !

Les paramètres généraux avec les options ci-dessus en surbrillance

Les statistiques d’aujourd’hui auront une durée de vie d’une heure, ce qui garantit que les rapports sont traités toutes les heures (presque en temps réel)

Augmenter la limite de mémoire de PHP

Si vous recevez cette erreur :

Erreur fatale : La taille de mémoire autorisée de 16777216 octets est épuisée (tentative d’allocation de X octets)

vous devez augmenter la mémoire allouée à PHP. Pour donner à Matomo assez de mémoire pour traiter vos rapports d’analyse Web, augmentez la limite de mémoire à 512M :

memory_limit = 512M

Pour savoir où se trouve votre fichier php.ini sur votre serveur, vous pouvez suivre les étapes suivantes : créez un fichier test.php et ajoutez le code suivant :

 <?php phpinfo(); ?>

et ouvrez-le dans un navigateur, il affichera le fichier qui est actuellement lu par PHP sur votre serveur Web. Il affichera également la valeur de max_execution_time actuellement définie.

Plus d’astuces pour les serveurs à fort trafic !

Il est possible de suivre des millions de pages par mois sur des centaines ou des milliers de sites Web en utilisant Matomo. Une fois que vous avez mis en place l’archivage cron comme expliqué ci-dessus, il y a d’autres étapes importantes et faciles pour améliorer les performances de Matomo.

Pour plus d’informations, voir Comment configurer Matomo pour plus de rapidité.

Plus d’informations sur l’archivage Matomo

  • Si vous lancez l’archivage plusieurs fois par jour, il réarchivera les rapports d’aujourd’hui, ainsi que tous les rapports pour une plage de dates qui inclut aujourd’hui : la semaine en cours, le mois en cours, etc.
  • La taille de votre base de données Matomo augmentera avec le temps, c’est normal. Matomo supprimera les archives qui ont été traitées pour des périodes incomplètes (par exemple, lorsque vous avez archivé une semaine au milieu de cette semaine), mais ne supprimera pas les autres archives. Cela signifie que vous aurez des archives pour chaque jour, chaque semaine, chaque mois et chaque année dans les tables MySQL. Cela garantit une réponse très rapide de l’interface utilisateur et un accès aux données, mais nécessite de l’espace disque.
  • L’archivage de Matomo pour les rapports du jour n’est pas incrémental : l’exécution de l’archivage plusieurs fois par jour ne réduira pas le besoin en mémoire pour les archives des semaines, des mois ou de l’année. Matomo lira tous les journaux d’une journée complète pour traiter un rapport pour cette journée.
  • Une fois qu’un jour/semaine/mois/année est complet et a été traité, il sera mis en mémoire cache et ne sera pas traité à nouveau par Matomo.
  • Si vous ne configurez pas l’archivage pour qu’il s’exécute automatiquement, l’archivage se produira lorsqu’un utilisateur demandera un rapport Matomo. Cela peut être lent et offrir une mauvaise expérience à l’utilisateur (les utilisateurs devraient attendre N secondes). C’est pourquoi nous vous recommandons de configurer l’archivage automatique pour les sites Web de taille moyenne à grande (cliquez pour plus d’informations) comme expliqué ci-dessus.
  • Par défaut, lorsque vous désactivez les déclencheurs de navigateur pour l’archivage Matomo, cela ne désactive pas complètement le déclenchement de l’archivage comme vous pourriez vous y attendre. Les utilisateurs qui naviguent dans Matomo pourront toujours déclencher le traitement des archives dans un cas particulier : lorsqu’un segment personnalisé est utilisé. Pour s’assurer que les utilisateurs de votre Matomo ne déclencheront jamais aucun traitement de données, dans votre fichier config.ini.php vous devez ajouter le paramètre suivant sous la catégorie [General] :

    ; désactiver l’archivage des déclencheurs de navigateur pour toutes les requêtes (même celles avec un segment)
    browser_archiving_disabled_enforce = 1

Aide pour la commande core:archive

Voici la sortie de l’aide pour cette commande :

$ ./console help core:archive
Utilisation :
core:archive [–url= »… »] [–skip-idsites[= »… »]] [–skip-all-segments] [–force-idsites[= »… »]] [–skip-segments-today] [–force- periods[= »… »]] [–force-date-last-n[= »… »]] [–force-date-range[= »… »]] [–force-idsegments= »… »] [–concurrent-requests-per-website[= »… »]] [–concurrent-archivers[= »… »]] [–max-websites-to-process= »… »] [–max-archives-to-process= »… »] [–disable-scheduled-tasks] [–accept-invalid-ssl-certificate] [–php-cli-options[= »… »]] [–force-all-websites] [–force-report[= »… »]]

Options :
–url Force la valeur de cette option à être utilisée comme URL vers Matomo (Piwik).
Si votre système ne supporte pas l’archivage avec les processus CLI, vous devrez peut-être définir cette option pour que les requêtes HTTP d’archivage utilisent les URLs souhaitées.
–skip-idsites Si spécifié, l’archivage sera ignoré pour ces sites Web (dans le cas où ces identifiants de sites auraient été archivés).
–skip-all-segments Si spécifié, tous les segments seront ignorés pendant l’archivage.
–force-idsites Si spécifié, l’archivage sera effectué uniquement pour ces identifiants de sites (séparés par des virgules)
–skip-segments-today Si spécifié, les segments ne seront archivés que pour hier, mais pas pour aujourd’hui. Si le segment a été créé ou modifié récemment, il sera toujours archivé pour aujourd’hui et le paramètre sera ignoré pour ce segment.
–force-periods Si spécifié, l’archivage ne sera effectué que pour ces périodes (séparées par des virgules, par exemple jour, semaine, mois, année, intervalle)
–force-date-last-n Déclassé. Veuillez utiliser l’option de configuration INI « process_new_segments_from » à la place.
–force-date-range Si spécifié, l’archivage ne sera traité que pour les périodes incluses dans cet intervalle de dates. Format : AAAA-MM-JJ,AAAA-MM-JJ
–force-idsegments Si spécifié, seuls ces segments seront traités (si le segment doit être appliqué à un site en premier lieu).
Spécifiez les identifiants des segments stockés, et non les segments eux-mêmes, par exemple 1,2,3.
Note : si des segments identiques existent avec des ID différents, ils seront tous les deux ignorés, même si vous ne fournissez qu’un seul ID.
–concurrent-requests-per-website Lors du traitement d’un site Web et de ses segments, nombre de requêtes à traiter en parallèle (par défaut : 3)
–concurrent-archivers Nombre d’archiveurs maximum à exécuter en parallèle. En fonction de la façon dont vous démarrez l’archiveur en tant que cronjob, vous pouvez avoir besoin de doubler le nombre d’archiveurs autorisés si le même processus apparaît deux fois dans la sortie ps ex. (par défaut : false)
–max-websites-to-process Nombre maximum de sites Web à traiter lors d’une seule exécution de l’archiveur. Peut être utilisé pour limiter la durée de vie du processus, par exemple pour éviter d’augmenter l’utilisation de la mémoire.
–max-archives-to-process Nombre maximum d’archives à traiter lors d’une seule exécution de l’archiveur. Peut être utilisé pour limiter la durée de vie du processus, par exemple pour éviter d’augmenter l’utilisation de la mémoire.
–disable-scheduled-tasks Ignore l’exécution des tâches planifiées (envoi de rapports planifiés, optimisation de la base de données, etc.)
–accept-invalid-ssl-certificate Il n’est PAS recommandé d’utiliser cet argument. Au lieu de cela, vous devriez utiliser un certificat SSL valide !
Il peut être utile si vous avez spécifié –url=https://… ou si vous utilisez Matomo avec force_ssl=1
–php-cli-options Transmet les options de configuration de PHP à la commande CLI de PHP. Par exemple « -d memory_limit=8G ». Note : Ces options ne sont appliquées que si l’archiveur utilise la commande CLI et non HTTP. (par défaut : «  »)
–force-all-websites Force l’archivage de tous les sites Web.
–force-report Si spécifié, ne traite que les invalidations pour un rapport spécifique dans un plugin spécifique. La valeur doit être au format « MyPlugin.myReport ».
–help (-h) Affiche ce message d’aide
–quiet (-q) N’affiche aucun message
–verbose (-v|vv|vvv) Augmente la verbosité des messages : 1 pour une sortie normale, 2 pour une sortie plus verbeuse et 3 pour le débogage
–version (-V) Affiche la version de l’application
–ansi Force la sortie ANSI
–no-ansi Désactive la sortie ANSI
–no-interaction (-n) Ne pas poser de question interactive
–matomo-domain URL Matomo (protocole et domaine) ex. « http://matomo.example.org »
–xhprof Activer le profilage avec XHProf

Aide :
* Il est recommandé d’exécuter le script sans aucune option.
* Ce script doit être exécuté toutes les heures via la crontab ou en tant que daemon.
* Vous pouvez également l’exécuter via http:// en spécifiant le Super Utilisateur &token_auth=XYZ comme paramètre (‘Web Cron’),
mais il est recommandé de l’exécuter via la ligne de commande/CLI.
* Si vous avez des suggestions à propos de ce script, n’hésitez pas à en faire part à l’équipe à l’adresse feedback@matomo.org
* Profitez-en !

Donner un sens à la sortie de core:archive

Le journal de sortie de core:archive affiche des informations utiles sur le processus d’archivage, en particulier quels sites Web et quels segments sont en cours de traitement. Le résultat affiche en particulier :

  • l’ID du site Web en cours d’archivage : INFO [2020-03-31 21:16:29] 23146 Prétraitement pour l'identifiant du site Web = 1, période = mois, date = last3.
  • le nombre de segments pour ce site Web, dans cet exemple il y a 25 segments : INFO [2020-03-31 21:16:29] 23146 - pré-traitement du segment 1/25 countryName!=Algérie juin 15, 2023​​.
  • combien de sites Web restent à traiter dans la file d’attente de cet archiveur, dans cet exemple il a fini de traiter 2 sites Web sur 3 : INFO [2020-03-31 21:17:07] 23146 ID site Web archivé = 3, 4 demandes API, Temps passé : 18.622s [2/3 fait].
  • Si vous lancez plusieurs processus core:archive' en utilisant–concurrent-archivers’, vous pouvez distinguer les différents archiveurs concurrents en regardant le nombre après l’horodatage : INFO [2020-03-31 21:17:07] 23146 [...]. Chaque exécution de l’archiveur concurrent aura un numéro différent. Ainsi, si vous recherchez ce nombre dans vos journaux, vous pourrez trouver la sortie de ce fil core:archive particulier. Vous pouvez aussi mettre --concurrent-archivers à -1 ce qui indique un nombre illimité d’archiveurs concurrents.
    ​​

Si vous avez des questions ou des commentaires, veuillez utiliser le bouton « feedback » ci-dessous et nous ferons de notre mieux pour vous répondre.