Vous êtes ici:

Menu


Stacks Image 9724
NRPD (Nagios Remote Data Processeur) est un programme utilisant le protocole ppt ou https et permettant d’envoyer des informations à destination des contrôles passifs d’une supervision Nagios ou équivalente. Cette solution est passé en GPL le 27 août 2018, il est maintenant possible de l'utiliser avec Centreon.
Les hôtes envoient les informations par l’intermédiaire d’un exécutable bash, php ou python. Le serveur de supervision réceptionne le résultat par l’intermédiaire d’une application Web. Celui-ci envoie les informations un dossier via le mécanisme checkResults. le moteur de supervision traitera ensuite les informations selon ses disponibilités.Il est obligatoire d’activer les commandes externes du moteur de supervision.

1 Installation de NRDP sur le serveur de supervision

L’installation de NRDP nécessite une configuration apache spécifique pour l'intégration avec Centreon.

1.1 Installation

Téléchargez les prérequis.
Debian
apt-get install wget -y
CENTREON
yum install wget -y
Décompressez l’archive NRDP dans le dossier /usr/local/src
cd /usr/local/src
wget https://github.com/NagiosEnterprises/nrdp/archive/2.0.0.tar.gz
tar xvf 2.0.0.tar.gz
cd nrdp-*
Copions les fichiers dans le dossier du moteur centengine. Adaptez en fonction de votre configuration.
Debian
mkdir /usr/local/nrdp
cp -r clients server LICENSE* CHANGES* /usr/local/nrdp
chown -R www-data:www-data /usr/local/nrdp
CENTREON
mkdir /usr/local/nrdp
cp -r clients server LICENSE* CHANGES* /usr/local/nrdp
chown -R apache:apache /usr/local/nrdp
Si vous n'utilisez que la fonction serveur, utilisez ces commandes
Debian
mkdir /usr/local/nrdp
cp -r server LICENSE* CHANGES* /usr/local/nrdp
chown -R www-data:www-data /usr/local/nrdp
CENTREON
mkdir /usr/local/nrdp
cp -r server LICENSE* CHANGES* /usr/local/nrdp
chown -R apache:apache /usr/local/nrdp

1.2 Configuration

Modifiez le fichier de configuration de NRPD pour adapter le chemin des commandes externes du moteur de supervision et ajouter le token qui servira pour l'authentification de la communication.
vi /usr/local/nrdp/server/config.inc.php
Choisissez un token, pour notre essai, nous allons décommander le deuxième
$cfg["authorized_tokens"] = array(
    // "mysecrettoken",  // <-- not a good token
    "90dfs7jwn3",     // <-- a better token (don't use this exact one, make your own)
);
Choisissez le user qui pourra exécuter les commandes externes
$cfg["nagios_command_group"] = "centreon-engine";
Modifiez la ligne suivante pour le chemin de la commande externe
command_file=/var/lib/centreon-engine/rw/centengine.cmd
Modifiez la ligne suivante pour le chemin du dossier checkresults
Debian
$cfg["check_results_dir"] = "/var/spool/checkresults";
CENTREON
$cfg["check_results_dir"] = "/var/spool/nagios/checkresults";

1.3 Création du dossier checkresults

Assurez-vous d'avoir un user nagios et son dossier /var/spool/nagios. L'ISO Centreon 19.04 a normalement ce prérequis. Créez le dossier checkresults. Pour Debian, utilisez le user centreon-engine.
Debian
mkdir /var/spool/checkresults
chown centreon-engine:centreon-engine /var/spool/checkresults
chmod 775 /var/spool/checkresults/
CENTREON
mkdir /var/spool/nagios/checkresults
chown nagios:nagios /var/spool/nagios/checkresults
chmod 775 /var/spool/nagios/checkresults/

1.4 Configuration apache

