Monit: Monitoring d'une box domotique Domoticz, Jeedom, Home Assistant • Domotique et objets connectés à faire soi-même

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.

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&param=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.

xrvlixfe3diz67buczdl-4844722

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 ?