Les Carnets de Byfeel domotique , Objets connectés , DIY , Programmation, Nouvelles Technologies ….

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 )

[adsense]

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.

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

Les commentaires sont fermés.