Surveiller vos serveurs Linux avec Nagios et NRPE

Date: 17/10/2007 | Catégories: Open-source,Reseau | Tags: ,,

Suite à l'introduction sur les greffons Nagios, voici une simple procédure pour mettre en place le monitoring de serveurs sous Linux (voir ce billet pour des serveurs BSD ou Mac OS X) à partir de Nagios en utilisant le plugin NRPE.

Sur votre serveur Nagios...

... il faut installer le plugin NRPE. Pour cela, le plus simple est de faire confiance à votre gestionnaire de paquets.

Sous Fedora, la commande suivante devrait suffire:

# sudo yum install nagios-plugins-nrpe

Sous Ubuntu/Debian:

# sudo apt-get install nagios-nrpe-plugin

Il faut également vérifier que la définition du plugin est bien présente dans le fichier de configuration des commandes (commands.cfg):

...
######
# NRPE
######

# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
...

Sur votre serveur Linux à surveiller...

La procédure est un peu plus longue. Il faut d'abord installer le daemon NRPE et les plugins Nagios (qui vont être lancés localement par le daemon NRPE):

Sous Fedora:

# sudo yum install nrpe
# sudo yum install nagios-plugins-all

Sous Ubuntu/Debien:

# sudo apt-get install nagios-nrpe-server
# sudo apt-get install nagios-plugins

Puis éditer le fichier /etc/nagios/nrpe.cfg pour modifier la ligne suivante:

...
allowed_hosts = Mettre ici l'adresse IP de votre serveur Nagios
...

On automatise le lancement du daemon au démarrage du serveur avec la commande:

# chkconfig --add nrpe

On ajoute une règle pour autoriser le Firewall IPtable à laisser passer les requêtes NRPE (à adapter selon vos règles):

# iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 5666 -j ACCEPT
Attention il faut mettre deux - (- -) avant l'option dport

Il ne reste plus qu'à lancer le daemon:

Sous Fedora:

# service nrpe start

Sous Ubuntu/Debien:

# /etc/init.d/nagios-nrpe-server start

On teste la communication...

Pour tester que la communication entre le serveur Nagios et le serveur à surveiller se passe bien, il suffit de se rendre dans le répertoire des plugins (/usr/lib/nagios/plugins) de Nagios et de tester le plugin NRPE:

# ./check_nrpe -H Adresse_IP_du_serveur_Linux
NRPE v2.7

Si tout est OK, cette commande devrait renvoyer la version du daemon NRPE.

Vous pouvez tester directement les plugins avec la commande suivante (exemple donnée pour un check de la charge):

# ./check_nrpe -H Adresse_IP_du_serveur_Linux -c check_load

On configure Nagios...

La dernière étape consiste à modifier les fichiers de configuration de Nagios pour intégrer le monitoring du/des serveur Linux. Il faut dans un premier temps éditer votre fichier de configuration des hosts (hosts.cfg par défaut) et y ajouter votre machine Linux:

define host {
use generic-host
host_name linus
alias Ma machine Linux
address 192.168.0.7
}

Puis ajouter les services offerts par NRPE (dans le fichier services.cfg), quelques exemples:

# Charge CPU
define service{
use generic-service
host_name remotehost
service_description CPU Load
check_command check_nrpe!check_load
}

# Memoire
define service{
use generic-service
host_name remotehost
service_description Memory
check_command check_nrpe!check_mem
}

Pour ajouter des nouveaux plugins executable par NRPE, il faut éditer le fichier /etc/nagios/nrpe.cfg et ajouter une ligne par service:

...
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda
...

Ne pas oublier de relancer le daemon quand on change le fichier de configuration (nrpe.cfg):

# service nrpe restart