Nous devons adapter la configuration apache avec la fonctionnalité fpm. Par convention nous utiliserons le port 9044, le 9042 étant utilisé par Centreon et si vous avez Nagvis décrit dans mes tutos, il utilise le port 9043. Créez un fichier nrdp.conf pour apache
Debian
vi /etc/apache2/conf-available/nrdp.conf
CENTREON
vi /opt/rh/httpd24/root/etc/httpd/conf.d/nrdp.conf
Modifiez le fichier comme suit :
# Nrdp Apache2 sample configuration file
#
# #############################################################################

Alias /nrdp /usr/local/nrdp/server/

<LocationMatch ^/nrdp/(.*\.php(/.*)?)$>
  ProxyPassMatch fcgi://127.0.0.1:9044/usr/local/nrdp/server/$1
</LocationMatch>
ProxyTimeout 300

<Directory "/usr/local/nrdp/server">
    DirectoryIndex index.php
    Options Indexes
    AllowOverride all
    Order allow,deny
    Allow from all
    Require all granted
    <IfModule mod_php5.c>
        php_admin_value engine Off
    </IfModule>

    AddType text/plain hbs
</Directory>

RedirectMatch ^/$ /nrdp
Nous devons créer une configuration php-fpm pour Nrpd.
Debian
vi /etc/php/7.1/fpm/pool.d/nrpd.conf
CENTREON
vi /etc/opt/rh/rh-php71/php-fpm.d/nrpd.conf
Configurez comme ceci.
Debian
[nrdp]
user = www-data
group = www-data
listen = 127.0.0.1:9044
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 30
pm.process_idle_timeout = 10s
pm.max_requests = 500
rlimit_files = 4096
php_admin_value[error_log] = /var/log/fpm-php.nrdp.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/sessions
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
CENTREON
[nrdp]
user = apache
group = apache
listen = 127.0.0.1:9044
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 30
pm.process_idle_timeout = 10s
pm.max_requests = 500
rlimit_files = 4096
php_admin_value[error_log] = /var/opt/rh/rh-php71/log/php-fpm/nrpd-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/opt/rh/rh-php71/lib/php/session
php_value[soap.wsdl_cache_dir]  = /var/opt/rh/rh-php71/lib/php/wsdlcache
Relancez Apache pour qu'il prenne en compte la nouvelle configuration.
Debian
a2enconf nrdp.conf
systemctl restart apache2 php7.1-fpm
CENTREON
systemctl restart rh-php71-php-fpm
systemctl restart httpd24-httpd

1.4 vérification

Connectez-vous sur l'interface web
http://<IP du serveur>/nrdp
Vous devriez avoir cette vue
Stacks Image 36946
Il est possible de vérifier le fonctionnement en saisissant le token et cliquant sur le bouton "Submit JSON Check Result".
Stacks Image 36967
Si vous avez bien configuré votre installation, vous devriez avoir le message OK et des fichier dans le dossier chekresults.
ls /var/spool/nagios/checkresults/
cqb3kWN  cqb3kWN.ok  ct1oeCS  ct1oeCS.ok

1.5 activation de checkresult dans Centreon

Il reste à activer la fonctionnalité checkresults dans Centreon. Connectez-vous dans votre interface Centreon. sélectionnez Configuration > Pollers > Engine configuration. Modifiez la configuration du poller, section Result Cache.
Stacks Image 36980
Check result directory : /var/spool/nagios/checkresults
Status : yes
Max Check Result File Age : 0
Appliquez la configuration avec la méthode restart. Ne tenez pas compte du message Warning, il indique que cette fonctionnalité risque d'être supprimée dans les versions futures.
Stacks Image 36985
Si vous avez réalisé le test précédent, vous devriez retrouver les messages suivant dans le fichier de log /var/log/centreon-engine/centengine.log
[1562138439] [4481] Warning: Check result queue contained results for host 'somehost', but the host could not be found! Perhaps you forgot to define the host in your config files ?
[1562138439] [4481] Warning: Check result queue contained results for service 'someservice' on host 'somehost', but the service could not be found! Perhaps you forgot to define the service in your config files ?

