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.
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 :
- OS-Linux-NRPE3-custom
Service Alias | Service Template | Service Description |
---|---|---|
Check-Plugin | OS-Linux-Check-Plugin-NRPE3-custom | SSH execution commands in a remote host |
Cmd-Generic | OS-Linux-Cmd-Generic-NRPE3-custom | Check command returns |
Connections-Generic | OS-Linux-Connections-Generic-NRPE3-custom | Check tcp/udp connections |
Cpu-Detailed | OS-Linux-Cpu-Detailed-NRPE3-custom | Check average usage for each CPUs |
Disk | OS-Linux-Disks-NRPE3-custom | Check storage usage |
Disk-IO | OS-Linux-Disk-IO-NRPE3-custom | Check some disk io counters |
File-Date-Generic | OS-Linux-File-Date-Generic-NRPE3-custom | Check time of files/directories |
File-Size-Generic | OS-Linux-File-Size-Generic-NRPE3-custom | Check size of files/directories |
Inodes | OS-Linux-Inodes-NRPE3-custom | Check Inodes space usage |
Is-File-Generic | OS-Linux-Is-File-Generic-NRPE3-custom | Check the presence of a file |
Is-Not-File-Generic | OS-Linux-Is-Not-File-Generic-NRPE3-custom | Check the absence of a file |
Load | OS-Linux-Load-NRPE3-custom | Check system load-average |
Ntp | OS-Linux-Ntp-NRPE3-custom | Check ntp daemons |
OpenFile | OS-Linux-OpenFile-NRPE3-custom | Check open files |
Packet-Errors | OS-Linux-Packet-Errors-NRPE3-custom | Check packet errors and discards on interfaces |
Pending-Updates | OS-Linux-Pending-Updates-NRPE3-custom | Check pending updates |
Process-Generic | OS-Linux-Process-Generic-NRPE3-custom | Check linux processes |
Systemd-Journal | OS-Linux-Systemd-Journal-NRPE3-custom | Count journal entries |
Systemd-Sc-Status | OS-Linux-Systemd-Sc-Status-NRPE3-custom | Check services managed by systemd |
Traffic | OS-Linux-Traffic-NRPE3-custom | Check 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 :
- 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 11 & 12
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
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 yum-utils
yum-config-manager --add-repo https://packages.centreon.com/rpm-standard/22.10/el7/centreon-22.10.repo
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://packages.centreon.com/api/security/keypair/Debian/public | gpg --dearmor > /etc/apt/trusted.gpg.d/centreon.gpg
echo "deb https://packages.centreon.com/artifactory/apt-plugins-stable/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/centreon-plugins.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://packages.centreon.com/artifactory/apt-plugins-stable/pool/nrpe/centreon-nrpe3-plugin_4.1.0-150207_amd64.deb
ethttps://packages.centreon.com/artifactory/apt-plugins-stable/pool/nrpe/centreon-nrpe3-daemon_4.1.0-150207_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