Table des matières

, , , , ,

Nagios: Superviser via ssh des hôtes sous Gnu/Linux

Pour superviser des hôtes sous GNU/LINUX via ssh:

Créer l'utilisateur nagios sur le système à superviser. Nous allons définir un mot de passe temporaire qui sera utilisé seulement le temps de copier la clé publique. On désactivera se mode de d'authentification par la suite:

useradd --create-home nagios
passwd nagios

Pour pouvoir lire les métriques du système distant ou exécuter les scripts, le serveur Nagios doit s'authentifier auprès de l’hôte cible via l'utilisateur nagios et une paire de clés dédiées.

Sur le serveur nagios

Si l'utilisateur nagios exécutant le service ne possède pas de home:

# générer le home utilisateur pour un utilisateur préexistant
sudo mkhomedir_helper nagios

Exécuter un shell en tant que nagios et générer une paire de clés:

su - nagios
cd /home/nagios
mkdir .ssh
cd .ssh
ssh-keygen -t rsa -b 4096 -C nagios@mairie.local -f id_nagios_rsa

Une fois la clé générée, on copie la clé publique sur l’hôte à superviser:

ssh-copy-id -i id_nagios_rsa.pub nagios@hote-a-superviser.lan

De nouveau sur l’hôte à superviser, on désactive l'authentification par mot de passe pour ssh en modifiant le fichier de configuration du service sshd /etc/ssh/sshd_config

Match   User    nagios
        PasswordAuthentication no

On teste la connexion par clés, si tout se passe bien on désactive l'authentification localement par mot de passe:

usermod -L nagios 

Test de la commande

Sur le serveur de supervision, tester la connexion SSH à l’hôte à surveiller en lançant directement la commande check_by_ssh par la suite le service Nagios:

su - nagios
cd /usr/lib/nagios/plugins 
./check_by_ssh -l nagios -i /home/nagios/.ssh/id_nagios_rsa -H hostname.domain -C "uptime"

Pour que les plugins soient disponibles sur l' hôte à superviser, deux possibilités:

Ici on installe les plugins à partir des paquets de la distribution:

sudo apt-get install nagios-plugins

Les scripts sont installés sur l’hôte à superviser dans le dossier /usr/lib/nagios/plugins/. Ils devront être appelés par le serveur de supervision:

Le wiki

Dans l'exemple ci-dessous, le serveur de supervision, sous le compte utilisateur nagios se connecte en ssh sur l’hôte à superviser et exécute le script distant check_disk:

su - nagios
cd /usr/lib/nagios/plugins 
./check_by_ssh -l nagios -i /home/nagios/.ssh/id_nagios_rsa -H hostname.domain -C "/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p / -m" 

Créer une nouvelle commande dans le fichier de définition de vos commandes pour le serveur Nagios /usr/local/nagios/etc/objects/commands:

define command{
        command_name linux_check_disk_by_ssh
        command_line /usr/lib/nagios/plugins/check_by_ssh -l nagios -i /home/nagios/.ssh/id_nagios_rsa -H $HOSTADDRESS$ -C "/usrlib/nagios/plugins/check_disk $ARG1$"
}

La commande attend un argument ($ARG1$) qui sera spécifié lors de la définition du service a tester. On l'utilise dans la définition d'un service a tester

Références