Supervision Oracle Database avec Centreon

Hello, Nous allons voir dans cet article comment mettre en place la supervision Oracle avec Centreon et Centreon Plugins Pack. Il est nécessaire d’installer le client Oracle sur votre plate-forme de supervision. Oracle est installé sur un serveur Unix (IBM AIX  7.4).

Ce qu’il vous faut :

Configuration requise sur votre serveur Centreon :

  • Installer le client Oracleoracle-client-19c-installation-sous-centos7-centreon/
  • Configurer les variables d’environnement pour l’user root, oracle et surtout centreon-engine
    • LD_LIBRARY_PATH
    • ORACLE_HOME
    • TNS_ADMIN
    • NLS_LANG
  • Ajouter les fichiers de configuration de vos bases de données (../network/admin).
    • TNSNAMES.ORA
    • SQLNET.ORA

Supervision Oracle via CLI

Commençons par la supervision Oracle en ligne de commande. Connectez-vous à votre serveur Centreon et placez-vous dans le répertoire ou vous avez installé les plugins centreon.

Chercher le plugin pour Oracle.

[root@centreon plugins]# ./centreon_plugins.pl --list-plugin | grep oracle | grep PLUGIN
# PLUGIN: database::oracle::plugin
PLUGIN: network::oracle::infiniband::snmp::plugin
PLUGIN: network::oracle::otd::snmp::plugin
PLUGIN: storage::oracle::zs::snmp::plugin
[root@centreon plugins]#

Afficher les modes disponibles :

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --list-mode

Plugin Description:
    Check Oracle Server.

    --hostname
            Hostname to query.

    --port  Database Server Port.

    --sid   Database SID.

    --servicename
            Database Service Name.

Global Options:
    --mode  Choose a mode.

    --dyn-mode
            Specify a mode with the path (separated by '::').

    --list-mode
            List available modes.

    --mode-version
            Check minimal version of mode. If not, unknown error.

    --version
            Display plugin version.

    --sqlmode
            Choose a sql mode (Default: "dbi").

    --list-sqlmode
            List available sql modes.

    --multiple
            Multiple database connections (some mode needs it).

Modes Available:
   asm-diskgroup-usage
   connected-users
   connection-time
   corrupted-blocks
   data-files-status
   datacache-hitratio
   event-waits-usage
   invalid-object
   list-asm-diskgroups
   long-queries
   password-expiration
   process-usage
   rman-backup-age
   rman-backup-problems
   rman-online-backup-age
   rollback-segment-usage
   session-usage
   sql
   sql-string
   tablespace-usage
   temp-usage
   tnsping
   undo-usage
[root@centreon plugins]#

Il y a de quoi faire hein ! je ne compte pas les faire tous et pour ceux qui maîtrise SQL, ils vont se régaler puisqu’on peut exécuter des requêtes SQL depuis Centreon.

Check-Oracle-TNSPing

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=tnsping --hostname=PIXELABS --sid=PIXEL --port=1521
OK: Connection established to listener 'PIXEL'. |
[root@centreon plugins]#

Check-Connected-Users

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=connected-users --hostname=PIXELABS --sid=PIXEL --port=1521 --username=system --password=pixel123
OK: 7 Connected user(s). | 'connected_users'=7;;;0;
[root@centreon plugins]#

Check-CorruptedBlocks

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=corrupted-blocks --hostname=PIXELABS --sid=PIXEL --port=1521 --username=system --password=pixel123
OK: 0 corrupted blocks. | 'corrupted_blocks'=0;;;0;
[root@centreon plugins]#

Check-DataFilesStatus

Ajoutez le paramètres –verbose pour avoir plus d’infos.

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=data-files-status --hostname=PIXELABS --port=1521 --sid=PIXEL --username=system --password=pixel123 --warning-online-status='%{online_status}=~/sysoff/i' --critical-online-status='%{online_status}=~/offline|recover/i' --verbose
OK: All data files are ok |
Data file 'DONNEES//pixelabs/pixel/base/donnees.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'DONNEES//pixelabs/pixel/base/donnees02.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'DONNEES//pixelabs/pixel/base/donnees03.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'INDEXES//pixelabs/pixel/base/indexes.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'INDEXES//pixelabs/pixel/base/indexes02.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'INDEXES//pixelabs/pixel/base/indexes03.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'PIX//pixelabs/pixel/base/pix.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'SYSAUX//pixelabs/pixel/base/sysaux.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'SYSTEM//pixelabs/pixel/base/system.dbf' Status : AVAILABLE, Online Status : SYSTEM
Data file 'UNDO//pixelabs/pixel/base/undo.dbf' Status : AVAILABLE, Online Status : ONLINE
Data file 'WRKODI//pixelabs/pixel/base/wkodi.dbf' Status : AVAILABLE, Online Status : ONLINE
[root@centreon plugins]#

