Aller au contenu principal

Linux NRPE3

Vue d'ensemble​

NRPE (Nagios Remote Plugin Executor) est un protocole qui a été conçu pour lancer à distance des commandes de supervision locales sur les serveurs supervisés.

Ce pack de plugin repose sur 3 composants, qui sont détaillés dans le tableau ci-dessous.

ComposantTypeEmplacementRĂ´le
centreon_nrpe3_pluginBinaire exécutablePollerTransmet un nom de commande et des arguments associés à celle-ci
centreon_linux_local.plScript PerlServeur superviséS'exécute localement et retourne un statut, un message d'information et des métriques
centreon-nrpe3Service/daemonServeur superviséÉcoute sur le port 5666 et exécute les commandes demandées si elles sont définies dans sa configuration

Contenu du connecteur de supervision​

Objets supervisés​

Types d'équipements​

  • Serveur Linux CentOS 7 / RHEL7 (documentĂ© dans la prĂ©sente procĂ©dure)
  • Serveur Linux d'autres distributions, Ă  condition d'y installer manuellement le plugin et le daemon NRPE3 (2e et 3e lignes du tableau ci-dessus).

Métriques collectées​

Seules les métriques sont détaillées dans cette section, mais sachez qu'un grand nombre de tests et de métriques peuvent être fournies par le Plugin centreon_linux_local.pl. En voici une liste non exhaustive :

  • Cmd-Generic : VĂ©rifier le retour d'une commande
  • Connections-Generic : VĂ©rifier les connections TCP/UDP
  • Cpu-Detailed : VĂ©rifier l'utilisation moyenne des CPU (User, Nice, System, Idle, Wait, Interrupt, SoftIRQ, Steal, Guest, GuestNice)
  • Disk-Generic-Name : VĂ©rifier l'utilisation des disques (une seule partition)
  • Disk-Global : VĂ©rifier l'utilisation des disques (toutes les partitions ou filtrage par expression rĂ©gulière)
  • Disk-IO-Generic-Name : VĂ©rifier les IO disques (une seule partition)
  • Disk-IO-Global : VĂ©rifier les IO disques (toutes les partitions ou filtrage par expression rĂ©gulière)
  • File-Date-Generic : VĂ©rifier la date (modification, crĂ©ation) d'un fichier ou d'un rĂ©pertoire
  • File-Size-Generic : VĂ©rifier la taille d'un fichier ou d'un rĂ©pertoire
  • Inodes-Generic-Name : VĂ©rifier l'utilisation des inodes (une seule partition)
  • Inodes-Global : VĂ©rifier l'utilisation des inodes (toutes les partitions ou filtrage par expression rĂ©gulière)
  • Is-File-Generic : VĂ©rifier la prĂ©sence d'un fichier
  • Is-Not-File-Generic : VĂ©rifier l'absence d'un fichier
  • Packet-Errors-Generic-Name : VĂ©rifier le nomdre de paquets rĂ©seau en erreur (une seule interface)
  • Packet-Errors-Global : VĂ©rifier le nomdre de paquets rĂ©seau en erreur (toutes les partitions ou filtrage par expression rĂ©gulière)
  • Process-Generic : VĂ©rifier qu'un processus est en cours d'exĂ©cution
  • Systemd-Sc-Status : VĂ©rifier l'Ă©tat des services gĂ©rĂ©s par systemd
  • Traffic-Generic-Name : VĂ©rifier la consommation de bande passante sur une interface
  • Traffic-Global : VĂ©rifier la consommation de bande passante (toutes les partitions ou filtrage par expression rĂ©gulière)

Voici les métriques collectées pour les services liés au modèle dhôte par défaut :

MétriqueDescriptionUnité
0#core.cpu.utilization.percentageUtilisation moyenne du cœur 0%
1#core.cpu.utilization.percentageUtilisation moyenne du cœur 1%
......%
cpu.utilization.percentageUtilisation moyenne globale%

Prérequis​

Les prérequis ci-dessous sont indispendables pour que le connecteur de supervision puisse fonctionner correctement.

Flux réseau​

Le port TCP par défaut pour le protocole NRPE est le port 5666.

SourceDestinationProtocolePort
PollerHôte superviséTCP5666

Installation de l'agent NRPE packagé par Centreon et sonde Linux locale​

Les hôtes supervisés ont besoin de deux composants pour que cela fonctionne :

  • la sonde centreon_linux_local.pl
  • L'agent (daemon) NRPE3

Installer les paquets suivants :

dnf install -y https://yum.centreon.com/standard/22.10/el8/stable/noarch/RPMS/centreon-release-22.10-1.el8.noarch.rpm
dnf install centreon-nrpe3-daemon.x86_64 centreon-plugin-Operatingsystems-Linux-Local.noarch

NB : Pour éviter l'ajout du dépôt Centreon sur tous vos serveurs, il est possible d'installer directement les paquets https://yum.centreon.com/standard/22.10/el8/stable/noarch/RPMS/centreon-plugin-Operatingsystems-Linux-Local-20230117-074217.el8.noarch.rpm et https://yum.centreon.com/standard/22.10/el8/stable/x86_64/RPMS/centreon-nrpe3-plugin-4.0.3-0.el8.x86_64.rpm (versions courantes au moment de la rédaction de cette documentation) mais dans ce cas il ne sera pas possible de les mettre à jour par un yum update.

Configuration de NRPE​

Pour que le(s) poller(s) puisse(nt) superviser les hôtes, il est nécessaire d'adapter le paramètre allowed_hosts dans le fichier /etc/nrpe/centreon-nrpe3.cfg :

