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.
Composant | Type | Emplacement | RĂ´le |
---|---|---|---|
centreon_nrpe3_plugin | Binaire exécutable | Poller | Transmet un nom de commande et des arguments associés à celle-ci |
centreon_linux_local.pl | Script Perl | Serveur supervisé | S'exécute localement et retourne un statut, un message d'information et des métriques |
centreon-nrpe3 | Service/daemon | Serveur 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 :
- Cpu
- Load
- Memory
- Swap
- Uptime
Métrique | Description | Unité |
---|---|---|
0#core.cpu.utilization.percentage | Utilisation moyenne du cœur 0 | % |
1#core.cpu.utilization.percentage | Utilisation moyenne du cœur 1 | % |
... | ... | % |
cpu.utilization.percentage | Utilisation moyenne globale | % |
Métrique | Description | Unité |
---|---|---|
load1 | Charge système moyenne sur 1 minute | |
load5 | Charge système moyenne sur 5 minutes | |
load15 | Charge système moyenne sur 15 minutes |
Métrique | Description | Unité |
---|---|---|
buffer | Mémoire allouée aux buffers | B |
cached | Mémoire allouée en cache | B |
slab | Allocation Slab | B |
used | Mémoire consommée totale | B |
Métrique | Description | Unité |
---|---|---|
swap.free.bytes | Espace d'échange non utilisé | B |
swap.usage.bytes | Espace d'échange utilisé | B |
swap.usage.percentage | Utilisation de l'espace d'échange | % |
Métrique | Description | Unité |
---|---|---|
uptime | Temps écoulé depuis le dernier redémarrage | s |
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.
Source | Destination | Protocole | Port |
---|---|---|---|
Poller | Hôte supervisé | TCP | 5666 |
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 :
- RHEL / CentOS / Oracle Linux 8
- CentOS 7
- Debian
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
ethttps://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 unyum update
.
yum install -y https://yum.centreon.com/standard/22.10/el7/stable/noarch/RPMS/centreon-release-22.10-1.el7.centos.noarch.rpm
yum 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/el7/stable/noarch/RPMS/centreon-plugin-Operatingsystems-Linux-Local-20230117-074217.el7.centos.noarch.rpm
ethttps://yum.centreon.com/standard/22.10/el7/stable/x86_64/RPMS/centreon-nrpe3-daemon-4.0.3-0.el7.centos.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 unyum update
.
# Ajout de l'utilisateur centreon-engine user
useradd --create-home centreon-engine
# Installation de gpg
apt install gpg
# Ajout du dépôt Centreon
wget -qO- https://apt-key.centreon.com | gpg --dearmor > /etc/apt/trusted.gpg.d/centreon.gpg
echo "deb https://apt.centreon.com/repository/22.10/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/centreon.list
apt update
# Installation de centreon-nrpe3-daemon
apt install centreon-nrpe3-daemon centreon-plugin-operatingsystems-linux-local
# Création du répertoire pour le cache du plugin
mkdir -p /var/lib/centreon/centplugins/
chown centreon-engine: /var/lib/centreon/centplugins/
NB : Pour éviter l'ajout du dépôt Centreon sur tous vos serveurs, il est possible d'installer directement les paquets
https://apt.centreon.com/repository/22.10/pool%2Fc%2Fcentreon-plugin-operatingsystems-linux-local%2Fcentreon-plugin-operatingsystems-linux-local_20221215-102705-bullseye_amd64.deb
ethttps://apt.centreon.com/repository/22.10/pool%2Fc%2Fcentreon-nrpe3-daemon%2Fcentreon-nrpe3-daemon_4.0.3-1_amd64.deb
(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 unapt 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.
- Licence IMP/EPP Online & IT-100 Editions
- Licence IMP/EPP Offline
Installer le connecteur de supervision "Linux NRPE3" depuis la page Configuration > Gestionnaire de connecteurs de supervision.
- Installer le RPM du connecteur de supervision contenant les modèles de supervision sur le serveur Centreon Central:
yum install centreon-pack-operatingsystems-linux-nrpe3
- 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 :
Nom | Description | Obligatoire |
---|---|---|
NRPECLIENT | Nom de la sonde employée pour dialoguer avec l'agent NRPE3 (par défaut check_centreon_nrpe3 ) | X |
NRPEPORT | Port sur lequel écoute l'agent NRPE3 (par défaut 5666) | X |
NRPETIMEOUT | Temps maximum autorisé pour exécuter la commande (par défaut 5s) | X |
NRPEEXTRAOPTIONS | Options 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 Plugincheck_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