Supervision système et réseau avec Monit

Dès lors que l'on dispose de plusieurs équipements réseaux (serveurs, imprimantes, commutateurs, ...), et que ces équipements sont mis à disposition d'un certain nombre de personnes, se pose la question de la supervision des ressources utilisées. Si votre principal commutateur défaille, tout ce qui y est rattaché ne sera évidemment plus joignable ; si votre serveur de courrier est saturé vos utilisateurs ne tarderont pas à se plaindre, ... Si cela reste acceptable pour un réseau domestique local, il est nécessaire d'avoir un système de surveillance et d'alerte dès que l'on se trouve à une échelle supérieure.

Slackware ne propose rien de particulier pour remplir ce besoin. Certes, les outils SNMP sont là mais encore faut-il que vos équipements "parlent" SNMP, et cela requiert une configuration poussée. Un outil de supervision léger est probablement une bonne chose pour débuter, et Monit est alors une solution à considérer.

Une fois l'archive .tar.gz téléchargée et vérifiée depuis le site officiel, vous pouvez envisager l'installation. Rien de très compliqué, si ce n'est de désactiver le support des bibliothèques PAM (Pluggable Authentication Modules) qui ne sont pas utilisés par Slackware. Vous pouvez aussi indiquer le répertoire /etc comme emplacement pour le fichier de configuration :

./configure --without-pam --sysconfdir=/etc
make
make install

Après la dernière étape vous devrez recopier le fichier de configuration fourni en exemple pour construire le vôtre. Chose importante, les droits pour ce fichier devront être redéfinis pour retirer tout accès depuis un compte autre que celui de root. En effet, Monit permet de définir des accès distincts selon les utilisateurs, mais les mots de passe sont conservés en clair (ce qui est un reproche majeur, quoiqu'unique).

cp /usr/local/src/monit/monit-5.5.1/monitrc /etc
chmod 600 /etc/monitrc
chown root:root /etc/monitrc

Beaucoup de choses sont maintenant à définir, avant même de considérer la surveillance de votre serveur, commutateur ou autre.

Paramètres globaux

Monit utilise deux fichiers pour conserver des informations sur le processus en cours ; un fichier .id (et non pas .pid) et un fichier .state. Vous pouvez placer ces deux fichiers dans le répertoire /var/run.

set idfile /var/run/monit.id
set statefile /var/run/monit.state

Plusieurs options sont liées à l'envoi d'alertes par courrier électronique, mais cela déborde du cadre du présent article. Si vous ne souhaitez pas vous lancer dans la mise en place d'un serveur SMTP sur votre machine, vous pouvez éventuellement utiliser un script avec la commande mail pour l'envoi des alertes via un serveur externe.

Fichiers journaux

La gestion des alertes est une chose, mais l'enregistrement des évènements dans un fichier journal est toujours utile. Par défaut, tout ceci est envoyé vers le fichier /var/log/syslog, qui est déjà rempli par moult autres applications ; un journal réservé à Monit peut-être déclaré dans le fichier monitrc.

set logfile /var/log/monit.log

Comme pour tout fichier journal, vous aurez besoin de gérér son versionnement au fil du temps avec logrotate. Les commandes nécessaires sont à placer dans le fichier /etc/logrotate.d/monit.

/var/log/monit.log {
    missingok
    sharedscripts
    postrotate
        /usr/local/bin/monit reload 1> /dev/null 2>&1
    endscript
}

Accès HTTPS

Monit fournit une interface web pour faciliter les tâches de supervision protégé par un identifiant et un mot de passe ; il est préférable de chiffrer cet accès pour éviter que ce dernier ne transite en clair. Toutes les étapes pour l'utilisation d'un certificat auto-signé sont documentées (en anglais) sur le wiki du projet. La première partie consiste bien sûr à générer un certificat avec OpenSSL, et en seconde partie spécifier les options adéquates dans le fichier monitrc.

Script de démarrage

Bien sûr, la gestion de ce nouveau service peut se faire manuellement, et le démarrage via le fichier /etc/rc.d/rc.local, mais un fichier dédié est toujours plus pratique. Vous pouvez télécharger un script rc.monit ici même ; modifiez au besoin le chemin vers le binaire pour correspondre à votre installation. Vous pourrez activer ce script depuis le fichier /etc/rc.d/rc.inet2.

Surveillance des ressources

Arrivé à ce point, vous pouvez débuter la configuration de Monit pour surveiller vos ressources (espace disque, processus, connection réseau, ...). Le fichier de configuration par défaut propose plusieurs exemples et la documentation est bien entendue à votre disposition.

publié le 19 juillet 2013