Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
monit [Le 08/07/2013, 12:17] – [Installation] 95.176.97.250 | monit [Le 14/01/2020, 06:55] (Version actuelle) – [Présentation] Actualisation du paragraphe sur m/monit qui datait de 2007. 78.251.109.36 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ====== Monit : Alerter et Réagir en cas de panne ====== | ||
+ | |||
+ | ===== Présentation ===== | ||
+ | |||
+ | |||
+ | //monit// est un outil de surveillance de services locaux. Il vérifie la | ||
+ | disponibilité des *daemons* présents sur le serveur qui l' | ||
+ | panne, //monit// peut alerter l' | ||
+ | |||
+ | La particularité de //monit// par rapport à d' | ||
+ | (// | ||
+ | déclencher des actions pour tenter de rétablir un service interrompu, | ||
+ | comme par exemple relancer un serveur //Apache// si il ne répond plus ou | ||
+ | vider la file d' | ||
+ | |||
+ | < | ||
+ | |||
+ | --- // | ||
+ | |||
+ | //monit// est un logiciel à la fois simple et puissant. À utiliser avec | ||
+ | précautions ! | ||
+ | |||
+ | Quelques infos : | ||
+ | |||
+ | * Licence : GPL | ||
+ | * Site officiel : http:// | ||
+ | |||
+ | |||
+ | |||
+ | Une solution de gestion distribuée de //monit//, appelée //m/monit// permet de superviser | ||
+ | à distance de multiples instances //monit//, c' | ||
+ | |||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | |||
+ | L' | ||
+ | |||
+ | $ apt-get install monit | ||
+ | |||
+ | Le paquet se trouve dans le dépôt // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | |||
+ | |||
+ | Dans premier temps, il convient d' | ||
+ | les paramètres généraux du démon monit. La configuration des services | ||
+ | surveillés sera abordée dans la partie suivante. | ||
+ | |||
+ | Éditer le fichier /// | ||
+ | suivantes : | ||
+ | < | ||
+ | set daemon | ||
+ | set logfile syslog facility log_daemon | ||
+ | set mailserver localhost | ||
+ | set mail-format { from: monit@serveurdev.example.com } | ||
+ | set alert root@localhost | ||
+ | set httpd port 2812 and | ||
+ | SSL ENABLE | ||
+ | PEMFILE | ||
+ | allow admin:test | ||
+ | </ | ||
+ | L' | ||
+ | //monit//. Un cycle correspond à l' | ||
+ | vérifications. | ||
+ | |||
+ | Cette configuration active le serveur //web// (//https//) de //monit// sur le | ||
+ | port //2812//. L' | ||
+ | messages d' | ||
+ | |||
+ | Le fichier de configuration est très clair et il est relativement | ||
+ | simple de modifier le comportement du *daemon* de surveillance. | ||
+ | |||
+ | Il faut ensuite engendrer un certificat //SSL//. Tout d' | ||
+ | répertoire qui accueillera le certificat : | ||
+ | |||
+ | $ mkdir /var/certs | ||
+ | $ cd /var/certs | ||
+ | |||
+ | Puis définir les options du certificat : | ||
+ | |||
+ | vi / | ||
+ | < | ||
+ | # create RSA certs - Server | ||
+ | | ||
+ | [ req ] | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | [ req_dn ] | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | [ cert_type ] | ||
+ | | ||
+ | </ | ||
+ | Puis procéder à la génération du certificat : | ||
+ | < | ||
+ | $ openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out / | ||
+ | $ openssl gendh 512 >> / | ||
+ | $ openssl x509 -subject -dates -fingerprint -noout -in / | ||
+ | $ chmod 700 / | ||
+ | </ | ||
+ | |||
+ | Dans un environnement de développement, | ||
+ | ne pas être nécessaire, | ||
+ | ci-dessus par les lignes : | ||
+ | < | ||
+ | set httpd port 2812 and | ||
+ | allow admin:monit | ||
+ | </ | ||
+ | L' | ||
+ | fréquence de surveillance (ici : 60 secondes). Pour cela on édite le | ||
+ | fichier /// | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | Il ne reste plus qu'à démarrer //monit// : | ||
+ | < | ||
+ | $ / | ||
+ | </ | ||
+ | Vérifier que le *daemon* est activé, en se connectant à l' | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Utilisation ===== | ||
+ | |||
+ | |||
+ | Pour surveiller un service donné, il suffit d' | ||
+ | //monitrc// et de spécifier : | ||
+ | |||
+ | * le fichier //PID// du service, | ||
+ | * les commandes de démarrage et d' | ||
+ | * l' | ||
+ | * la condition de test à effectuer, | ||
+ | * le(s) commande(s) à effectuer lorsque le test est positif. | ||
+ | |||
+ | Par exemple, voici comment redémarrer automatiquement le serveur //SSH// | ||
+ | s'il ne répond plus : :: | ||
+ | < | ||
+ | check process sshd with pidfile / | ||
+ | start program | ||
+ | stop program | ||
+ | if failed port 22 protocol ssh then restart | ||
+ | if 5 restarts within 5 cycles then timeout | ||
+ | </ | ||
+ | La dernière ligne permet d' | ||
+ | la configuration du serveur //SSH// est erronée. | ||
+ | |||
+ | Bien sûr il est possible de configurer des traitements d' | ||
+ | fins. Voici par exemple, une politique de surveillance d'// | ||
+ | < | ||
+ | check process apache with pidfile / | ||
+ | start program = "/ | ||
+ | stop program = "/ | ||
+ | if failed host www.example.com port 80 protocol http | ||
+ | and request "/ | ||
+ | if cpu is greater than 60% for 2 cycles then alert | ||
+ | if cpu > 80% for 5 cycles then restart | ||
+ | if totalmem > 500 MB for 5 cycles then restart | ||
+ | if children > 250 then restart | ||
+ | if loadavg(5min) greater than 10 for 8 cycles then stop | ||
+ | if 3 restarts within 5 cycles then timeout | ||
+ | </ | ||
+ | Dans cet exemple, //monit// vérifiera la présence d'un fichier | ||
+ | // | ||
+ | redémarré. | ||
+ | |||
+ | On note également qu'une alerte par courriel sera envoyé dès qu'// | ||
+ | utilisera plus de 60% des capacités du ou des processeurs. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Pour aller plus loin ===== | ||
+ | |||
+ | |||
+ | |||
+ | * Quelques exemples de configurations avancées : http:// | ||
+ | * Documentation : http:// | ||
+ | * Plusieurs tutoriels sur la configuration de Monit : http:// | ||
+ | |||
+ | |||
+ | |||