Il est bien entendu possible d'écrire son propre plugin Nagios et de le faire exécuter par NRPE.

  • Petite coquille, il s’agit de nrpe.cfg et non de nrpe.conf 😉

  • @Mr Xhark: Corrigé ! thx

  • Nico

    Bonjour,

    j’ai suivi le tuto pour l’installation de NRPE, impeccable, merci.

    Par contre, juste un petit souci pour le lancement automatique du daemon.

    Lorsque je tape « # chkconfig –add nrpe », j’obtient :
    nrpe unknown service

    Merci

    • TZ

      Si vous êtes sous Ubuntu ou Debian, il faut faire un « chkconfig –add nagios-nrpe-server ».

      Il faut toujours se baser sur le script installé dans le « /etc/init.d » lors de l’installation par « apt-get ».

  • simon

    salut
    je pourrais savoir la syntaxe du fichier services.cfg et merci

  • Mickaël

    Bonjour,

    Je voudrais savoir s’il était possible d’installer les plugins centreon en stand alone sur ma machine NRPE car je souhaiterais utiliser le plugin check_centreon_snmp_remote_storage.
    J’ai essayé de le copier à partir de la machine centreon vers la machine NRPE dans le dossier /usr/lib/nagios/plugins mais j’ai le retour suivant:
    Unable to read output.

    Merci d’avance pour votre aide et à Nico pour ses tutoriels très bien faits.

  • julien

    Salut Nico,
    j’ai installé nagios et centreon sur ma machine mais maintenant je voudrais que Nagios détecte toutes les machines présentes sur le réseaux, je suis dans une entreprise de plus de 200 pcs donc taper tous les Define host à la main ça serait trop long, aurait tu une idée de comment je peux faire, sachant que NSClient est installé sur toutes les machines.
    Merci d’avance.

    • @Julien: le plus simple est de faire un script perl qui va scanner ton réseau avec des ping et générer la conf nagions. Tu dois pouvoir en trouver sur le net.

  • Kevin Campion

    Sous Debian, il ne s’agit pas de commands.cfg mais de /etc/nagios-plugins/config/check_nrpe.cfg

    Et son contenu est le suivant : # this command runs a program $ARG1$ with arguments $ARG2$
    define command {
    command_name check_nrpe
    command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
    }

    # this command runs a program $ARG1$ with no arguments
    define command {
    command_name check_nrpe_1arg
    command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    }

  • okiSeb

    J’ai installé Nagios en suivant tes tutos sur Ubuntu 10.10, j’ai installé NRPE coté serveur Nagios et client CentOS et la comandes check_load me retourne « code 127 :plugin may be missing » dans l’interface web.
    Hors la commande « ./check_nrpe -H Adresse_IP_du_serveur_CentOS » me retourne bien « NRPE v2.12 » et la commande « ./check_nrpe -H Adresse_IP_du_serveur_CentOS -c check_load » me retourne « OK… »
    Aurais-tu une idée ? Aurais-je loupé un détail ?

    Merci

    • okiSeb

      Bon en cherchant un peu j’ai finalement trouvé une solution, je en sais pas si c’est normal mais l’install des plugins via yum install ne se fait pas dans le même répertoire que l’install de Nagios décrite sur ton tuto, donc j’ai 2 dossiers de plugins :
      « /usr/local/nagios/libexec » : reconnus par l’interface web
      « /usr/lib/nagios/plugins » : executables uniquement à la mano…
      Donc j’ai copié celui qui me manquant (check_nrpe) dans /usr/local/nagios/libexec/ et maintenant ça fonctionne nikel !

      J’ai du coup également récupéré le script perl « check_memory.pl » (d’ailleurs ils ont changé l’url du coup ton lien n’est plus bon) installé Nagios::plugin sur le client et modifié le script pour qu’il retourne la mémoire totale et utilisée contre seulement la mémoire libre de base 🙂

  • Pingback: Nagios & NRPE : Surveiller l’utilisation de la mémoire | RRR : Ma cervelle éclatée sur le net()

  • free

    bonjour ,
    quand je fais :
    # iptables -I RH-Firewall-1-INPUT 10 -p tcp –dport 5666 -j ACCEPT
    un message d’erreur : iptables: no chain/target/match by that name
    je ne comprend pas cette erreur
    merci

    • ano

      try it :
      # iptables -I INPUT 10 -p tcp –dport 5666 -j ACCEPT

  • Pour ma part j’avais un « CHECK_NRPE: Error – Could not complete SSL handshake. » qui a été résolu par allowed_hosts=IP_NAGIOS_SERVER,127.0.0.1

    (je n’avais pas mis 127.0.0.1)

    HTH

  • amin

    bonjour ,
    s.v.p , j’ai un petit pblm !
    lorsque je met au niveau de fichier de configuration de nagios3 :
    define host {
    use generic-host
    ..
    address xx.xx.xx.xx
    }
    ça marche ,mais lorsque je met :

    define host {
    use linux-server
    ..
    address xx.xx.xx.xx
    } il n’est pas connue par nagios sachant que j’ai essayé d’installer nrpe

  • inserm

    Bonsoir,

    On tapant la commande suivante :

    iptables -I RH-Firewall-1-INPUT -p tcp -m tcp –dport 5666 -j ACCEPT
    ça m’affiche :

    iptables: No chain/target/match by that name.

    D’ou peut venir ce message d’erreur ?

    Merci.

  • Pingback: Surveiller vos serveurs Linux avec Nagios et NRPE | Networking & Security Jimbi | Scoop.it()

  • Pingback: NAGIOS | Pearltrees()

  • redman6150

    Bonjour,

    Chouette les tutos 🙂 Je viens d’acquérir un Raspberry PI et je me suis dis que j’allais essayer avec une carte SD de 2go. J’un un soucis avec la commande ./check_nrpe. il me met « connection refused by host ». J’ai mis la règle « iptables -I INPUT 10 -p tcp –dport 5666 -j ACCEPT » aussi bien sur le serveur nagios (Raspberry PI) que le linux à surveiller (Ubuntu Desktop 13.04). Quelqu’un sait d’où cela peu provenir?

  • anno

    Bonjour à tous, j’ai configuré les plugins NRPE suivant ce tuto mais le problème est quand je tape la commande ./check_nrpe @IP serveur à surveiller j’ai cette erreur : check_nrpe : could not complete ssl handshake. et quand je mets localhost à la place de l’@IP ca marche

    dans le fichier nrpe.cfg j’ai bien ajouté @IP du serveur nagios

  • Benji P.

    Bonjour à tous. ( Merci Nicolas pour ce tuto)
    Pour ceux qui comme moi rencontrent ces problèmes :
    1/ CHECK_NRPE: Socket timeout after 10 seconds.
    2/ CHECK_NRPE: Error – Could not complete SSL handshake.

    Voici les solutions :
    1/ Vérifier les règles de filtrages ( ACL, iptables, pf..)
    2/ en plus de l’IP du serveur, spécifier l’IP localhost (127.0.0.1) dans le fichier de conf.
    example:
    allowed_hosts = 127.0.0.1,192.168.0.1

  • Pingback: Surveiller vos serveurs Linux avec Nagios et NR...()

  • kana

    j’ai une alarme remontée par mon nagios vers centreon qui contient le message d’erreur suivant: « Return code of 128 is out of bounds »
    j’aimerais des explications sur ce code d’erreur et savoir l’origine du problème. merci d’avance

  • yann christophe

    Bonjour Nicolas,

    Merci pour ce tutos que j’ai suivi. Par contre je n’arrive pas à faire ce que je souhaite. Je m’explique j’ai un serveur Nagios j’ai mes check pour plusieurs serveurs pas de soucis. Maintenant j’aimerai que mon serveur nagios demande à un de mes serveur d’exécuter un check_ping vers une @IP défini, dans le but de vérifier la connectivité entre un de mes serveurs et différente @IP.
    donc
    Nagios check nrpe -> serveur avec nrpe check ping -> @IP cliente

    Merci d’avance

    • Laurent

      Salut Yann,
      Je cherche à faire la même chose que toi ….
      As-tu trouvé une solution ?

      Merci

      • yann christophe

        Salut Laurent,

        Oui, il faut installer comme dit dans le tuto nagios-nrpe-server sur la machine distante ensuite il y a un fichier nrpe.cfg où tu pourras configurer la commande check à faire moi c’était un ping.

        Ensuite sur ton server nagios tu définis un service qui aura comme commande check_nrpe!nom_commande_check_server_distant.

        En espérant que cela t’aide.

        A+