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