Monitoring Serveur

Il est de plus en plus fréquent de vouloir monitorer son serveur web et d'être informer par e-mail des problèmes pouvant être rencontrés. Il existe de nombreuses solutions pour de gros parcs, tel que Nagios, Zabbix & co. Mais pour un unique serveur, je vous recommande d'utiliser Monit et LogWatch. Voyons comment les utiliser.

Avant toutes choses, les commandes suivantes sont exécutés sous Debian. Vous devriez trouver les équivalents pour les autres OS linux.

Monit

Monit est une application, permettant de surveiller les process et d'agir en conséquence lors d'une surconsommation par exemple. Pour vous donner une petite idée, on peut monitorer le serveur web apache2. Si celui ci ne répond plus, à cause d'un script, Monit va alors le redémarrer afin d'éviter le crash, et dans le pire des cas, le freeze du système. N'est ce pas fortement utile?

Installation

L'installation sous Debian est très rapide. N'oubliez pas de mettre à jour vos sources apt. Une ligne de commande:

apt-get install monit

Configuration

Tout d'abord, nous allons commencer par éditer le fichier /etc/default/monit. Il suffit juste de modifier l'option suivante:

startup=1

Passons cette fois-ci au fichier /etc/monit/monitrc. Ce fichier permet de configurer Monit afin surveiller les process dont on a besoin.

Tout d'abord, nous allons le configurer de la manière suivante:

set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost, smtp.free.fr
set mail-format { from: <span class="search_hit">monit</span>@example.com }
set alert root@localhost
set httpd port 1234 and
   allow admin:test

Détaillons les lignes ci-dessus:

  • daemon 60 : défini l'intervalle entre deux vérifications ( en seconde ).
  • mailserver : défini le ou les serveur(s) mails à utiliser.
  • mail-format: la configuration pour l'envoi du mail. Pour plus d'infos sur la configuration rendez-vous ici.
  • alert: l'email du destinataire.
  • httpd: Activation de l'interface web sur le port 1234 avec pour identifiant: admin et mot de passe: test.

Il est possible d'utiliser le SSL, si vous souhaitez vous connecter via l'interface web. Les détails de la configuration se trouve ici. Démarrez Monit en utilisant:

/etc/init.d/monit start

Vous pouvez vous rendre sur votre site à l'adresse: http//www.example.com:1234 afin d'accéder à l'interface web.

Ajout de services

Pour rajouter des services, rien de très compliqué. Il suffit d'éditer /etc/monit/monitrc et de spécifier en fin de fichier:

  • Le PID du service.
  • les commandes de démarrage/arrêt du service.
  • la condiftion de test à effectuer.
  • le(s) commande(s) à effectuer lorsque le test ok.

Un exemple pour une configuration pour Apache2:

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

Rien de très compliqué n'est ce pas ? Quelques examples de plus :

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
SSHD
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
PROFTPD
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

Pour d'autres exemples, rendez vous sur le wiki officiel.

Logwatch

Cette application permet, une fois configurée, de recevoir par e-mail diverses informations sur la machine :

  • recherche d'erreurs dans les logs.
  • informations sur les installations via apt.
  • occupation disque.
  • etc.

Installation

Tout comme Monit l'installation se fait en une seule ligne de commande:

apt-get install logwatch

Configuration

La configuration ne demande pas de changement. Il faut tout de même éditer /usr/share/logwatch/default.conf/logwatch.conf et modifier la ligne ou les lignes suivantes :

Output = mail
Format = html
MailTo = test@example.com

Plus d'informations sur la configuration c'est par ici.