Check-DataCacheHitRatio

Evaluer les performances de vos bases de données avec le mode DATACACHE HITRATIO

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=datacache-hitratio --hostname=PIXELABS --sid=PIXEL --username=system --password=pixel123 --warning-usage='95:' --critical-usage='90:'
OK: Buffer cache hit ratio is 99.65% | 'sga_data_buffer_hit_ratio'=99%;95:;90:;0;100
[root@centreon plugins]#

Check-ProcessUsage

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=process-usage --hostname=PIXELABS --port=1521 --sid=PIXEL --username=system --password=pixel123 --warning='90' --critical='95'
OK: 22.00% of process resources used. | 'process_used'=22.00%;0:80;0:90;0;100
[root@centreon plugins]#

Check-TableSpaceUsage

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=tablespace-usage --hostname=PIXELABS --port=1521 --sid=PIXEL --username=system --password=PIXEL123 --warning-tablespace=90 --critical-tablespace=95 --verbose
OK: All tablespaces are OK | 'tbs_data_usage_data'=22936158208B;0:61847499571;0:65283471769;0;68719443968 'tbs_geda_usage_geda'=25302401024B;0:30923749785;0:32641735884;0;34359721984 'tbs_indx_usage_indx'=6388449280B;0:30923749785;0:32641735884;0;34359721984 'tbs_perf_usage_perf'=160169984B;0:966367641;0:1020054732;0;1073741824 'tbs_sysaux_usage_sysaux'=1048248320B;0:1932735283;0:2040109465;0;2147483648 'tbs_system_usage_system'=3357278208B;0:30923749785;0:32641735884;0;34359721984 'tbs_temp_usage_temp'=20971520B;0:30923749785;0:32641735884;0;34359721984
Tablespace 'data' Total: 64.00 GB Used: 21.36 GB (33.38%) Free: 42.64 GB (66.62%)
Tablespace 'geda' Total: 32.00 GB Used: 23.56 GB (73.64%) Free: 8.44 GB (26.36%)
Tablespace 'indx' Total: 32.00 GB Used: 5.95 GB (18.59%) Free: 26.05 GB (81.41%)
Tablespace 'perf' Total: 1.00 GB Used: 152.75 MB (14.92%) Free: 871.25 MB (85.08%)
Tablespace 'sysaux' Total: 2.00 GB Used: 999.69 MB (48.81%) Free: 1.02 GB (51.19%)
Tablespace 'system' Total: 32.00 GB Used: 3.13 GB (9.77%) Free: 28.87 GB (90.23%)
Tablespace 'temp' Total: 32.00 GB Used: 20.00 MB (0.06%) Free: 31.98 GB (99.94%)
[root@centreon plugins]#

Check-SQLString (Requête SQL) #1

Un petit exemple pour l’utilisation du mode SQL. Je lance une requête SQL pour vérifier la version Oracle de ma base de données.

Directement sur le serveur :

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
# Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

SQL>

Depuis Centreon :

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=sql --hostname=PIXELABS --port=1521 --sid=PIXEL --username=system --password=pixel123 --sql-statement='select * from v$version' --format='SQL statement result'
OK: SQL statement result | 'value'=Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production;;;;
[root@centreon plugins]#

Il est possible d’améliorer les résultats (–help).

Check-SQLString (Requête SQL) #2

Allez encore une requête. On vérifie si la base est démarré ou pas (instance=ACTIVE).

Sur le serveur directement :

SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
----------------- -------- ------------ --- ---------- ------- ---
LOGINS     SHU  DATABASE_STATUS   INSTANCE_ROLE     ACTIVE_ST  BLO
---------- --- ----------------- ------------------ --------- ---
ALLOWED    NO   ACTIVE            PRIMARY_INSTANCE  NORMAL     NO

SQL>

J’ai dû supprimer des lignes pour y voir clair. La colonne qui nous intéresse c’est DATABASE_STATUS

Requête SQL : SQL#> select database_status from v$instance;

[root@centreon plugins]# ./centreon_plugins.pl --plugin=database::oracle::plugin --mode=sql --hostname=PIXELABS --port=1521 --sid=PIXEL --username=system --password=pixel123 --sql-statement='select database_status from v$instance' --format='SQL statement result'
OK: SQL statement result | 'value'=ACTIVE;;;;
[root@centreon plugins]#

La base est ACTIVE. Amusez-vous bien 🙂

Supervision Oracle via UI

Passons maintenant à la supervision Oracle via Centreon web. Faisons les choses étape par étape :

  • Step 1 : création des macros nécessaire
  • Step 2 : création des commandes
  • Step 3 : création d’hôte (serveur de base de données)
  • Step 4 : création de services pour l’hôte
  • Step 5 : exporter la configuration

