Introduction
Monit est un programme utile qui surveille et gère automatiquement les programmes du serveur pour s'assurer non seulement qu'ils restent en ligne de manière cohérente, mais que la taille du fichier, la somme de contrôle ou les autorisations sont toujours correctes.
# yum install monit ( To install monit On RedHat/CentOS/Fedora/ ) # sudo apt-get install monit ( To install monit On Ubuntu/Debian )
Configurer le démon Monit
# vi /etc/monit.conf ( Configuration file in RedHat/CentOS/Fedora/ ) # vi /etc/monit/monitrc ( Configuration file in Ubuntu/Debian )
AJOUTER MAINTENANT LES SERVICES AU FICHIER DE CONFIGURATION MONIT
Ouvrez le fichier de configuration, c'est-à-dire
For RedHat/CentOS/Fedora (# vi /etc/monit.conf) For Ubuntu/Debian (# vi /etc/monit/monitrc)
Supprimez toutes les lignes du fichier de configuration et ajoutez les lignes ci-dessous. (chaque ligne est définie brièvement ci-dessous)
Définir l'intervalle du démon
Il s'agit de l'intervalle (en secondes) auquel Monit exécute ses tests. La valeur que vous choisirez dépendra du nombre de tests que vous définissez. Si nous modifions cette valeur, vous devrez redémarrer Monit.
# check services at 30 seconds of intervals set daemon 30
Définir le fichier journal
# set logfile syslog facility log_daemon set logfile /var/log/monit.log
Vérifiez les paramètres d'utilisation de la mémoire et redémarrez
##To check the memory usage and restart the services. check system localhost if memory usage > 93% then exec "/usr/local/bin/httpd-start"
Vérifiez le service HTTPD et redémarrez
Ici, le service Httpd est surveillé par monit, c'est-à-dire lorsque le service n'est pas en cours d'exécution ou lorsque le loadavg est supérieur, alors monit exécutera le service httpd pour redémarrer
#To check the Httpd service and restart the services. # Httpd check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/usr/local/bin/httpd-start" stop program = "/usr/local/bin/httpd-kill" if loadavg (1min) greater than 10 for 1 cycles then restart
Vérifiez le service mysqld et redémarrez
Ici, le service Mysqld est surveillé par monit, c'est-à-dire lorsque le service n'est pas en cours d'exécution ou lorsque le loadavg est supérieur, alors monit exécutera le service Mysql pour redémarrer
#To check the mysql service and restart the services. # mysqld check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if memory usage > 70% for 1 cycles then restart if failed host 127.0.0.1 port 3306 then restart if loadavg (1min) greater than 5 for 1 cycles then restart
De la même manière, nous pouvons ajouter n'importe quel service qui doit être surveillé par monit et redémarrer
Une fois tous les services ajoutés sur le fichier de configuration. le fichier de configuration ressemble à ci-dessous..
# check services at 2-minute intervals set daemon 30 # set logfile syslog facility log_daemon set logfile /var/log/monit.log ##To check the memory usage and restart the services. check system localhost if memory usage > 93% then exec "/usr/local/bin/httpd-start" #To check the Httpd service and restart the services. # Httpd check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/usr/local/bin/httpd-start" stop program = "/usr/local/bin/httpd-kill" if loadavg (1min) greater than 10 for 1 cycles then restart #To check the mysql service and restart the services. # mysqld check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if memory usage > 70% for 1 cycles then restart if failed host 127.0.0.1 port 3306 then restart if loadavg (1min) greater than 5 for 1 cycles then restart
NOTE :Puisque nous avons défini la ligne suivante dans le fichier de configuration
start program ="/usr/local/bin/httpd-start"
stop program ="/usr/local/bin/httpd-kill"
Nous devons ajouter les scripts httpd-start, httpd-kill, c'est-à-dire
créez un fichier avec la commande suivante et ajoutez les lignes suivantes
vi /usr/local/bin/httpd-start
#!/bin/bash /usr/bin/killall -9 httpd; /usr/bin/killall -9 php-cgi; /usr/bin/ipcs |grep apache | /bin/cut -d" " -f2 | /usr/bin/xargs /usr/bin/ipcrm sem {}; /bin/sleep .5; /usr/sbin/apachectl start #/sbin/swapoff -a #/sbin/swapon -a exit 0;
maintenant enregistrez et quittez en utilisant la commande
:wq!
Maintenant pareil pour le script httpd-kill
créez un fichier avec la commande suivante et ajoutez les lignes suivantes
vi /usr/local/bin/httpd-kill
#!/bin/bash /usr/bin/killall -9 httpd; /usr/bin/ipcs |grep apache | /bin/cut -d" " -f2 | /usr/bin/xargs /usr/bin/ipcrm sem {}; /bin/sleep .5; exit 0;
de la même manière que nous devons définir pour les scripts Mysqld..
Une fois que vous avez configuré tous les programmes pour la surveillance, vérifiez la syntaxe de monit pour les erreurs. Si vous trouvez des erreurs, corrigez-les, il n'est pas si difficile de comprendre ce qui ne va pas. En utilisant la commande ci-dessous
# monit -t
Si le fichier de configuration de monit est correct, vous obtenez un message du type "Syntaxe du fichier de contrôle OK", ou si vous ne voyez aucune erreur,
Après avoir corrigé toutes les erreurs possibles, vous pouvez taper la commande suivante pour démarrer le service de surveillance.
# /etc/init.d/monit start
Vérification du service Monit
Vous pouvez vérifier que le service de surveillance est démarré en vérifiant le fichier journal.
# tail -f /var/log/monit
L'exemple de sortie de journal est le suivant
[BDT Apr 3 03:06:04] info : Starting monit HTTP server at [localhost:2812] [BDT Apr 3 03:06:04] info : monit HTTP server started [BDT Apr 3 03:06:04] info : 'e2enetworks.com' Monit started [BDT Apr 3 03:06:04] error : 'nginx' process is not running [BDT Apr 3 03:06:04] info : 'nginx' trying to restart [BDT Apr 3 03:06:04] info : 'nginx' start: /etc/init.d/nginx