---
categories: monitoring
title: Howto NRPE
---

* Documentation : <https://assets.nagios.com/downloads/nagioscore/docs/nrpe/NRPE.pdf>
* Statut de cette page : test / bookworm

NRPE (Nagios Remote PluginExecutor) permet d'exécuter de façon légère des commandes prédéfinies sur un serveur distant.
Historiquement il est utilisé par NAGIOS pour des « checks » sur un serveur distant.
Il peut également être utilisé par [Icinga](HowtoIcinga).
Il supporte SSL/TLS ce qui permet d'avoir un minimum de sécurité.

## Installation

~~~
# apt install nagios-nrpe-server monitoring-plugins monitoring-plugins-basic monitoring-plugins-common monitoring-plugins-standard nagios-plugins-contrib

$ /usr/sbin/nrpe --version
NRPE - Nagios Remote Plugin Executor
Version: 4.1.0

# systemctl status nagios-nrpe-server
● nagios-nrpe-server.service - Nagios Remote Plugin Executor
     Loaded: loaded (/lib/systemd/system/nagios-nrpe-server.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-07-28 15:55:54 CEST; 3 days ago
       Docs: http://www.nagios.org/documentation
   Main PID: 549 (nrpe)
      Tasks: 1 (limit: 2356)
     Memory: 1.7M
        CPU: 15ms
     CGroup: /system.slice/nagios-nrpe-server.service
             └─549 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -f
~~~


## Configuration

Nous utilisons le fichier `/etc/nagios/nrpe.d/evolix.cfg` pour surcharger la configuration par défaut.

`/etc/nagios/nrpe.d/evolix.cfg` :

~~~
# Allowed IPs
allowed_hosts=192.0.2.42,192.0.2.43

# System checks
command[check_load]=/usr/lib/nagios/plugins/check_load --percpu --warning=0.7,0.6,0.5 --critical=0.9,0.8,0.7
command[check_swap]=/usr/lib/nagios/plugins/check_swap -a -w 30% -c 20%
command[check_disk1]=/usr/lib/nagios/plugins/check_disk -e -w 10% -c 3% -W 10% -K 3% -C -w 5% -c 2% -W 5% -K 2% -p /home -x /lib/init/rw -x /dev -x /dev/shm -x /run -I '^/run/' -I '^/sys/'
command[check_zombie_procs]=sudo /usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=sudo /usr/lib/nagios/plugins/check_procs -w 400 -c 600
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10

# Generic services checks
command[check_smtp]=/usr/lib/nagios/plugins/check_smtp -H localhost
command[check_dns]=/usr/lib/nagios/plugins/check_dns -H evolix.net
command[check_ntp]=/usr/lib/nagios/plugins/check_ntp -H ntp.evolix.net
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh localhost
command[check_mailq]=/usr/lib/nagios/plugins/check_mailq -M postfix -w 10 -c 20

# Specific services checks
command[check_pgsql]=/usr/lib/nagios/plugins/check_pgsql -H localhost -l nrpe -p 'PASSWORD'
command[check_mysql]=/usr/lib/nagios/plugins/check_mysql -H localhost -f ~nagios/.my.cnf
...
~~~

> *Note* : dans des versions précédentes de Debian, il n'était pas vraiment possible de surcharger la configuration : des options en double provoquait une activation aléatoire d'une option ou d'une autre !


## Principe

Le principe est qu'un démon écoute sur le port TCP/5666 et qu'on peut ainsi exécuter une commande distante définie dans la configuration.

~~~
/usr/lib/nagios/plugins/check_nrpe -H 192.0.2.42 -c check_load
OK - load average: 0.01, 0.01, 0.01|load1=0.012;0.700;0.900;0; load5=0.010;0.600;0.800;0; load15=0.010;0.500;0.700;0; 
~~~

> *Note* : il faut savoir que le `check_load` lance simplement la commande définie dans la configuration.
Cela peut-être un check, mais aussi n'importe quelle commande ou script de son choix !


## checks

Même si ce n'est pas directement lié à NRPE, listons quelques checks intéressants.

### check_load

Vu l'utilisation massive de plusieurs CPUs, il est très intéressant d'utiliser l'option `--percpu` qui permet au check de s'adapter tout seul au nombre de CPUs :

~~~
$ /usr/lib/nagios/plugins/check_load --percpu --warning=0.7,0.6,0.5 --critical=0.9,0.8,0.7
~~~

### check_disk

Plusieurs options sont intéressantes :

* `-e` : check toutes les partitions mais en cas d'erreur, n'affiche que les partitions qui sont en erreur (WARN, CRIT ou UNKN)
* `-x /run` : ignore une partition
* `-I '^/run/' : ignore les partitions selon un pattern
* `-C -w 5% -c 2% -W 5% -K 2% -p /home` : donne des seuils d'alertes différents pour une partition

### check_http

Plusieurs options sont intéressantes :

* `-S -H example.com -C 15,5` : vérifie que la validité d'un certificat SSL/TLS est inférieure à 15 jours (WARN) ou 5 jours (CRIT)


