Oracle
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Oracle

Agent Check Check de l'Agent

Supported OS: Linux Mac OS Windows

Dashboard Oracle

Présentation

Recueillez des métriques de serveurs d’Oracle Database en temps réel pour visualiser et surveiller leurs performances et leur disponibilité.

Implémentation

Installation

Prérequis

Pour utiliser l’intégration Oracle, installez les bibliothèques Oracle Instant Client ou téléchargez le pilote JDBC d’Oracle. En raison des restrictions de licence, ces bibliothèques ne sont pas intégrées à l’Agent Datadog, mais peuvent être téléchargées directement sur le site d’Oracle.

Remarque : JPype, l’une des bibliothèques utilisées par l’Agent, dépend spécifiquement de Microsoft Visual C++ Runtime 2015. Assurez-vous que ce runtime est installé sur votre système.

Pilote JDBC
Oracle Instant Client

Le check Oracle nécessite un accès au module Python cx_Oracle ou au pilote JDBC d’Oracle :

  1. Accédez à la page de téléchargement et installez les paquets SDK et Basic d’Instant Client.

    Si vous utilisez Linux, une fois les bibliothèques Instant Client installées, vérifiez que l’éditeur de liens à l’exécution peut trouver les bibliothèques. Par exemple, avec ldconfig :

    # Put the library location in an ld configuration file.
    
    sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > \
       /etc/ld.so.conf.d/oracle-instantclient.conf"
    
    # Update the bindings.
    
    sudo ldconfig
  2. Décompressez ces bibliothèques dans un répertoire donné auquel tous les utilisateurs ont accès sur la machine concernée (par ex., /opt/oracle) :

    mkdir -p /opt/oracle/ && cd /opt/oracle/
    unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip
    unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip

Création d’un utilisateur Datadog

Créez un utilisateur datadog en lecture seule avec un accès approprié à votre serveur Oracle Database. Connectez-vous à votre base de données Oracle avec un utilisateur bénéficiant des droits administrateur (par ex., SYSDBA ou SYSOPER) et exécutez ce qui suit :

-- Activez le script Oracle.
ALTER SESSION SET "_ORACLE_SCRIPT"=true;

-- Créez l'utilisateur Datadog. Remplacez le placeholder du mot de passe par un mot de passe sécurisé.
CREATE USER datadog IDENTIFIED BY <MOTDEPASSE>;

-- Accordez les droits d'accès à l'utilisateur Datadog.
GRANT CONNECT TO datadog;
GRANT SELECT ON GV_$PROCESS TO datadog;
GRANT SELECT ON gv_$sysmetric TO datadog;
GRANT SELECT ON sys.dba_data_files TO datadog;
GRANT SELECT ON sys.dba_tablespaces TO datadog;
GRANT SELECT ON sys.dba_tablespace_usage_metrics TO datadog;

Remarque : si vous utilisez Oracle 11g, vous n’avez pas besoin d’exécuter la ligne suivante :

ALTER SESSION SET "_ORACLE_SCRIPT"=true;

Configuration

Host

Suivez les instructions ci-dessous pour configurer ce check lorsque l’Agent est exécuté sur un host. Consultez la section Environnement conteneurisé pour en savoir plus sur les environnements conteneurisés.

  1. Modifiez le fichier oracle.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent. Mettez à jour les paramètres server et port pour définir les masters à surveiller. Consultez le fichier d’exemple oracle.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

    init_config:
    
    instances:
     ## @param server - string - required
     ## The IP address or hostname of the Oracle Database Server.
     #
     - server: localhost:1521
    
       ## @param service_name - string - required
       ## The Oracle Database service name. To view the services available on your server,
       ## run the following query:
       ## `SELECT value FROM v$parameter WHERE name='service_names'`
       #
       service_name: "<SERVICE_NAME>"
    
       ## @param user - string - required
       ## The username for the user account.
       #
       user: datadog
    
       ## @param password - string - required
       ## The password for the user account.
       #
       password: "<PASSWORD>"
  2. Redémarrez l’Agent.

Requêtes personnalisées uniquement

Pour ignorer les checks de métrique par défaut pour une instance et exécuter uniquement des requêtes personnalisées avec un utilisateur qui recueille les métriques existantes, insérez le tag only_custom_queries avec la valeur true. Les métriques de système, de processus et de tablespace ne seront alors pas exécutées par les instances configurées de l’intégration Oracle, et les requêtes personnalisées pourront être exécutées sans que l’utilisateur ne dispose des autorisations décrites dans la section Création d’un utilisateur Datadog. Si vous omettez ce paramètre de configuration, l’utilisateur que vous spécifiez devra disposer de ces autorisations sur les tables pour exécuter une requête personnalisée.

init_config:

instances:
  ## @param server - chaîne - obligatoire
  ## L'adresse IP ou le hostname du serveur Oracle Database.
  #
  - server: localhost:1521

    ## @param service_name - chaîne - obligatoire
    ## Le nom du service Oracle Database. Pour afficher les services disponibles sur votre serveur,
    ## exécutez la requête suivante :
    ## `SELECT value FROM v$parameter WHERE name='service_names'`
    #
    service_name: "<NOM_SERVICE>"

    ## @param user - chaîne - obligatoire
    ## Le nom d'utilisateur du compte utilisateur.
    #
    user: <UTILISATEUR>

    ## @param password - chaîne - obligatoire
    ## Le mot de passe du compte utilisateur.
    #
    password: "<MOTDEPASSE>"

    ## @param only_custom_queries - chaîne - facultatif
    ## Définissez ce paramètre sur n'importe quelle valeur pour exécuter uniquement des
    ## requêtes personnalisées pour cette instance.
    #
    only_custom_queries: true

