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
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
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/
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 :
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
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 )”
Merci beaucoup pour ce tuto, tout fonctionne bien après avoir suivi celui-ci
dommage que je possède une box smart officielle sinon je me serait empressé de tester