Monit est un programme qui permet de surveiller le bon fonctionnement d’un serveur et des programmes critiques. Lorsqu’on commence à domotiser son domicile, on souhaite que tout fonctionne parfaitement en permanence. Monit va nous permettre de surveiller les paramètre vitaux de l’ordinateur ou du Raspberry Pi. Par exemple que la charge CPU n’est pas trop élevée, que la RAM disponible est suffisante, etc…
De même, on peut surveiller un serveur web, ce qui nous permettra de vérifier que le serveur domotique fonctionne toujours. Monit est capable de relancer un service, par exemple redémarrer le service Domoticz et redémarrer l’ordinateur (ou le Raspberry Pi) après plusieurs échecs consécutifs.
Pour ce tutoriel, j’ai utilisé ma box domotique Domoticz installée sur un Raspberry Pi 3. Je me suis appuyé sur cet article en Anglais qui explique comment surveiller Domoticz à l’aide de Monit.
Sommaire
- 1 Installer Monit
- 2 Configurer Monit
- 3 Définit l’intervalle de surveillance
- 4 Configurer un email d’envoi des notifications
- 5 Configurer le webserver Monit
- 6 Surveiller Domoticz
- 7 Surveiller le fichier de la base de données domoticz.db
- 8 Mise en service du monitoring
- 9 Recevoir des notifications en français.
- 10 Charger une nouvelle configuration
- 11 Connaître l’état du monitoring
- 12 Accéder à l’interface WEB
- 13 Suspendre la surveillance
- 14 Mises à jour
Installer Monit
On installe Monit tout simplement à l’aide de la commande apt-get install. L’installation ne dure que quelques minutes.
sudo apt-get install monit
Configurer Monit
On configure Monit à l’aide d’un fichier de configuration monitrc qui se trouve dans le répertoire /etc/monit/.
Ouvrez le fichier de configuration avec la commande
sudo nano /etc/monit/monitrc
Définit l’intervalle de surveillance
On peut définir la fréquence de surveillance (serveur, logiciels…), décaler le démarrage de la surveillance après de démarrage ainsi que le chemin vers le journal (log). Allez à Global Section
- set daemon 300 : vérifie les services toutes les 300 secondes (5 minutes)
- with start delay 300 : décale la première vérification de 300 secondes après le démarrage. Laisse le temps à tous les services le temps de démarrer ce qui évite de fausses erreurs
- set logfile /var/log/monit.log : permet de définir un chemin personnel pour le journal
Un cycle (dans le jargon Monit) correspond à un lancement du service.
Configurer un email d’envoi des notifications
Monit est capable d’envoyer une notification par email en cas de changement important ou d’alerte. Trouvez la ligne “set mailserver mail.bar.baz”. Vous pouvez envoyer une notification par email depuis un compte Gmail ou POP3. Modifiez le bloc en fonction de vos paramètres et copiez le dans le fichier de configuration monitrc.
Envoi depuis un compte Gmail
Si vous utilisez la vérification en 2 étapes de Gmail, vous devez créer une nouvelle application ici
set mailserver smtp.gmail.com port 587
username "yourmailaddress@gmail.com" password "MYPASSWORD"
using tlsv1
with timeout 30 seconds
set alert email@gmail.com
Envoi depuis un compte POP3
set mailserver smtp.yourprovider.com port 25
with timeout 30 seconds
set mail-format { from: email@provider.com }
set alert email@provider.com
Configurer le webserver Monit
Monit dispose de son propre webserver. Il n’est pas actif par défaut au moment de l’installation. Il est nécessaire de l’activer pour pouvoir surveiller Domoticz. Vous pourrez aussi avoir accès à une interface web qui résume l’activité de votre box domotique. Trouvez la section set httpd port 2812 et dé-commentez les lignes. On peut gérer très précisément la sécurité de Monit.
set httpd port 2812 and
# use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow 0.0.0.0/0.0.0.0
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
L’interface web sera disponible sur le port 2812 de la box domotique. Par exemple 192.168.1.24:2812
Si vous ne voulez pas que l’interface Web soit disponible depuis un autre ordinateur, décommentez la ligne use address localhost. Au contraire la ligne allow 0.0.0.0/0.0.0.0 permet soit d’accepter tous les postes soit uniquement le poste spécifié. Le premier bloc 0.0.0.0 correspond à son adresse ip, le second bloc 0.0.0.0 correspondant au masque du réseau (par exemple 255.255.255.0).
Vous pouvez définir un utilisateur (ici admin) et son mot de passe (ici monit).
Surveiller Domoticz
Cette règle permet de surveiller le process Domoticz. Pour cela on fait une requête au serveur et on récupère au format JSON l’état du serveur
check process domoticz with pidfile /var/run/domoticz.pid
start program = "/etc/init.d/domoticz.sh start"
stop program = "/etc/init.d/domoticz.sh stop"
if failed
url http://127.0.0.1:8080/json.htm?type=command¶m=getversion
and content = '"status" : "OK"'
for 2 cycles
then restart
if 5 restarts within 5 cycles then exec "/sbin/reboot"
Voici ce que serveur Domoticz renvoie si on l’interroge depuis le réseau local
{
"DomoticzUpdateURL" : "http://www.domoticz.com/download.php?channel=stable&type=release&system=linux&machine=armv7l",
"HaveUpdate" : false,
"Revision" : 4834,
"SystemName" : "linux",
"build_time" : "2016-03-02 08:43:51",
"hash" : "8398125",
"status" : "OK",
"title" : "GetVersion",
"version" : "3.4834"
}
Le script Monit récupère la valeur de la clé status et vérifie si elle est égale à OK. Après 2 cycles d’échec le service Domoticz est redémarré. Après 5 cycles en échec, l’ordinateur ou le Raspberry Pi est redémarré.
Vous pouvez également ajouter cette règle (entre le then restart et le if 5 restart) qui permet de redémarrer le Raspberry Pi si la charge CPU dépasse 70% durant 3 cycles.
Surveiller le fichier de la base de données domoticz.db
Ajoutez cette règle pour surveiller la base de données et recevoir une alerte si le checksum est incorrect.
check file domoticz.db
with path /home/pi/domoticz/domoticz.db
if changed checksum
then alert
Mise en service du monitoring
On commence par vérifier que la syntaxe du fichier de configuration est correcte avec la commande
pi@raspberrypi:~$ sudo monit -t
Control file syntax OK
Si vous obtenez Control file syntax OK, il n’y a aucune erreur dans votre fichier de configuration. Sinon la ligne posant problème est indiquée. Par exemple j’ai saisi sete au lieu de set à la ligne 19.
/etc/monit/monitrc:19: syntax error 'sete'
Une fois que tout est correct, on peut démarrer Monit
sudo monit start all
Quelques secondes après le démarrage vous allez recevoir un email qui vous confirme le lancement du monitoring
Action done Service domoticz Date: Mon, 03 Oct 2016 10:28:11 Action: alert Host: myhost.mydomain.tld Description: start action done Your faithful employee, Monit
Recevoir des notifications en français.
Vous voudriez bien recevoir des notifications (un peu) en français, cherchez la ligne et copiez le bloc suivant (après l’avoir personnalisé). Attention, les caractères accentués ne sont pas supportés. Tout n’est pas traduisible toutefois.
set mail-format { from: monit@$HOST subject: Alerte Monit -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Serveur: $HOST Description: $DESCRIPTION Envoye depuis la box Domoticz, Monit }
Sauvegardez le fichier (Ctrl+X) puis O. Puis
sudo service monit reload
Charger une nouvelle configuration
Après tout changement dans le fichier de configuration, exécutez cette commande pour les appliquer.
sudo service monit reload
Connaître l’état du monitoring
Exécutez cette commande pour connaître l’état du monitoring
sudo monit status
On retrouve bien le monitoring du serveur (CPU, mémoire, swap…) et le process Domoticz surveillé.
Accéder à l’interface WEB
Si vous avez configuré les permissions permettant d’accéder à l’interface WEB depuis un ordinateur de votre réseau local, ouvrez un navigateur internet et saisissez l’adresse ip de la box domotique suivi de :2812. Connectez vous avec l’utilisateur et mot de passe autorisé.
La première page (Home) contient un résumé du système.
Cliquez sur myhost.mydomain.tld pour accéder au détail du serveur
Cliquez maintenant sur Domoticz. On retrouve les règles de surveillance. En descendant en bas de la page, on dispose aussi de 4 commandes
- Start service : pour démarrer Domoticz
- Stop service : pour arrêter Domoticz. Pratique pour débrancher une passerelle et éviter de faire planter Domoticz
- Restart service : pour redémarrer le service Domoticz
- Disable monitoring : pour arrêter de surveiller Domoticz. C’est pratique lors d’une mise à jour de Domoticz.
Suspendre la surveillance
Dans certain cas, on souhaite arrêter la surveillance de Domoticz. Par exemple lorsqu’on fait une mise à jour dont le temps va certainement dépasser la fréquence de monitoring. Dans ce cas, on peut suspendre le monitoring. Le plus simple est d’utiliser l’interface web (déjà vu ci-dessus). Sinon, arrêter le monitoring à l’aide de la commande suivante :
sudo monit stop all
et pour relancer
sudo monit start all
Durant un arrêt du monitoring, l’interface web reste accessible.
Dans ce tutoriel nous n’avons vu qu’une petite partie des capacités de monitoring de Monit. Le fichier de configuration contient beaucoup d’autres paramètres pré-configurés qu’il suffira d’adapter à vos besoins et configuration : surveillance d’un serveur Apache, surveiller les permissions sur des fichiers (pourquoi pas la santé de la base de données ou des scripts Domoticz)… Petit regret toutefois, il n’y a pas de représentation graphique. Il faut passer à la version M/Monit qui est payante.
Mises à jour
7/10/2016 monitoring de domoticz.db
Avez-vous aimé cet article ?