Monitorer votre serveur Domotique ( jeedom ou autre )

Le but de cet article , est d’expliquer comment mettre en place le service “monit” sur une box domotique à base de linux . Cette méthode peut s’appliquer à tout autre serveur sur un OS Linux que l’on désire “monitorer” .

Monit est un outil de surveillance des services locaux sous linux. En cas de défaillance d’un service , il sera en mesure de vous prévenir et de redémarrer automatiquement ce dernier , afin de maintenir votre serveur opérationnel.

Installation de monit

Pour installer le service , connecter vous à votre serveur , et lancer dans le shell , les lignes de commandes suivantes ( en mode admin ou par la commande sudo ):

// pour mettre a jour le systeme
apt-get update
apt-get install

// installation du service
apt-get install monit

une fois installé , il suffit d’exécuter les lignes suivantes pour démarrer le service et l’activer ( toujours en mode super user )

systemctl start monit
systemctl enable monit

Configuration de Monit

Une fois monit installé , je vais pouvoir commencer à configurer le service.
Pour cela , il va falloir éditer le fichier de configuration “monitrc”.

nano /etc/monit/monitrc

Fichier de configuration de monit
fichier de configuration monitrc

Voici les lignes à modifier : ( sous nano , CSTRL + o pour ecrire et CTRL + x pour sortir )


set daemon 120  ( indique le temps entra chaque surveillance des services )

Activation de l’interface WEB de monit.
set httpd port 2812 and

allow  admin:monit
il est possible de modifier le login et le mot de passe, Je laisse les valeurs par défaut .

Si besoin d’être prévenu par mail , d’une alerte Monit , il va falloir configurer le serveur de messagerie .
set mailserver smtp.mail.fr
Indiquer le serveur smtp d’envoie de mail

L’adresse mail , qui recevra les alertes monit .
set alert systemm@monmail.fr

Une fois le fichier modifié , redémarré le service par la commande suivante :

systemctl restart monit

Je peux accéder à monit , maintenant via son interface WEB , il suffit de taper la commande suivante : http://adresse_ip_serveur:2812

Je m’identifie , avec le login admin et le mot de passe par défaut monit

Interface WEB de monit
monit , interface WEB

il est possible aussi , d’avoir le statut de monit en ligne de commande , en exécutant la commande suivante :  monit status

Ajouter surveillance d’un service

Lors de l’installation de monit , ce dernier ajoute de nombreux fichiers de configurations pour les services les plus courant.
Ces fichiers se trouvent dans le répertoire suivant :

/etc/monit/conf-available/

exemple de fichier config des services à monitorer
liste des fichiers exemples pour service à monitorer

Par exemple , pour commencer à surveiller le service apache , il suffit de créer un lien sur le fichier apache2 et le mettre dans le répertoire /etc/monit/conf-enabled . l’intérêt de passer par le lien , et qu’il peut être facilement supprimé si vous voulez arrêtez de surveiller le service .

ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/

puis de relancer le service .

systemctl restart monit

Que contient le fichier apache2 :

check process apache with pidfile /var/run/apache2/apache2.pid
   group www
   group apache
   start program = "/etc/init.d/apache2 start"
   stop program  = "/etc/init.d/apache2 stop"
   if 4 restarts within 20 cycles then timeout
   if failed host localhost port 80 with protocol http and request "/server-status" with timeout 25 seconds for 4 times within 5 cycles then restart
   depend apache_bin
   depend apache_rc

 check file apache_bin with path /usr/sbin/apache2
   group apache
   include /etc/monit/templates/rootbin

 check file apache_rc with path /etc/init.d/apache2
   group apache
   include /etc/monit/templates/rootbin

Je vous invite , a parcourir la documentation de monit  , afin de comprendre ou écrire votre propre script.

Ici l’instruction check , vérifie par le biais de l’identifiant unique pid si le service apache est lancé. Puis les deux lignes de commande start et stop , sont les commandes à lancés pour démarrer ou exécuter le service .

Les if , permettent de mettre des conditions en fonction d’une non réponse du service. Quand a group , permet de définir des groupes pour des démarrages ou des arrêts groupés des services.

exemple de script minimum , proposé dans la doc de Jeedom ( avec juste les lignes nécessaires ):

# Apache (test sur port 80)
check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/etc/init.d/apache2 start"
    stop  program = "/etc/init.d/apache2 stop"
       if failed port 80 for 2 cycles then restart

Dans le cas de mon serveur jeedom , je vais activer aussi , mysql et cron

ln -s /etc/monit/conf-available/cron /etc/monit/conf-enabled/
ln -s /etc/monit/conf-available/mysql /etc/monit/conf-enabled/

Je me sers aussi de ssh et fail2ban , pour protéger mon serveur.

je crée donc deux fichiers dans le dossier conf-available : sshd et fail2ban

touch sshd
touch fail2ban

j’édite ensuite le fichier sshd , avec nano et je copie ces lignes :

check process sshd with pidfile /run/sshd.pid
start program  "/etc/init.d/ssh start"
stop program  "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

puis le fichier fail2ban

check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
start program = "/etc/init.d/fail2ban start"
stop  program = "/etc/init.d/fail2ban stop"
if failed unixsocket /var/run/fail2ban/fail2ban.sock then restart
if 5 restarts within 5 cycles then timeout

puis activer ces script en les liants aux dossier enable

ln -s /etc/monit/conf-available/sshd /etc/monit/conf-enabled/
ln -s /etc/monit/conf-available/fail2ban /etc/monit/conf-enabled/

Puis on redémarre le service monit.

Ce qui donne :

surveillance des principaux services utilisés dans ma box jeedom

Sans passer par l’interface Web , il est possible en ligne de commande ( par exemple sous ssh ) d’avoir un résumé de l’état des services , avec la commande :  monit summary

monit summary

ou monit status , pour un état plus détaillé.

Sur ce lien , vous trouverez des exemples pour la plupart des services.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

2 commentaires sur “Monitorer votre serveur Domotique ( jeedom ou autre )”

%d blogueurs aiment cette page :