Environnement conteneurisé

Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.

ParamètreValeur
<NOM_INTÉGRATION>oracle
<CONFIG_INIT>vide ou {}
<CONFIG_INSTANCE>{"server": "%%host%%:1521", "service_name":"<NOM_SERVICE>", "user":"datadog", "password":"<MOT_DE_PASSE>"}

Validation

Lancez la sous-commande status de l’Agent et cherchez oracle dans la section Checks.

Requête personnalisée

L’utilisation de requêtes personnalisées est également prise en charge. Chaque requête doit comporter trois paramètres :

ParamètreDescription
metric_prefixIl s’agit du préfixe de chaque métrique.
queryIl s’agit du SQL à exécuter. Cela peut être une simple déclaration ou un script sur plusieurs lignes. Toutes les rangées du résultat sont évaluées.
columnsIl s’agit d’une liste représentant toutes les colonnes, ordonnées séquentiellement de gauche à droite. Deux types d’informations sont obligatoires :
a. type : la méthode d’envoi (gauge, count, etc.).
b. nom : le suffixe à ajouter à metric_prefix afin de former un nom de métrique complet. Si type est tag, cette colonne est alors considérée comme un tag et sera appliquée à chaque métrique recueillie par cette requête spécifique.

Utilisez le paramètre tags (facultatif) pour appliquer une liste de tags à chaque métrique recueillie.

Les métriques suivantes :

self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value'])
self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value'])

représentent ce que deviendrait l’exemple de configuration suivant :

- metric_prefix: oracle.custom_query
  query: | # Utilisez une barre verticale si votre script comporte plusieurs lignes.
    SELECT columns
    FROM tester.test_table
    WHERE conditions
  columns:
    # Utilisez ces caractères pour chaque colonne à ignorer :
    - {}
    - name: metric1
      type: gauge
    - name: tag1
      type: tag
    - name: metric2
      type: count
  tags:
    - tester:oracle

Consultez le fichier d’exemple oracle.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

Données collectées

Métriques

oracle.buffer_cachehit_ratio
(gauge)
Ratio of buffer cache hits
Shown as fraction
oracle.cursor_cachehit_ratio
(gauge)
Ratio of cursor cache hits
Shown as fraction
oracle.library_cachehit_ratio
(gauge)
Ratio of library cache hits
Shown as fraction
oracle.shared_pool_free
(gauge)
shared pool free memory %
Shown as percent
oracle.physical_reads
(gauge)
physical reads per sec
Shown as read
oracle.physical_writes
(gauge)
physical writes per sec
Shown as write
oracle.enqueue_timeouts
(gauge)
enqueue timeouts per sec
Shown as timeout
oracle.gc_cr_block_received
(gauge)
GC CR block received
Shown as block
oracle.cache_blocks_corrupt
(gauge)
corrupt cache blocks
Shown as block
oracle.cache_blocks_lost
(gauge)
lost cache blocks
Shown as block
oracle.logons
(gauge)
number of logon attempts
oracle.active_sessions
(gauge)
number of active sessions
oracle.long_table_scans
(gauge)
number of long table scans per sec
Shown as scan
oracle.service_response_time
(gauge)
service response time
Shown as second
oracle.user_rollbacks
(gauge)
number of user rollbacks
Shown as operation
oracle.sorts_per_user_call
(gauge)
sorts per user call
oracle.rows_per_sort
(gauge)
rows per sort
Shown as row
oracle.disk_sorts
(gauge)
disk sorts per second
Shown as operation
oracle.memory_sorts_ratio
(gauge)
memory sorts ratio
Shown as fraction
oracle.database_wait_time_ratio
(gauge)
memory sorts per second
Shown as fraction
oracle.session_limit_usage
(gauge)
session limit usage
Shown as percent
oracle.session_count
(gauge)
session count
oracle.process.pga_used_memory
(gauge)
PGA memory used by process
Shown as byte
oracle.process.pga_allocated_memory
(gauge)
PGA memory allocated by process
Shown as byte
oracle.process.pga_freeable_memory
(gauge)
PGA memory freeable by process
Shown as byte
oracle.process.pga_maximum_memory
(gauge)
PGA maximum memory ever allocated by process
Shown as byte
oracle.temp_space_used
(gauge)
temp space used
Shown as byte
oracle.tablespace.used
(gauge)
tablespace used
Shown as byte
oracle.tablespace.size
(gauge)
tablespace size
Shown as byte
oracle.tablespace.in_use
(gauge)
tablespace in-use
Shown as fraction
oracle.tablespace.offline
(gauge)
tablespace offline

Événements

Le check Oracle Database n’inclut aucun événement.

Checks de service

oracle.can_connect Permet de vérifier que la base de données est disponible et accepte les connexions.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.