Monit, un outil simple de monitoring pour surveiller Jeedom.

Monitoring à l'ancienne

Sommaire

Edit 24 juillet 2019: Je ne conseille plus d’utiliser cet outil, systemd fait le job plus simplement.

Contexte

Pour ma domotique j’utilise la solution Jeedom. Cette dernière avait tendance ces derniers temps à planter, ou plus exactement, la base mysql, avait tendance à crasher. Très fatigant. En effet, un service de domotique se doit d’être fiable - ou au minimum constant - pour être vivable. Pour me laisser le temps de creuser les raisons de ces plantages, tout en maintenant les services, je me suis mis en quête d’un outil de monitoring, et de relance de service, lisible et simple à mettre en oeuvre. En ce domaine les solutions ne manquent pas: j’ai testé (rapidement) zabbix, nagios, centreon, mais en me faisant le constat que ces artilleries là n’étaient clairement pas dimensionné à mes besoins, qui sont très modestes.

En découvrant le tout simple monit j’ai été conquis. Un apt, un fichier de conf, et un restart de service et roule ma poule… Voyons donc ça.

Installation de Monit

~$ apt install monit
~$ nano /etc/monit/monitrc
    #Configuration de monit
    set daemon 90
    set alert courriel@toi.com
    set httpd port 2812 # port du service
    allow admin:monit # login et mdp
    #Configuration de l'alerte
    set mail-format {
    from: monit@votre.machine
    subject: $SERVICE $EVENT at $DATE
    message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}

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

    #De MySQL
    check process mysqld with pidfile /var/run/mysqld/mysqld.pid
    start program = "/etc/init.d/mysql start"
    stop program = "/etc/init.d/mysql stop"
    if failed unixsocket /var/run/mysqld/mysqld.sock then alert
    if failed unixsocket /var/run/mysqld/mysqld.sock then restart
    if 3 restarts within 5 cycles then timeout

    #De 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

    #De apache
    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

~$ systemctl restart monit.service

Bravo, c’est terminé. Rendez vous à l’adresse ip-de-votre-machine:2812 pour vérifier que tout va bien.

Configurer le serveur courriel

Je ne reçois pas les courriels d’alerte?

Si vous ne les recevez pas, peut être n’avez vous pas ce qu’il faut d’installé pour que votre machine y arrive. Voyons ça.

~$ apt install postfix
~$ nano /etc/aliases
    root:courriel@toi.com #ajoutez une ligne à la fin du fichier
~$ nano /etc/hostname
    jeedom.monadresse.com
~$ hostname jeedom.monadresse.com
~$ dpkg-reconfigure postfix

Puis sélectionnez envoie par site web, renseignez l’adresse de votre site, et laissez toutes les options comme configurées de base. C’est tout. Pour tester si vous recevez bien vos courriels.

~$ mail -s "Teste" courriel@toi.com < /dev/null