Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
monit [Le 27/04/2007, 19:38] daamien créée |
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 52: | 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 83: | 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 91: | Ligne 89: | ||
distinguished_name = req_dn | distinguished_name = req_dn | ||
x509_extensions = cert_type | x509_extensions = cert_type | ||
- | |||
[ req_dn ] | [ req_dn ] | ||
countryName = Country Name (2 letter code) | countryName = Country Name (2 letter code) | ||
countryName_default = MO | countryName_default = MO | ||
- | |||
stateOrProvinceName = Ile de France | stateOrProvinceName = Ile de France | ||
stateOrProvinceName_default = Monitoria | stateOrProvinceName_default = Monitoria | ||
Ligne 110: | 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 156: | 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 162: | 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 168: | 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 180: | 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 194: | 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/ | ||