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
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:
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