Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| monit [Le 18/05/2008, 17:11] 90.17.203.156, 213.95.41.13 | monit [Le 03/12/2022, 11:52] (Version actuelle) freechelmi | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag>administration systeme serveur vétuste}} | ||
| ====== Monit : Alerter et Réagir en cas de panne ====== | ====== Monit : Alerter et Réagir en cas de panne ====== | ||
| Ligne 8: | Ligne 9: | ||
| panne, //monit// peut alerter l'administrateur du système. | panne, //monit// peut alerter l'administrateur du système. | ||
| - | La particularité de //monit// par rapport à d'autres solutions similaires | + | //monit// peut comme d'autres solutions similaires | 
| - | (//Zabbix//, //Nagios//) réside dans le fait qu'il est capable de | + | (//Zabbix//, //Nagios//) déclencher des actions pour tenter de rétablir un service interrompu, | 
| - | 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 | comme par exemple relancer un serveur //Apache// si il ne répond plus ou | ||
| vider la file d'attente d'un serveur //Postfix// en cas d'engorgement. | vider la file d'attente d'un serveur //Postfix// en cas d'engorgement. | ||
| Ligne 24: | Ligne 24: | ||
| - | Une solution de gestion distribuée de //monit// est en cours | + | Une solution de gestion distribuée de //monit//, appelée //m/monit// permet de superviser | 
| - | d'élaboration. Cette solution s'appelera //m/monit// et devrait être | + | à distance de multiples instances //monit//, c'est-à-dire les administrer et centraliser des informations historiques et statistiques envoyées par chaque instance //monit// gérée. | 
| - | disponible dans le courant de l'année 2007. //m/monit// est un système | + | |
| - | de gestion à distance de multiples instances //monit//. C'est aussi un | + | |
| - | serveur à qui les instances //monit// envoient des informations historiques | + | |
| - | et statistiques. | + | |
| Ligne 35: | Ligne 31: | ||
| - | L'installation est très simple : :: | + | L'installation est très simple : | 
| $ apt-get install monit | $ apt-get install monit | ||
| Le paquet se trouve dans le dépôt //Universe// | Le paquet se trouve dans le dépôt //Universe// | ||
| + | |||
| Ligne 53: | Ligne 50: | ||
| Éditer le fichier ///etc/monit/monitrc.// afin d'obtenir les options | Éditer le fichier ///etc/monit/monitrc.// afin d'obtenir les options | ||
| suivantes : | suivantes : | ||
| - | + | <file> | |
| - | set daemon  60 | + | set daemon  60 | 
| - | set logfile syslog facility log_daemon | + | set logfile syslog facility log_daemon | 
| - | set mailserver localhost | + | set mailserver localhost | 
| - | set mail-format { from: monit@serveurdev.example.com } | + | set mail-format { from: monit@serveurdev.example.com } | 
| - | set alert root@localhost | + | set alert root@localhost | 
| - | set httpd port 2812 and | + | set httpd port 2812 and | 
| - | SSL ENABLE | + | SSL ENABLE | 
| - | PEMFILE  /var/certs/monit.pem | + | PEMFILE  /var/certs/monit.pem | 
| - | allow admin:test | + | allow admin:test | 
| + | </file> | ||
| L'instruction //set daemon// permet de définir la durée d'un "cycle" | L'instruction //set daemon// permet de définir la durée d'un "cycle" | ||
| //monit//. Un cycle correspond à l'intervalle (en secondes) entre deux | //monit//. Un cycle correspond à l'intervalle (en secondes) entre deux | ||
| Ligne 84: | Ligne 81: | ||
| vi /var/certs/monit.cnf | vi /var/certs/monit.cnf | ||
| + | <file> | ||
| # create RSA certs - Server | # create RSA certs - Server | ||
| RANDFILE = ./openssl.rnd | RANDFILE = ./openssl.rnd | ||
| Ligne 109: | Ligne 106: | ||
| [ cert_type ] | [ cert_type ] | ||
| nsCertType = server | nsCertType = server | ||
| + | </file> | ||
| Puis procéder à la génération du certificat : | Puis procéder à la génération du certificat : | ||
| - | + | <code> | |
| - | $ openssl req -new -x509 -days 365 -nodes -config ./monit.cnf | + | $ openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem | 
| - | -out /var/certs/monit.pem -keyout /var/certs/monit.pem | + | |
| $ openssl gendh 512 >> /var/certs/monit.pem | $ openssl gendh 512 >> /var/certs/monit.pem | ||
| $ openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem | $ openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem | ||
| $ chmod 700 /var/certs/monit.pem | $ chmod 700 /var/certs/monit.pem | ||
| + | </code> | ||
| - | + | Dans un environnement de développement, la sécurisation par //SSL// peut | |
| - | Dans un environnement de développement, la sécurisation par //SSL// n'est | + | ne pas être nécessaire, on peut donc avantageusement remplacer la procédure | 
| - | pas nécessaire, on peut donc avantageusement remplacer la procédure | + | |
| ci-dessus par les lignes : | ci-dessus par les lignes : | ||
| + | <code> | ||
| set httpd port 2812 and | set httpd port 2812 and | ||
| - | allow admin:monit | + | allow admin:monit | 
| + | </code> | ||
| L'étape suivante consiste à activer le *daemon* par défaut et définir la | L'étape suivante consiste à activer le *daemon* par défaut et définir la | ||
| fréquence de surveillance (ici : 60 secondes). Pour cela on édite le | fréquence de surveillance (ici : 60 secondes). Pour cela on édite le | ||
| fichier ///etc/default/monit// : | fichier ///etc/default/monit// : | ||
| + | <file> | ||
| startup=1 | startup=1 | ||
| CHECK_INTERVALS=60 | CHECK_INTERVALS=60 | ||
| + | </file> | ||
| Il ne reste plus qu'à démarrer //monit// : | Il ne reste plus qu'à démarrer //monit// : | ||
| + | <code> | ||
| $ /etc/init.d/monit start | $ /etc/init.d/monit start | ||
| + | </code> | ||
| Vérifier que le *daemon* est activé, en se connectant à l'adresse : :: | Vérifier que le *daemon* est activé, en se connectant à l'adresse : :: | ||
| + | <code> | ||
| + | http://serveurdev.exemple.fr:2812/ | ||
| + | </code> | ||
| - | http://serveurdev.exemple.fr:2812/ | ||
| ===== Utilisation ===== | ===== Utilisation ===== | ||
| Ligne 155: | Ligne 153: | ||
| Par exemple, voici comment redémarrer automatiquement le serveur //SSH// | Par exemple, voici comment redémarrer automatiquement le serveur //SSH// | ||
| s'il ne répond plus : :: | s'il ne répond plus : :: | ||
| + | <file> | ||
| check process sshd with pidfile /var/run/sshd.pid | check process sshd with pidfile /var/run/sshd.pid | ||
| start program  "/etc/init.d/ssh start" | start program  "/etc/init.d/ssh start" | ||
| Ligne 161: | Ligne 159: | ||
| if failed port 22 protocol ssh then restart | if failed port 22 protocol ssh then restart | ||
| if 5 restarts within 5 cycles then timeout | if 5 restarts within 5 cycles then timeout | ||
| + | </file> | ||
| La dernière ligne permet d'éviter des boucles infinies, notamment si | La dernière ligne permet d'éviter des boucles infinies, notamment si | ||
| la configuration du serveur //SSH// est erronée. | la configuration du serveur //SSH// est erronée. | ||
| Ligne 167: | Ligne 165: | ||
| Bien sûr il est possible de configurer des traitements d'erreurs plus | Bien sûr il est possible de configurer des traitements d'erreurs plus | ||
| fins. Voici par exemple, une politique de surveillance d'//Apache// : :: | fins. Voici par exemple, une politique de surveillance d'//Apache// : :: | ||
| + | <file> | ||
| check process apache with pidfile /var/run/apache2.pid group www | check process apache with pidfile /var/run/apache2.pid group www | ||
| start program = "/etc/init.d/apache2 start" | start program = "/etc/init.d/apache2 start" | ||
| Ligne 179: | Ligne 177: | ||
| if loadavg(5min) greater than 10 for 8 cycles then stop | if loadavg(5min) greater than 10 for 8 cycles then stop | ||
| if 3 restarts within 5 cycles then timeout | if 3 restarts within 5 cycles then timeout | ||
| + | </file> | ||
| Dans cet exemple, //monit// vérifiera la présence d'un fichier | Dans cet exemple, //monit// vérifiera la présence d'un fichier | ||
| //monit/token// sur le serveur. En cas d'absence le serveur sera | //monit/token// sur le serveur. En cas d'absence le serveur sera | ||
| Ligne 193: | Ligne 191: | ||
| - | * Quelques exemples de configurations avancées :: | + | * Quelques exemples de configurations avancées : https://mmonit.com/wiki/Monit/ConfigurationExamples | 
| - | + | * Documentation : https://mmonit.com/monit/documentation/monit.html | |
| - | http://www.tildeslash.com/monit/doc/examples.php | + | * Plusieurs tutoriels sur la configuration de Monit : http://www.it-connect.fr/tutoriels/securite/supervision/monit/ | 
| - | * Plus de détails sur //m/monit// :: | ||
| - | http://www.tildeslash.com/mmonit/ | ||