Monit est un programme de monitoring pour Linux qui vous permet de :
- surveiller les services souhaités toutes les x minutes
- recevoir des alertes lorsqu'un service commence à consommer trop de ressource CPU ou de mémoire vive
- redémarrer le service quand il commence à devenir instable (ainsi vos services ne deviendront pas inaccessibles très longtemps puisqu'ils seront redémarré automatiquement en cas de problème)
- surveiller les partitions de votre disque dur pour recevoir une alerte lorsque le disque dur ne possède plus assez d'espace libre.
Tutoriel testé sous Ubuntu 12.04 et Debian 7.7.0.
Pour commencer, installez monit en tapant ceci :
Bash
apt-get install monit
Pour configurer monit, vous devez créer un fichier dans le dossier "/etc/monit/conf.d/".
En effet, à la fin du fichier "/etc/monit/monitrc" qui sert de documentation et de mini tutoriel, vous verrez la ligne "include /etc/monit/conf.d/*" en bas du fichier.
Pour configurer monit, créer un fichier de config comme ceci :
Bash
vi /etc/monit/conf.d/monit.cfg
Note : Le script ci-dessous est basé sur la documentation présente dans le fichier "/etc/monit/monitrc".
Bash
set daemon 120 # Vérifier les services toutes les 2 minutes (2*60s = 120s = 2min) with start delay 240 # Attend 4 minutes après le démarrage de monit pour la 1ère vérification # des services. # Fichiers de logs # Utilise les fichiers de logs de Linux # set logfile syslog facility log_daemon # ou un fichier de log spécifique pour monit. set logfile /var/log/monit.log # Serveur SMTP à utiliser pour envoyer les alertes par mails. # Note : Vous pouvez indiquer plusieurs serveurs SMTP séparés par des virgules. set mailserver localhost # Si le ou les serveurs SMTP ne fonctionnent pas, vous pouvez stocker les # alertes sur le disque dur. # slots 100 indique qu'on stocke uniquement les 100 dernières alertes. set eventqueue # si le serveur de mail est down, on stock les alertes basedir /var/monit # répertoire de stockage slots 100 # Vous pouvez définir le format des emails que monit vous enverra. set mail-format { from: monit@$HOST subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Email sent by Monit. } # Adresse e-mail de l'administrateur du serveur # Utiliser, de préférence, une adresse e-mail d'un serveur de mails externe. # Sinon, vous ne serez pas avertis des problèmes rencontrés avec les composants # du serveur de mails (serveur mails, protocoles POP3 et imap, ...) set alert sysadmin@gmail.com # Pour recevoir uniquement les alertes de type "timeout", vous devrez utiliser cette ligne # a la place de la précédente. (décommentez la ligne en enlevant le # en début de ligne). #set alert sysadmin@gmail.com only on { timeout } # Paramètres de l'interface web de monit # Par défaut, l'interface web est accessible sur le port "2812" avec les identifiants : admin / monit. set httpd port 2812 and allow admin:monit # Vérification des services # En règle générale, la vérification d'un service aura besoin de son pid pour pouvoir arrêter ou redémarrer le service concerné. # Pour trouver le fichier de pid d'un processus, cherchez le fichier comme ceci : find / -name [nom du service].pid # Exemple : "find / -name apache2.pid" affichera ceci sous Debian : /run/apache2.pid # Apache check process apache with pidfile /run/apache2.pid # Commandes pour démarrer et arrêter le service souhaité # avec un délai de 60 secondes (1min) pour le démarrage du service. start program = "/etc/init.d/apache2 start" with timeout 60 seconds stop program = "/etc/init.d/apache2 stop" # Utilisation CPU # Si le service utilise 60% du processeur pendant 4 minutes (2 cycles de 120s), on envoi une alerte par e-mail. if cpu > 60% for 2 cycles then alert # Si le service utilise 80% du processeur, on redémarre le service. if cpu > 80% for 5 cycles then restart # Si le service utilise 200 MB de mémoire pendant 10 minutes, on redémarre le service. if totalmem > 200.0 MB for 5 cycles then restart # Si le service a plus de 250 enfants, on redémarre le service. if children > 250 then restart # Permet de tester la charge du serveur sur 16 minutes. if loadavg(5min) greater than 10 for 8 cycles then stop # Teste si on sait se connecter sur le port 80 (protocol http) if failed host 127.0.0.1 port 80 protocol http #and request "/index.php" # permet de tenter de récupérer une page précise (enlever le # pour décommenter la ligne) then restart # idem pour le port 443 (SSL / https) if failed port 443 type tcpssl protocol http with timeout 15 seconds then restart # si le service a redémarré 3 fois en 10 minutes, c'est qu'il y a un problème avec le service # donc, on arrête le service en cause. if 3 restarts within 5 cycles then timeout group server # MySQL check process mysqld with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" # Pour MySQL, on tente de se connecter au serveur local (127.0.0.1) sur le port 3306 if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout # SSH check process sshd with pidfile /var/run/sshd.pid group ssh start program = "/etc/init.d/ssh start" stop program = "/etc/init.d/ssh stop" # Pour SSH, le port 22 (si vous l'avez modifié par sécurité, modifiez-le ici aussi). if failed host 127.0.0.1 port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout # Postfix check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout # FTP check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout # BIND check process bind9 with pidfile /var/run/named/named.pid group bind start program = "/etc/init.d/bind9 start" stop program = "/etc/init.d/bind9 stop" if failed port 53 then restart if 5 restarts within 5 cycles then timeout # POP3 check process pop3 with pidfile /var/run/courier/pop3d.pid group mail start program = "/etc/init.d/courier-pop start" stop program = "/etc/init.d/courier-pop stop" if failed port 110 then restart if 5 restarts within 5 cycles then timeout # IMAP check process imap with pidfile /var/run/courier/imapd.pid group mail start program = "/etc/init.d/courier-imap start" stop program = "/etc/init.d/courier-imap stop" if failed port 143 then restart if 5 restarts within 5 cycles then timeout # POP3S check process pop3s with pidfile /var/run/courier/pop3d-ssl.pid group mail start program = "/etc/init.d/courier-pop-ssl start" stop program = "/etc/init.d/courier-pop-ssl stop" if failed port 995 type TCPSSL protocol pop for 5 cycles then restart if 3 restarts within 5 cycles then timeout # IMAPS check process imaps with pidfile /var/run/courier/imapd-ssl.pid group mail start program = "/etc/init.d/courier-imap-ssl start" stop program = "/etc/init.d/courier-imap-ssl stop" if failed port 993 type TCPSSL protocol imap for 5 cycles then restart if 3 restarts within 5 cycles then timeout # Courier (IMAP/POP3) Auth Deamon check process courier-auth with pidfile /var/run/courier/authdaemon/pid group mail start program = "/etc/init.d/courier-authdaemon start" stop program = "/etc/init.d/courier-authdaemon stop" if 3 restarts within 5 cycles then timeout # Webmin # Script trouvé dans la documentation de monit : https://mmonit.com/wiki/Monit/ConfigurationExamples#webmin check process webmin with pidfile /var/webmin/miniserv.pid group webmin start program = "/etc/init.d/webmin start" stop program = "/etc/init.d/webmin stop" if failed host 127.0.0.1 port 10000 then restart if 5 restarts within 5 cycles then timeout # Webmin (dépendance) check file webmin_rc with path /etc/init.d/webmin group webmin if failed checksum then unmonitor if failed permission 755 then unmonitor if failed uid root then unmonitor if failed gid root then unmonitor # Disque dur # Note : Pour lister les partitions de votre serveur linux, tapez la commande : lsblk # La 1ère partition du serveur, sera "/dev/hd1" (HDD IDE) ou "/dev/sda1" (HDD SATA). # # SDA1 check device sda1 with path /dev/sda1 group system if space usage > 85% then alert if space usage > 85% then alert
Une fois que vous aurez créé votre fichier de configuration, vérifiez la configuration de monit.
Bash
service monit syntax
Si rien ne s'affiche, votre configuration est bonne. Sinon, des erreurs s'afficheront.
Si votre configuration est bonne, redémarrez apache et monit.
Bash
service monit restart service apache2 restart
Une fois que vous aurez redémarré les services, vous devrez patienter pendant 4 minutes (le temps défini par l'option : with start delay 240).
Après 4 minutes, vous aurez accès à l'interface web.
Si vous modifiez la configuration de monit plus tard, utilisez la commande suivante pour sauvegarder les changements sans redémarrer complètement monit :
Bash
service monit reload
Bizarrement, le monitoring d'apache ne démarre pas automatiquement (même si vous attendez 10 minutes).
Pour régler le problème, connectez-vous à l'interface web de monit. Par défaut : http://votre-domaine.com:2812
Vous verrez que le statut d'apache est : Not monitored.
Cliquez sur "apache" dans la liste.
Puis, cliquez sur le bouton "Enable monitoring" en bas de page.
Vous recevrez un mail : monit alert -- Action done apache
Et le statut deviendra : Not monitored - monitor pending
Patientez 5 minutes et son statut deviendra "Running" excepté si apache a un problème.
Dans ce cas, vous avez du recevoir un mail de monit.
Pour tester monit, nous avons arrêté le service "apache2" via le terminal de Linux. Quelques instants plus tard, nous avons reçu un mail d'alerte de monit disant que le service n'était pas lancé et qu'il avait redémarré automatiquement le service apache2.
Note : Sur la page de monit, le statut du service était "does not exist" et après le redémarrage du service, le statut est redevenu "Running". Le statut n'est pas mis à jour en temps réel mais tous les x temps. (x étant l'intervalle "set daemon 120" indiqué en haut du fichier de configuration).
Si vous avez sécurisé votre serveur avec iptables, autorisez le port de monit en ajoutant ceci dans le script de votre pare-feu :
Bash
# monit iptables -t filter -A INPUT -p tcp --dport 2812 -j ACCEPT
Une fois que vous aurez modifiez le script de configuration de votre pare-feu, n'oubliez pas de réexécuter ce script.
Note : Pour en savoir plus sur la configuration du pare-feu sous Linux, référez-vous à notre tutoriel : Debian / Ubuntu - Sécuriser votre serveur dédié ou VPS via Iptables
Linux 5/3/2015
Linux 7/7/2015
Linux 11/10/2016
Linux 14/2/2015
Contenu épinglé
Contact
® InformatiWeb-Pro.net - InformatiWeb.net 2008-2022 - © Lionel Eppe - Tous droits réservés.
Toute reproduction totale ou partielle de ce site est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.
Sauriez vous ou se trouve les fichier php et/ou html de monit par hasard ?
Merci
/etc/monit/conf.d/monit.cfg:1: Error: syntax error '120
Vous devez être connecté pour pouvoir poster un commentaire