Centreon / Nagios : Supervision de base Oracle avec check_oracle_health

oracle logo

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 :

check_oracle_health command
check_oracle_health command

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” :

Oracle-Server-Check_connection-time
Oracle-Server-Check_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.

About Alexandre Nogard

Check Also

Centreon : EventHandler Restart de Borne Wifi / DECT automatique Cisco & Ascom

Vous est il déjà arrivé d’avoir des bornes Wifi / DECT qui perdent la connexion, …

Centreon : Supervision de leases DHCP avec Infoblox

Utilisant la solution de DHCP infoblox depuis maintenant 2 ans. J’ai “développé” un petit script …

ISPConfig 3 : Virtualisation & Management avec OpenVZ

Après les deux précédents articles sur ISPConfig 3 : Installation d’ISPconfig 3 sur CentOs 6.4 …

5 comments

  1. 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é ;)

  2. 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.

  3. Bonjour,
    Merci pour ce tuto d’install
    pourriez-vous nous donner un exemple d’utilisation pour dataguard et asm
    merci

  4. 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 !

  5. 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

Leave a Reply

Your email address will not be published. Required fields are marked *