Le plugin pour Nagios / Centreon : check_oracle_health est un excellent plugin de supervision de base de données Oracle. Ce plugin pour Oracle permet d’extraire une multitude de données tel que le temps de connexion d’un utilisateur à une base, le nombre d’utilisateurs connectés, la somme des objets invalides, l’espace libre dans un tablespace et bien d’autres compteurs …
Nous l’utiliserons avec Centreon afin d’exploiter les données de monitoring de check_oracle_health sous forme de graphiques. Une partie dédiée à Nagios ce trouve également dans cet article.
Avant de mettre en place le plugin check_oracle_health, plusieurs éléments sont à installer tel que les RPM instantclient fournis par Oracle, quelques librairies perl.
Pour installer les différents packages fournis par Oracle, rendez vous sur la page Instant Client Downloads, téléchargez les packages suivants :
- oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
- oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.x86_64.rpm
- oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
- oracle-instantclient12.1-jdbc-12.1.0.1.0-1.x86_64.rpm
Pour les installer :
# rpm -Uvh oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
# rpm -Uvh oracle-instantclient12.1-jdbc-12.1.0.1.0-1.x86_64.rpm
Nous installons également quelques packages nécessaires :
# yum install libdbi-drivers libdbi perl-DBI
Puis la librairie Perl : DBD-Oracle, nécessaire au bon fonctionnement du plugin check_oracle_health pour notre supervision:
# wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.66.tar.gz
# tar xvzf DBD-Oracle-1.66.tar.gz
# cd DBD-Oracle-1.66
# export ORACLE_HOME=/usr/lib/oracle/12.1/client/lib
# export LD_LIBRARY_PATH=$ORACLE_HOME
# perl Makefile.PL
# make
# make install
On télécharge puis installe check_oracle_health :
# wget http://labs.consol.de/download/shinken-nagios-plugins/check_oracle_health-1.7.8.1.tar.gz
# tar xzvf check_oracle_health-1.7.8.1.tar.gz
# cd check_oracle_health-1.7.8.1
# ./configure –prefix=/usr/local/nagios/libexec –with-nagios-user=nagios –with-nagios-group=nagios
# make
# make install
Puis, comme le préconise le développeur du plugin, nous créons un utilisateur dédié à la supervision, connectez vous à votre base oracle et entrez les lignes suivantes :
CREATE USER nagios IDENTIFIED BY oradbmon;
GRANT CREATE SESSION TO nagios;
GRANT SELECT any dictionary TO nagios;
GRANT SELECT ON V_$SYSSTAT TO nagios;
GRANT SELECT ON V_$INSTANCE TO nagios;
GRANT SELECT ON V_$LOG TO nagios;
GRANT SELECT ON SYS.DBA_DATA_FILES TO nagios;
GRANT SELECT ON SYS.DBA_FREE_SPACE TO nagios;
Nous testons ensuite le bon fonctionnement de notre plugin :
# /usr/local/nagios/libexec/check_oracle_health –connect=XXX.XXX.XXX.XXX –username=nagios –password=nagios –tablespace=SUPERVISION –mode tablespace-usage
CRITICAL - tbs SYSTEM usage is 99.33%
Centreon
Pour ajouter le plugin check_oracle_health dans Centreon : Nous nous connectons à notre Centreon, puis créons la commande suivante :

Il ne reste plus qu’à attacher des services à vos hôtes en changeant les 3 arguments :). La liste des modes est disponible ici : check_oracle_health : liste des modes
Voici le résultat avec le “user connection time” :

Nagios
Pour monitorer votre base oracle avec check_oracle_health depuis centreon, nous créons la commande suivante dans checkcommand.cfg :
define command{
command_name check_oracle_health
command_line /usr/local/nagios/libexec/check_oracle_health –connect=X.X.X.X –username=nagios –password=nagios –tablespace=SUPERVISION –mode $ARG1$ –warning=$ARG2$ –critical=$ARG3$
}
Puis ajoutons dans services.cfg les paramètres suivants :
Nombre d’utilisateurs connectés :
define service{
host_name Oracle-Server
service_description Check_connected-users
use Oracle-server
check_command check_oracle_health!connected-users!80!100
}
Temps de connection à la base Oracle :
define service{
host_name Oracle-Server
service_description Check_connected-users
use Oracle-server
check_command check_oracle_health!connection-time!50!100
}
Objets invalides :
define service{
host_name Oracle-Server
service_description Check_connected-users
use Oracle-server
check_command check_oracle_health!invalid-objects
}
Utilisation du Tablespace :
define service{
host_name Oracle-Server
service_description Check_connected-users
use Oracle-server
check_command check_oracle_health!tablespace-usage!80!90
}
Pour connaitre toute la liste des modes que vous pouvez utiliser avec check_oracle_health, cliquez sur le liens ;).
Vous monitorez maintenant votre Base de Données Oracle avec Centreon / Nagios et le plugin Check_oracle_health.
Si vous avez des remarques, questions, n’hésitez pas ;). N’hésitez pas également à partager cet article.
Merci a toi, tout c’est bien déroulé, je test ça demain quand le DBA aura le temps de me validé l’accès et c’est pas gagné ;)
Salut,
J’ai bien suivi la proc et exécuté la commande :
/usr/lib/nagios/plugins/libexec/check_oracle_health -connect=192.168.25.7 -username=centreon -password=password -tablespace=SUPERVISION -mode tablespace-usage
Mais voici le message que je récupére :'( :
CRITICAL – cannot connect to 192.168.25.7. install_driver(Oracle) failed: Can’t locate DBD/Oracle.pm in @INC (@INC contains: /usr/lib/nagios/plugins/libexec /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at (eval 20) line 3.
Perhaps the DBD::Oracle perl module hasn’t been fully installed,
or perhaps the capitalisation of ‘Oracle’ isn’t right.
Available drivers: DBM, ExampleP, File, Gofer, Proxy, Sponge, mysql.
at /usr/lib/nagios/plugins/libexec/check_oracle_health line 5927.
Bonjour,
Merci pour ce tuto d’install
pourriez-vous nous donner un exemple d’utilisation pour dataguard et asm
merci
Bonjour, ce tutoriel est-il encore valable avec CES 3.3 ? Je pense que oui sachant que Nagios et Centreon Engine en 90% de code en commun. N’ayant pas encore accès à une base oracle (stage), je prepare le terrain :)
Merci pour ce tuto clair et précis !
Salut
Merci pour le tuto !
Par contre j’ai un soucis d’inversion de valeur réele entre tablespace-usage et tablespace-free.
Auriez vous un indice
bonjour j’ai suivi ce tutorial
une erreur se produit”invalid top directory at /usr/lib/perl5/5.8.8/File/Find.pm line 592”quand j’exécute “perl Makefile.PL”
please can anyone help me
merci