Aller au contenu principal

Linux NRPE3

IMPORTANT : Ce connecteur de supervision est déprécié. Pour un déploiement plus standard de votre supervision de serveurs Linux avec le protocole NRPE, nous vous recommandons d'utiliser Linux NRPE4.

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 :

Service AliasService TemplateService Description
Check-PluginOS-Linux-Check-Plugin-NRPE3-customSSH execution commands in a remote host
Cmd-GenericOS-Linux-Cmd-Generic-NRPE3-customCheck command returns
Connections-GenericOS-Linux-Connections-Generic-NRPE3-customCheck tcp/udp connections
Cpu-DetailedOS-Linux-Cpu-Detailed-NRPE3-customCheck average usage for each CPUs
DiskOS-Linux-Disks-NRPE3-customCheck storage usage
Disk-IOOS-Linux-Disk-IO-NRPE3-customCheck some disk io counters
File-Date-GenericOS-Linux-File-Date-Generic-NRPE3-customCheck time of files/directories
File-Size-GenericOS-Linux-File-Size-Generic-NRPE3-customCheck size of files/directories
InodesOS-Linux-Inodes-NRPE3-customCheck Inodes space usage
Is-File-GenericOS-Linux-Is-File-Generic-NRPE3-customCheck the presence of a file
Is-Not-File-GenericOS-Linux-Is-Not-File-Generic-NRPE3-customCheck the absence of a file
LoadOS-Linux-Load-NRPE3-customCheck system load-average
NtpOS-Linux-Ntp-NRPE3-customCheck ntp daemons
OpenFileOS-Linux-OpenFile-NRPE3-customCheck open files
Packet-ErrorsOS-Linux-Packet-Errors-NRPE3-customCheck packet errors and discards on interfaces
Pending-UpdatesOS-Linux-Pending-Updates-NRPE3-customCheck pending updates
Process-GenericOS-Linux-Process-Generic-NRPE3-customCheck linux processes
Systemd-JournalOS-Linux-Systemd-Journal-NRPE3-customCount journal entries
Systemd-Sc-StatusOS-Linux-Systemd-Sc-Status-NRPE3-customCheck services managed by systemd
TrafficOS-Linux-Traffic-NRPE3-customCheck Traffic

Les services listés ci-dessus sont crées automatiquement lorsque le modèle d'hôte OS-Linux-NRPE3-custom est utilisé.

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 dnf-plugins-core
dnf config-manager --add-repo https://packages.centreon.com/rpm-standard/22.10/el8/centreon-22.10.repo
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