Aller au contenu

Nagios – Création de checks personnalisés

Objectif

Mettre en place des checks personnalisés dans Nagios4 pour superviser des services ou des commandes spécifiques, en particulier via SSH quand aucun agent n’est installé.


Méthodes disponibles

  1. Plugins Nagios natifs (dans /usr/lib/nagios/plugins/)
  2. check_ping, check_http, check_ssh, etc.
  3. Utilisation simple, peu personnalisable.

  4. NRPE (Nagios Remote Plugin Executor)

  5. Exécute des plugins à distance.
  6. Nécessite l’installation de nagios-nrpe-server côté client.

  7. Check via SSH

  8. Pas besoin d’agent.
  9. On utilise check_by_ssh pour lancer une commande distante.
  10. Plus flexible mais un peu plus lourd en ressources.

Exemple : Check via SSH

Prérequis

  • SSH sans mot de passe entre nagios@nagios4 (LXC 210) et l’hôte supervisé :
    ssh-keygen -t rsa
    ssh-copy-id nagios@192.168.1.202
    ````
    
    * Vérifier que l’accès fonctionne :
    
    ```bash
    ssh nagios@192.168.1.202 "uptime"
    

Définition d’un check Nagios

1. Commande

Fichier : /etc/nagios4/commands.cfg

define command{
    command_name    check_load_ssh
    command_line    /usr/lib/nagios/plugins/check_by_ssh -H $HOSTADDRESS$ -l nagios -C "/usr/lib/nagios/plugins/check_load -w 5,4,3 -c 10,6,4"
}

Ici :

  • $HOSTADDRESS$ = IP de la machine supervisée
  • nagios = user distant
  • check_load = plugin déjà présent sur l’hôte distant

2. Service

Fichier : /etc/nagios4/conf.d/services.cfg

define service{
    use                 generic-service
    host_name           nextcloud
    service_description Charge CPU (via SSH)
    check_command       check_load_ssh
}

Exemple : Check d’un process via SSH

define command{
    command_name    check_nginx_ssh
    command_line    /usr/lib/nagios/plugins/check_by_ssh -H $HOSTADDRESS$ -l nagios -C "pgrep -x nginx >/dev/null && echo OK || echo CRITICAL"
}

Service :

define service{
    use                 generic-service
    host_name           webserver
    service_description Process Nginx
    check_command       check_nginx_ssh
}

Bonnes pratiques

  • Créer un utilisateur nagios dédié sur chaque hôte supervisé.
  • Restreindre les droits SSH (/etc/ssh/sshd_config) → AllowUsers nagios.
  • Ne pas donner sudo sauf si nécessaire.
  • Grouper tes commandes dans /etc/nagios4/commands.d/ pour plus de clarté.
  • Tester manuellement avant d’ajouter dans Nagios :
/usr/lib/nagios/plugins/check_by_ssh -H 192.168.1.202 -l nagios -C "uptime"

Commandes utiles

# Recharger la conf Nagios
systemctl reload nagios4

# Tester un plugin Nagios en direct
/usr/lib/nagios/plugins/check_load -w 5,4,3 -c 10,6,4