Monit et Logwatch : deux outils complémentaires de monitoring de serveur
Au-delà des dispositifs de monitoring par lignes de commande, il existe des outils spécialisés dans la surveillance des serveurs et des services transactionnels. Zoom sur deux d'entre eux.
Publié le 15/04/2009
Monitoring Il est important de surveiller l'état de votre serveur et d'être prévenu si une anomalie survient, le plus souvent par e-mail. Nous suggérons l'emploi de Monit et Logwatch. N'hésitez pas à utiliser d'autres outils tels que les graphiques MRTG ou RRD qui permettront de surveiller la charge réseau et processeur de votre serveur sur le long terme, ainsi que l'espace disque, le temps de réponse, ou toute autre valeur numérique pertinente. Ceci ne fera pas l'objet d'un développement dans ce tutoriel. Commandes utiles Des outils de base existent pour ausculter la machine en ligne de commande. top: liste les processus en cours d'exécution et leur identifiant (PID), kill : tue un processus grâce à son PID, ftptop: liste des connexions au serveur FTP, iftop : top des interfaces réseau (installation par apt-get install iftop), apachetop : top Apache (installation par apt-get install apachetop), mtop: top MySQL (installation par apt-get install mtop). En ce qui concerne le réseau : netstat -tap : liste les connexions établies, netstat -tulp : liste les ports en écoute, lsof -n | grep LISTEN : liste les ports en écoute, lsof -n | grep UDP : liste les connexions UDP. Monit Monit est une application permettant de surveiller l'état des services (notamment Web, FTP, mail, MySQL, SSH) par une interface Web, et de notifier l'administrateur si nécessaire (trop grande charge cpu, redémarrage, indisponibilité...). Installation L'installation de Monit se réalise en quelques secondes grâce au paquet éponyme : apt-get install monit La configuration de Monit se fait en deux temps. Tout d'abord, autoriser le démarrage du service en éditant /etc/default/monit.
vi /etc/default/monit Modifier l'option startup à 1.
startup=1 Ensuite, éditer le fichier de configuration /etc/monit/monitrc contenant la description de tous les services à surveiller.
vi /etc/monit/monitrc Voici un exemple complet. Celui-ci est relativement explicite et à adapter selon votre configuration notamment pour le port SSH (22 par défaut) qui est ici 1337 pour correspondre au précédent tutoriel de configuration. set mailserver : indique le(s) serveur(s) de mail à utiliser pour l'envoi des notifications set alert : indique les adresses destinataires set httpd port : spécifie le port de connexion Web. Vous pourrez ensuite vous connecter grâce à votre navigateur sur l'IP et le port correspondant (ex: http://test.alsacreations.com:8080/ ), allow login:password : spécifie le couple login/password pour l'accès Web (à renseigner), check device : va permettre de surveiller l'espace disque restant : il faut ici indiquer le bon path vers /dev/XXX correspondant à la partition à monitorer (ex : /dev/sda, /dev/md1... selon votre configuration) # Config set daemon 120 set logfile syslog facility log_daemon set mailserver localhost, smtp.free.fr set mail-format { from: monit@$HOST subject: $HOST - Monit : $EVENT $SERVICE } set alert monitoring@test.com set httpd port 8080 and allow login:password # Apache 2 check process httpd with pidfile /var/run/apache2.pid group apache start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed host 127.0.0.1 port 80 protocol http then restart if 5 restarts within 5 cycles then timeout if cpu is greater than 85% for 2 cycles then alert if cpu > 90% for 5 cycles then restart if children > 250 then restart # 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" 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" if failed host 127.0.0.1 port 1337 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 group ftp 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 # Disk check device sda1 with path /dev/sda1 if space usage > 85% then alert group system Vous êtes libre d'ajouter tous les services à monitorer sur votre machine (pop3, imap, spamassassin, clamav, fail2ban...). La syntaxe est abordable et les exemples nombreux. Pour vérifier cette syntaxe, utilisez la commande :
/etc/init.d/monit syntax Si aucun message d'erreur n'est indiqué, vous pourrez ensuite démarrer monit : /etc/init.d/monit start Vérifiez une nouvelle fois la bonne interprétation de la configuration grâce à monit -v.
Logwatch Logwatch est par un démon pouvant analyser et résumer les logs générés par les autres services durant la journée pour en détecter d'éventuelles anomalies ou en tirer des statistiques. Il permet d'envoyer un e-mail récapitulatif quotidien à l'administrateur. Son installation est elle aussi très simple grâce à APT et au paquet éponyme : apt-get install logwatch La configuration par défaut suffit amplement, il suffit de modifier le destinataire dans le fichier /usr/share/logwatch/default.conf/logwatch.conf. Celui-ci peut se trouver à un autre endroit du disque, n'hésitez pas à vous servir de la commande locate.
vi /usr/share/logwatch/default.conf/logwatch.conf Modifiez l'option MailTo
MailTo = monitoring@test.com Vérifiez au besoin la présence de logwatch dans le répertoire /etc/cron.daily/ dont les scripts sont exécutés quotidiennement. Article publié sous licence Creative Common par dew. sur Alsacreations.com
|