2 Installation du client NRDP sur les hôtes à superviser

2.1 Linux

2.1.a Installation du client

L'installation du client est identique au serveur. On installera seulement la partie client.
mkdir /usr/local/nrdp
cp -r clients LICENSE* CHANGES* /usr/local/nrdp
chown -R centreon:centreon /usr/local/nrdp

2.1.b Test du client

Maintenant, vérifions le fonctionnement de NSCA. Lancez cette commande dans le dossier du client nsca.
/usr/local/nrdp/clients/send_nrdp.sh -u http://192.168.1.53/nrdp/ -t 90dfs7jwn3 -H servdebian -s "test_nrdp" -S 1 -o "WARNING: The disk is 75% full"
La commande doit vous retourner le résultat suivant.
Sent 1 checks to http://192.168.1.53/nrdp/
Contrairement à NSCA, le message indique la communication a bien été établie. Si nous avions envoyé la même commande avec un token non reconnu, nous aurions le message suivant :
ERROR: The NRDP Server said BAD TOKEN
Il est tout de même possible de vérifier le fonctionnement du serveur nrdp en activant la fonction debug. Editez le fichier de configuration /usr/local/nrdp/server/config.inc.php
$cfg["debug"] = true;
si vous tentez une autre commande, un fichier debug.log est créé dans le dossier /usr/local/nrdp/server. Voici le contenu :
[Wed, 03 Jul 2019 09:34:11 +0200] check_auth()
[Wed, 03 Jul 2019 09:34:11 +0200] check_token()
[Wed, 03 Jul 2019 09:34:11 +0200]  checking token: 90dfs7jwn3
[Wed, 03 Jul 2019 09:34:11 +0200]  * token passed
[Wed, 03 Jul 2019 09:34:11 +0200] nagioscorecmd_process_request(cbtype = PROCESS_REQUEST, args[cmd] = submitcheck
[Wed, 03 Jul 2019 09:34:11 +0200] nagioscorecmd_process_request() had no registered callbacks, returning
[Wed, 03 Jul 2019 09:34:11 +0200] nagioscorepassivecheck_process_request(cbtype = PROCESS_REQUEST, args[cmd] = submitcheck
[Wed, 03 Jul 2019 09:34:11 +0200] REQUEST: [token] 90dfs7jwn3
[Wed, 03 Jul 2019 09:34:11 +0200] REQUEST: [cmd] submitcheck
[Wed, 03 Jul 2019 09:34:11 +0200] REQUEST: [xml] <?xml version='1.0'?>
                                      <checkresults>
                                      <checkresult type='service' checktype='1'>
                                          <servicename>test_nrdp</servicename><hostname>servdebian</hostname>
                                      <state>1
                                      <output><![CDATA[WARNING: The disk is 75% full]]></output>
                                      </checkresult>
                                      </checkresults>
[Wed, 03 Jul 2019 09:34:11 +0200] our xml: SimpleXMLElement Object
                                  (
                                      [checkresult] => SimpleXMLElement Object
                                          (
                                              [@attributes] => Array
                                                  (
                                                      [type] => service
                                                      [checktype] => 1
                                                  )

                                              [servicename] => test_nrdp
                                              [hostname] => servdebian
                                              [state] => 1
                                              [output] => SimpleXMLElement Object
                                                  (
                                                  )

                                          )

                                  )

[Wed, 03 Jul 2019 09:34:11 +0200] gathered the following datas:
                                  type: service
                                  hostname: servdebian
                                  servicename: test_nrdp
                                  state: 1
                                  output: WARNING: The disk is 75% full
                                  allow_old_results:
                                  time: 0

[Wed, 03 Jul 2019 09:34:11 +0200] nrdp_write_check_output_to_cmd(hostname=servdebian, servicename=test_nrdp, state=1, type=service, output=WARNING: The disk is 75% full
[Wed, 03 Jul 2019 09:34:11 +0200] nrdp_write_check_output_to_cmd() completed
[Wed, 03 Jul 2019 09:34:11 +0200] all nrdp checks have been written

2.2 Windows avec NSClient ++

Nous allons étudier le fonctionnement avec l'agent NSCLIENT++. Nous utiliserons la version 0.5x. Modifions le fichier de configuration nsclient.ini. Tout d'abord, il faut charger les modules adéquats dans la section modules.
[/modules]
NSCAClient = enabled
Scheduler = enabled
Nous définirons le nom de l'hôte qui sera utilisé par Centreon. Dans notre exemple, le nom du serveur Windows sera préfixé par la chaîne win_
[/settings/NSCA/client]
hostname = win_${host}
Il faudra définir la cible du serveur Centreon. On peut aussi définir le mode de chiffrage ainsi qu'un éventuel mot de passe. Le fichier du démon NSCA sur le serveur devra être en corrélation.
[/settings/NSCA/client/targets/default]
address = 10.0.3.70
encryption = aes
password = centreon
Pour déclencher automatiquement un script pour NSCA, on active un scheduler. Il faut aussi le configurer, par défaut, on appliquera 5 minutes.
[/settings/scheduler/schedules/default]
interval = 5m
Nous ajouterons le ou les services qui devront être activé par le scheduleur. Le module CheckSystem devra être activé.
[/settings/scheduler/schedules]
test_nsca = alias_cpu
Redémarrez le service NSCLIENT et vérifions le résultat dans le fichier de log de centreon-engine. La deuxième ligne est normale car le service n'existe pas dans Centreon.
[1564059784] [4834] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;win_WIN2008R2;test_nsca;0;OK: CPU load is ok.|'total 5m'=1%;80;90 'total 1m'=0%;80;90 'total 5s'=1%;80;90
[1564059784] [4834] Warning:  Passive check result was received for service 'test_nsca' on host 'win_WIN2008R2', but the service could not be found!
Si vous ne voyez rien dans ce fichier, vérifiez le fichier de log système (var/log/syslog pour Debian ou /var/log/message pour CentOS) s'il n'y a pas un problème de chiffrage comme cet exemple :
Jul 25 14:52:49 srv-ang-inf070 nsca[1520]: Received invalid packet type/version from client - possibly due to client using wrong password or crypto algorithm?

3 Configuration de Centreon

Il reste à réaliser la configuration de notre service dans Centreon. Nous aurons besoin d’un service passif et nous utiliserons une version 19.04 avec les plugins pack free.

3.1 Modèle de service passif

Nous utiliserons le modèle déjà créé par les plugins-pack, le modèle generic-passive-service-custom. Les paramètres de ce modèle hérite du modèle en lecture seule generic-passive-service.
Stacks Image 19641

3.1a Création d'un modèle de service passif

Pour info, si vous n'avez pas les plugins pack, les commandes clapi pour créer un modèle de service passif
Centreon-Clapi

centreon -u admin -p password -o STPL -a add -v "service-generique-passif;service-generique-passif;"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;check_period;24x7"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;check_command;check_centreon_dummy"
centreon -u admin -p password -o STPL -a setparam -v 'service-generique-passif;check_command_arguments;!0!OK'
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;max_check_attempts;1"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;normal_check_interval;1"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;retry_check_interval;1"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;active_checks_enabled;0"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;passive_checks_enabled;1"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;notifications_enabled;1"
centreon -u admin -p password -o STPL -a addcontactgroup -v "service-generique-passif;Supervisors"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;notification_interval;0"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;notification_period;24x7"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;notification_options;w,c,r,f,s"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;first_notification_delay;0"
centreon -u admin -p password -o STPL -a setparam -v "service-generique-passif;service_check_freshness;1"

3.2 le service passif test_nrpd

3.2.a configuration

Nous pourrions créer un template de service NRDP mais pour notre exemple, il sera plus simple de créer directement un service. Nous appellerons ce service test_nrdp et il sera associé à l’hôte servdebian.
Stacks Image 19700
création du service test_nsca

3.2.b application de la configuration

Une fois la configuration appliquée sur votre serveur, vous pouvez visualiser le service dans la page Monitoring Services.
Stacks Image 10457
Le service est mode pending et restera dans ce mode tant qu’une opération d’acquittement ou d’envoi de commande NRDP ne soient pas réalisés.
Stacks Image 19773
Acquittez le service.
Stacks Image 19786
Votre service est opérationnel.

4 Vérifications et essais avec le client NRDP en ligne de commande

Testons notre installation. Connectez vous sur le serveur servdebian et testez en envoyant les lignes de commandes suivantes.

4.1 état warning

root@servdebian:/usr/local/nrdp/clients/send_nrdp.sh -u http://192.168.1.53/nrdp/ -t 90dfs7jwn3 -H servdebian -s "test_nrdp" -S 1 -o "WARNING: test warning"
Sent 1 checks to http://192.168.1.53/nrdp/
Vous trouverez dans les logs du moteur
[1562140602] [5245] PASSIVE SERVICE CHECK: servdebian;test_nrdp;1;WARNING: test warning
[1562140602] [5245] SERVICE ALERT: servdebian;test_nrdp;WARNING;HARD;1;WARNING: test warning
Stacks Image 19830

4.2 état critique

root@servdebian:/usr/local/nrdp/clients/send_nrdp.sh -u http://192.168.1.53/nrdp/ -t 90dfs7jwn3 -H servdebian -s "test_nrdp" -S 2 -o "CRITICAL: test critical"
Sent 1 checks to http://192.168.1.53/nrdp/
Vous trouverez dans les logs du moteur
[1562140807] [5245] PASSIVE SERVICE CHECK: servdebian;test_nrdp;2;CRITICAL: test critical
[1562140807] [5245] SERVICE ALERT: servdebian;test_nrdp;CRITICAL;HARD;1;CRITICAL: test critical
Stacks Image 19858

4.3 état OK

root@servdebian:/usr/local/nrdp/clients/send_nrdp.sh -u http://192.168.1.53/nrdp/ -t 90dfs7jwn3 -H servdebian -s "test_nrdp" -S 0 -o "OK: retour à la normale"
Sent 1 checks to http://192.168.1.53/nrdp/
Vous trouverez dans les logs du moteur
[1562141057] [5245] PASSIVE SERVICE CHECK: servdebian;test_nrdp;0;OK: retour à la normale
[1562141057] [5245] SERVICE ALERT: servdebian;test_nrdp;OK;HARD;1;OK: retour à la normale
Stacks Image 19845

4.4 données de performances et graphes

/usr/local/nrdp/clients/send_nrdp.sh -u http://192.168.1.53/nrdp/ -t 90dfs7jwn3 -H servdebian -s "test_nrdp" -S 2 -o "CRITICAL: test data|nbcritical=10"
Sent 1 checks to http://192.168.1.53/nrdp/
Vous trouverez dans les logs du moteur
[1562141402] [5245] PASSIVE SERVICE CHECK: servdebian;test_nrdp;2;CRITICAL: test data
[1562141402] [5245] SERVICE ALERT: servdebian;test_nrdp;CRITICAL;HARD;1;CRITICAL: test data
Stacks Image 19903
Stacks Image 19916
On constate la création de la métrique nbcritical dans le détail du service
Stacks Image 36908
Il est possible d'avoir un graphe.
Vous avez découvert le protocole nrdp, j'attire votre attention que ce programme risque d'être obsolète avec les prochaines versions de Centreon. Vous découvrirez bientôt un autre système plus en adéquation avec la supervision Centreon.
comments powered by Disqus
comments powered by Disqus
 Vous êtes ici: