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 :
- Utiliser toujours le même utilisateur de monitoring,
- Installer les plugins nagios dans les mêmes endroits sur toutes les machines, ou de mettre en place des liens symboliques qui donnent cette impression.
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 :
- Une dépendance plus importante de certains composants (le serveur SSH, l'accès aux clés SSH, etc),
- Un coût important en utilisation processeur (pour la compression et l'authentification ; il est possible de mitiger ce facteur en choisissant avec soin les algorithmes cryptograpiques),
- Une faille potentielle de sécurité via un utilisateur supplémentaire,
- Un plus grande lenteur (dûe également au sucroût de la cryptographie.
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
- Il est possible d'installer la même sélection de paquets cygwin entre deux machines en suivant cette procédure :
- Sur la machine déjà installée, copier le contenu du répertoire /etc/cygwin/setup sur une ressource partagée,
- Sur la machine de destination, créer le répertoire racine de cygwin, créer un répertoire etc/setup,
- Déposer les fichiers de la première installation dans ce répertoire,
- Lancer le setup.exe de cygwin,
- Dans l'écran de sélection de paquets, choisir la vue "up to date" qui affiche les paquets en statut "keep",
- Pour chaque paquet, cycler dans les options jusqu'à avoir "reinstall".
- Indiquez, sauf très bonnes raisons, un nom d'hôte court dans la proriété name d'un hôte, et son addresse IP dans la propriété address (cela vous rend indépendant des problèmes éventuels de DNS).
- Pour effectuer certains tests qui demandent un accès administrateur, favorisez l'utilisation de sudo avec des règles très restrictives ; il est par exemple possible de contrôler la commande invoquée, mais aussi ses paramètres.
Plugins
Bientôt.
Retour
(Si tu es un robot suceur de pages web, viens par ici.)
Page modifiée en dernier le 30/10/2006 - XHTML 1.1 strict et CSS 2.0.