Monitorer les rapports d’erreur de Magento grâce à Monit

Gérez un envoi d'alerte avec Monit lorsqu'un certain nombre de rapports d'erreurs sont générés par Magento

Magento et les rapports d’erreurs

Magento implémente un système d’erreur permettant de collecter les exceptions émises par PHP. La « backtrace » est alors enregistrée dans un fichier de rapport et un message d’erreur est affiché sur le site.

reports-magento
Illustration d’un dossier de rapport d’erreurs de Magento

En tant qu’administrateur, vous aimeriez être au courant lorsqu’un tel rapport est généré en production afin de corriger le problème. En effet, un grand nombre de rapports générés dans un court laps de temps peut signifier plusieurs choses dont un éventuel piratage.

Monit, le chien de garde dont votre serveur à besoin

Nous allons nous servir de monit qui nous enverra une alerte lorsqu’un seuil d’erreur est dépassé.
Monit agit comme un « chien de garde » sur vos processus. Il est fréquemment utilisé pour redémarrer un service lorsque celui-ci plante par exemple, avec la capacité de conditionner le redémarrage ou de chaîner le redémarrage avec un appel de script etc…

Attention, nous partons du principe que monit est installé est configuré pour que les alertes emails soient bien envoyées.

Ici, pour notre besoin, nous cherchons à être alerté lorsque Magento génère plus de 5 rapports d’erreur dans l’intervalle de 10 minutes.

Etant donné que Monit accepte la sortie de scripts shell, la réalisation du script qui permet de compter les rapports est assez simple.

Compter les rapports d’erreur

Créer le fichier watch_magento_report.sh (en dehors de /etc/munin/*) et rendez le executable (chmod +x)

#!/bin/sh
ERRORS=`find /var/www/magento/var/report/ -cmin -10 | wc -l | awk '{print $1-1}'`
#echo $ERRORS
exit $ERRORS

Vous pouvez dé-commenter le « echo » pour tester le script si le find fonctionne et renvoie bien quelque chose.
Une fois vos tests terminés, commentez le « echo » et veillez à bien laisser le « exit ». Monit fonctionne avec le code retour d’exécution.

Faire en sorte que Monit vous alerte

Maintenant que le script est créé, il faut ajouter une tache à Monit à surveiller. Notre besoin étant très simple, nous ne ferons qu’envoyer un mail sans autre action.
Créer le fichier /etc/monit/conf.d/magento et insérer le contenu suivant :

check program MAGENTO_ERRORS with path "/var/scripts/monit/watch_magento_errors.sh"
    if status > 5 then alert
    group www

Attention, faites attention à ce que le « path » corresponde à l’endroit où vous avez créé le script « watch_magento_report.sh ».
Une fois que le scénario est enregistré, relancez monit et vous commencerez à recevoir des alertes.

Nodelia

Consultant spécialisée dans le développement de sites e-commerce.

Devops / Freelance Magento / Optimisation


Zend Certified Engineer Magento Certified Developer