Création de macros : vous devez avoir déjà les macros suivantes : #Macros_personnalisees 

Ajouter en plus les macros suivantes :

  • $_SERVICEFORMAT$
  • $_SERVICESQLSTATEMENT$

Passons à la deuxième étape.

Les amis, je vais créer 3 ou 4 commandes/services et à vous de faire le reste.

Check-Oracle-TNSPing

Allez dans : Configuration > Commandes > Contrôles

  • Nom de commande : Check-Oracle-TNSPing
  • Ligne de commande : copier/coller
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --sid=$_SERVICESID$

Rappel : $USER2$ = Centreon plugins Path = /usr/lib/centreon/plugins

Check-Oracle-TNSPing Centreon

Remarque : si vous avez personnalisé les ports Oracle, ajoutez le paramètre --port=$_SERVICEPORT$

  • Sauvegarder.

Check-Oracle-TableSpace

Allez dans : Configuration > Commandes > Contrôles

  • Nom de commande : Check-Oracle-TableSpace
  • Ligne de commande : copier/coller
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --sid=$_SERVICESID$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning-tablespace=$_SERVICEWARNING$ --critical-tablespace=$_SERVICECRITICAL$ $_SERVICEOPTION$

Rappel : $USER2$ = Centreon plugins Path = /usr/lib/centreon/plugins

Check-Oracle-TableSpace-Usage Centreon

  • Sauvegarder.

Check-Oracle-HitRatio

Allez dans : Configuration > Commandes > Contrôles

  • Nom de commande : Check-Oracle-DataCachHitRatio
  • Ligne de commande : copier/coller
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --port=$_SERVICEPORT$ --sid=$_SERVICESID$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning-usage=$_SERVICEWARNING$ critical-usage=$_SERVICECRITICAL$ $_SERVICEOPTION$

Rappel : $USER2$ = Centreon plugins Path = /usr/lib/centreon/plugins

Check-Oracle-Version (Requête SQL)

Allez dans : Configuration > Commandes > Contrôles

  • Nom de commande : Check-Oracle-Version
  • Ligne de commande : copier/coller
$USER2$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --mode=$_SERVICEMODE$ --hostname=$HOSTADDRESS$ --sid=$_SERVICESID$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --sql-statement=$_SERVICESQLSTATEMENT$ --format=$_SERVICEFORMAT$ $_SERVICEOPTION$

Rappel : $USER2$ = Centreon plugins Path = /usr/lib/centreon/plugins

Check-Oracle-Version SQL String Centreon

  • Sauvegarder.

Création d’hôte & Services

Vous savez le faire normalement hein 🙂

Allez dans : Configuration > Hôtes > Ajouter

Creation hote oracle centreon

  • Onglet Notification
    • Période de notification : workhours ou 24×7

Service Check-Oracle-TNSPing

  • Allez dans Configuration > Services > Ajouter
    • Description : Check-PIXEL-TNSPing (PIXEL = nom de la base de données)
    • Lié aux hôtes : Serveur de base de données (PIXELABS)
    • Modèle : Rien (ou service_template)
    • Commande de vérification : sélectionnez dans la liste la commande : Check-Oracle-TNSPing
      • PLUGIN : database::oracle::plugin
      • MODE : tnsping
      • SID : PIXEL

Check Oracle TNSPing Service Centreon

  • Période de contrôle : 24×7
  • Onglet Notification
    • Période de notification : wordhours ou 24×7
  • Sauvegarder

Service Check-Oracle-TableSpace

  • Allez dans Configuration > Services > Ajouter
    • Description : Check-PIXEL-TableSpace (PIXEL = nom de la base de données)
    • Lié aux hôtes : Serveur de base de données (PIXELABS)
    • Modèle : Rien (ou service_template)
    • Commande de vérification : sélectionnez dans la liste la commande : Check-Oracle-TableSpace
      • PLUGIN : database::oracle::plugin
      • MODE : tablespace-usage
      • SID : PIXEL
      • USERNAME : system
      • PASSWORD : pixel123
      • WARNING : 90
      • CRITICAL : 95
      • OPTION : --verbose

Check-Oracle-TableSpace-Usage Service Centreon

  • Période de contrôle : 24×7
  • Onglet Notification
    • Période de notification : wordhours ou 24×7
  • Sauvegarder

Service Check-Oracle-HitRatio

  • Allez dans Configuration > Services > Ajouter
    • Description : Check-PIXEL-HitRatio (PIXEL = nom de la base de données)
    • Lié aux hôtes : Serveur de base de données (PIXELABS)
    • Modèle : Rien (ou service_template)
    • Commande de vérification : sélectionnez dans la liste la commande : Check-Oracle-DataCacheHitRatio
      • PLUGIN : database::oracle::plugin
      • MODE : datacache-hitratio
      • SID : PIXEL
      • USERNAME : system
      • PASSWORD : pixel123
      • WARNING : ’90:’
      • CRITICAL : ’80:’
      • OPTION : –verbose

