Nagios

Nagios est un système de surveillance, basé sur un coeur écrit en C, une interface web, et des plugins développés dans une philosophie toute unixienne.  Bien que la base fournisse déjà des possibilités considérables, je me suis amusé à étendre certains plugins et à en écrire d'autres.

J'ai aussi passé un temps certain à mettre en place l'architecture et le monitoring dans le cours de mon travail, je vais aussi en profiter pour exposer mes méthodes.

Principes d'opération

Une des premières décisions que j'ai prise pour Nagios a été de fonctionner avec le monitoring effectué complètement depuis le serveur Nagios.  En d'autres mots, je n'ai pas déployé les solutions de monitoring via NRPE et autres systèmes décentralisés, pour des raisons principalement de simplicité et de centralisation.

Au lieu de cela, avec un peu de scripting et d'organisation, je suis parti sur une solution pour interroger les machines hors LAN (et certaines machines dans le LAN) via SSH et le plugin check_by_ssh.  Il suffit de créer un utilisateur (nagios dans mes scripts) sur chaque machine à monitorer activement, de générer un jeu de clés SSH (ssh-keygen(1)), et de s'assurer que c'est la seule méthode de login possible pour cet utilisateur (via des fichiers authorized_keys).

Il est possible de surveiller des machines utilisant Windows par la même méthode, en utilisant cygwin et leurs scripts ssh-host-config.

Le plus important lors de la mise en place de ce genre de choses est la rigueur ; il est conseillé de :

Une fois que ces conditions sont réunies, il devient possible d'avoir un nombre de commandes de vérification assez limité, en définissant les macros suivantes (souvent dans resource.cfg) :

# Sets $USER1$ to be the path to the plugins $USER1$=/usr/local/libexec/nagios # SSH checks $USER3$=/usr/local/libexec/nagios/check_by_ssh -i /var/spool/nagios/.ssh/id_rsa -u nagios -H $USER4$=/var/spool/nagios/.ssh/id_rsa

(Avec les adaptations évidentes...  A noter aussi que les lignes sont scindées pour des raisons de présentation à l'écran, mais Nagios ne permet pas cela.)

Une commande se décline alors en deux versions :

# 'check_disk' command definition define command { command_name check_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } define command { command_name check_disk_by_ssh command_line $USER3$ $HOSTADDRESS$ -C '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$' }

Cette méthode présente évidemment quelques inconvénients.  On peut noter :

Cependant, sous un autre angle, on peut considérer que l'utilisation du protocole SSH et de son serveur éponyme sont une importante et éprouvée garantie de sécurité.

Trucs

Plugins

Bientôt.

Retour

Page modifiée en dernier le 30/10/2006 - XHTML 1.1 strict et CSS 2.0.