[...]
# ALLOWED HOST ADDRESSES
# This is an optional comma-delimited list of IP address or hostnames
# that are allowed to talk to the NRPE daemon. Network addresses with a bit mask
# (i.e. 192.168.1.0/24) are also supported. Hostname wildcards are not currently
# supported.
allowed_hosts=127.0.0.1,::1
[...]

Et redémarrer le service :

systemctl restart centreon-nrpe3.service

Installation​

connecteur de supervision​

L'installation du connecteur de supervision en lui-même ne concerne que le serveur central et la procédure dépend du type de licence.

Installer le connecteur de supervision "Linux NRPE3" depuis la page Configuration > Gestionnaire de connecteurs de supervision.

Centreon NRPE3 Plugin​

Pour commencer, installer le plugin NRPE3, qui permettra au poller de communiquer avec les agents NRPE3 :

yum install centreon-nrpe3-plugin

Validation de l'ensemble des prérequis​

Si tout a été correctement installé et configuré, la commande :

/usr/lib64/nagios/plugins/check_centreon_nrpe3 -H monitored_host_ip -p 5666

devrait aboutir au résultat suivant :

NRPE v4.0.3

Dans le cas contraire, se référer à la section troubleshooting.

Configuration de l'hôte dans Centreon​

Créer un nouvel hôte dans Centreon et lui appliquer le modèle d'hôte "OS-Linux-NRPE3-custom".

Une fois le modèle appliqué, il est possible de modifier les macros suivantes :

NomDescriptionObligatoire
NRPECLIENTNom de la sonde employée pour dialoguer avec l'agent NRPE3 (par défaut check_centreon_nrpe3)X
NRPEPORTPort sur lequel écoute l'agent NRPE3 (par défaut 5666)X
NRPETIMEOUTTemps maximum autorisé pour exécuter la commande (par défaut 5s)X
NRPEEXTRAOPTIONSOptions supplémentaires (par défaut -u pour que la sonde NRPE retourne un état UNKNOWN en cas d'erreur de connexion à l'agent)

FAQ​

Comment ça marche ?​

Voici une commande qui permet de surveiller la consommation CPU d'un serveur Linux dont l'adresse IP est x.x.x.x :

/usr/lib64/nagios/plugins/check_centreon_nrpe3 \
-H x.x.x.x \
-p 5666 -t 5 -u \
-c check_centreon_plugins \
-a 'os::linux::local::plugin' 'cpu' ' --statefile-dir=/var/log/nrpe/centplugins'

Cette commande devrait afficher un retour de la forme :

OK: CPU(s) average usage is: 1.16% | 'cpu0'=1.64%;;;0;100 'cpu1'=0.98%;;;0;100 'cpu2'=1.09%;;;0;100 'cpu3'=0.94%;;;0;100 'total_cpu_avg'=1.16%;;;0;100

Que s'est-il passé ?

  • Le Plugin check_centreon_nrpe3 a demandĂ© Ă  l'agent NRPE d'exĂ©cuter sa commande "check_centreon_plugins" associĂ©e aux arguments "os::linux::local::plugin", "cpu" et " --statefile-dir=/var/log/nrpe/centplugins".
  • L'agent NRPE met bout-Ă -bout la commande telle que dĂ©finie dans ses fichiers de configuration et les arguments envoyĂ©s pour former la ligne de commande suivante :
/usr/lib/centreon/plugins/centreon_linux_local.pl --plugin=os::linux::local::plugin --mode=cpu --statefile-dir=/var/log/nrpe/centplugins
  • Cette commande est alors exĂ©cutĂ©e par l'utilisateur centreon-engine puis l'agent renvoie les rĂ©sultats (code retour et message affichĂ©) au Plugin check_centreon_nrpe3 qui attend ce retour.

Troubleshooting​

Les erreurs les plus courantes sont détaillées ci-dessous.

connect to address x.x.x.x port 5666: Connection refused​

Si le message retourné est le suivant :

connect to address x.x.x.x port 5666: Connection refused

C'est probablement que l'adresse IP x.x.x.x d'où est venue la requête (c'est-à-dire celle du poller) n'est pas autorisée à interroger l'agent NRPE.

Il faut alors vérifier le paramètre allowed_hosts dans le fichier /etc/nrpe/centreon-nrpe3.cfg (cf plus haut.

Puis redémarrer le service.

systemctl restart centreon-nrpe3.service

CHECK_NRPE STATE CRITICAL: Socket timeout after 10 seconds​

Si le message retourné est le suivant :

CHECK_NRPE STATE CRITICAL: Socket timeout after 10 seconds.

Vérifier alors les points suivants :

  • le service centreon-nrpe3 est bien dĂ©marrĂ©
systemctl status centreon-nrpe3.service
  • le port utilisĂ© par la sonde (-p 5666 par exemple) est conforme Ă  la configuration de l'agent, si le port a Ă©tĂ© personnalisĂ©
  • aucun pare-feu local ne bloque le port NRPE (iptables -L)
  • aucun Ă©quipement de type firewall ne filtre ce port sur le rĂ©seau

NRPE: Command 'my_command' not defined​

Si le message retourné est le suivant :

NRPE: Command 'my_command' not defined

Cela signifie que l'on demande à l'agent NRPE d'exécuter une commande qui lui est inconnue.

Pour qu'une commande soit reconnue, il faut qu'elle soit convenablement déclarée avec la syntaxe suivante :

[my_command]=/full/path/to/command --argument --other-argument

Et redémarrer le service :

systemctl restart centreon-nrpe3.service