Check-Oracle-DataCachHitRatio Service Centreon

  • Période de contrôle : 24×7
  • Onglet Notification
    • Période de notification : wordhours ou 24×7
  • Sauvegarder

Service Check-Oracle-Version (SQL)

  • Allez dans Configuration > Services > Ajouter
    • Description : Check-PIXEL-Version (PIXEL = nom de la base de données)
    • Lié aux hôtes : Serveur de base de données (PIXELABS)
    • Modèle : Rien (ou service_template)
    • Commande de vérification : sélectionnez dans la liste la commande : Check-Oracle-Version
      • PLUGIN : database::oracle::plugin
      • MODE : sql
      • SID : PIXEL
      • USERNAME : system
      • PASSWORD : pixel123
      • SQLSTATEMENT : select * from v$version
      • FORMAT : SQL statement result
      • OPTION : –verbose

Check-Oracle-Version SQL String Service Centreon

  • Période de contrôle : 24×7
  • Onglet Notification
    • Période de notification : wordhours ou 24×7
  • Sauvegarder

Supervision Oracle Résultat 🙂

Exporter la configuration et relancer le collecteur Central :

Oracle Database Monitoring Centreon Server

Check-PIXEL-Version :

Get Oracle Version SQL Command Centreon

C’est terminé. A vous de mettre en place les autres services. N’oubliez pas de superviser la charge, le CPU, Memory, Disk, Hardware, de votre serveur de base de données. N’hésitez pas en cas de besoin.

Bonne journée et à bientôt.

 
Besoin d’aide ? des questions ?

Venez sur le forum
logo Forum Pixelabs
***********
La rédaction de cette documentation demande beaucoup de temps, de motivation, mais surtout beaucoup de café 🙂

Vous aimez pixelabs ?

Offrez moi un petit café en cliquant sur la tasse ci-dessous.
pixelans_donation
Merci !

42 réponses

  1. tassin dit :

    Bonjour, j’utilise centreon et je trouve votre site super. Je monitore entre autres le remplissage de la FRA. mais je suis confronté à un problème avec mes plateforme en DataGuard pour avoir cette info sur la standby database. La standby database étant en ‘mount’ il faut s’y connecter en sysdba pour avoir accès aux vues system. Or le plugin ne le permet pas ou je ne l’ai pas trouvé. Quel serait la solution ? svp merci d’avance

    • sysadmin dit :

      Salut,
      J’ai pas bien compris !
      As-tu testé une commande ? t’as un retour, des erreurs ?
      -sysadmin

      • tassin dit :

        Sur une architecture oracle DataGuard (replication) la base Standby n’est pas OPEN mais en MOUNT. La seule possibilité pour se connecter à une base MOUNT pour requéter les vues system, est de se connecter en SYSDBA. Or avec Centreon je n’ai pas trouvé cette possibilité. J’ai forcement à chaque fois le message “ORA-01033: Oracle initialization or shutdown in progress”
        Y a t’il cette possibilité de se connecter en SYSDBA ? et que je serais passé à coté …
        Ou faut il utiliser un autre plugin ?
        Merci, Cdlt

        • sysadmin dit :

          Salut,
          Il y a normalement un mot de passe par défaut pour les comptes dba, system, sysdba.
          Si tu ne peux pas, essaies avec un compte simple qui a droit de lire dans la base de données.

          Pour l’info que tu cherches, il suffit d’utiliser une requête SQL directement avec le plugin Centreon.

          Voici un exemple :
          J’ai une base de PROD aussi qui réplique sur une base de test (DataGuard archi aussi).
          Lors de la réplication, la base de Test est normalement fermée aux users et une fois la réplication terminée, la base de Test doit être montée et ouvert aux users.
          je check donc avec Centreon pour vérifier si la base est montée et bien ouverte aux utilisateurs.
          Voici la commande de check :

          perl centreon_plugins.pl --plugin=database::oracle::plugin --mode=sql --hostname=DB_SERVER --sid=DB_NAME --username=sysdba --password=PASSWORD --sql-statement='select * from bases' --format='La base est accessible aux utilisateurs'
          --sql-statement='select * from bases'

          est la requête qui vérifie simplement le statut de la base.

          Normalement, si la base n’est pas accessible aux utilisateurs, le service passe en INCONNU.
          Il est possible de le forcer pour qu’il passe en CRITICAL et non en INCONNU on rajoutant ce paramètre suivant.

          --sql-errors-exit='critical'

          Donc, dans ton cas, il suffit aussi de trouver juste la requête qui te retourne l’info que tu cherches et tu check avec Centreon.
          Bonne journée,
          -sysadmin.