Pour utiliser l’intégration Oracle, vous pouvez soit utiliser le client natif (aucune étape d’installation supplémentaire requise), soit télécharger le pilote JDBC d’Oracle (Linux uniquement). Pour utiliser l’intégration Oracle avec JDBC, téléchargez le pilote JDBC d’Oracle. Si vous n’utilisez pas la méthode JDBC, la version minimale prise en charge est Oracle 12c.
En raison des restrictions de licence, la bibliothèque JDBC n’est pas incluse dans l’Agent Datadog, mais elle peut être téléchargée directement sur le site d’Oracle.
Avec l’Agent v7.42.x, l’installation des bibliothèques Instant Client n’est plus requise ni prise en charge. Si vous utilisez une version plus ancienne de l’Agent et que vous voulez utiliser l’Instant Client, reportez-vous aux instructions d’installation d’Oracle Instant Client.
Remarque : à partir de la v7.42.x, l’intégration Oracle ne prend plus en charge que Python 3.
REMARQUE : cette méthode fonctionne uniquement pour Linux.
Pour JPype, l’une des bibliothèques utilisées par l’Agent lors de l’utilisation du pilote JDBC, Java 8 ou ultérieur doit être présent sur votre système.
Une fois l’installation terminée, suivez les étapes ci-dessous :
Ajoutez le chemin vers le fichier téléchargé dans votre $CLASSPATH ou le fichier de configuration du check sous jdbc_driver_path (consultez le fichier d’exemple oracle.yaml).
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, comme 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 :
Connectez-vous à la base de données root en tant qu’administrateur pour créer un utilisateur datadog et accorder les autorisations nécessaires :
alter session set container = cdb$root;
CREATE USER c##datadog IDENTIFIED BY password CONTAINER=ALL;
GRANT CREATE SESSION TO c##datadog CONTAINER=ALL;
Grant select any dictionary to c##datadog container=all;
GRANT SELECT ON GV_$PROCESS TO c##datadog CONTAINER=ALL;
GRANT SELECT ON gv_$sysmetric TO c##datadog CONTAINER=ALL;
Pour configurer ce check lorsque l’Agent est exécuté sur un host :
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 username - string - required## The username for the Datadog user account.#username:<USERNAME>## @param password - string - required## The password for the Datadog user account.#password:<PASSWORD>
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 rubrique 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
Pour vous connecter à Oracle via TCPS (TCP avec SSL), supprimez la mise en commentaire de l’option de configuration protocol et sélectionnez TCPS. Modifiez l’option server en la définissant sur le serveur TCPS à surveiller.
init_config:instances:## @param server - string - required## The IP address or hostname of the Oracle Database Server.#- server:localhost:1522## @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:<USER>## @param password - string - required## The password for the user account.#password:"<PASSWORD>"## @param protocol - string - optional - default: TCP## The protocol to connect to the Oracle Database Server. Valid protocols include TCP and TCPS.#### When connecting to Oracle Database via JDBC, `jdbc_truststore` and `jdbc_truststore_type` are required.## More information can be found from Oracle Database's whitepaper:#### https://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf#protocol:TCPS
Modifiez les options sqlnet.ora, listener.ora et tnsnames.ora de façon à autoriser les connexions TCPS sur votre instance Oracle Database.
Si vous n’utilisez pas la méthode JDBC, vérifiez que l’Agent Datadog parvient à se connecter à votre base de données. Utilisez l’outil de ligne de commande sqlplus en précisant les informations que vous avez indiquées dans vos options de configuration :
Si vous vous connectez à Oracle Database à l’aide de JDBC, vous devez également spécifier les paramètres jdbc_truststore_path et jdbc_truststore_type, ainsi que le paramètre jdbc_truststore_password (facultatif) si le truststore possède un mot de passe.
Remarque : les truststores SSO ne nécessitent pas de mot de passe.
# Dans la section `instances:`...## @param jdbc_truststore_path - chaîne, facultatif## Le chemin du fichier truststore JDBC.#jdbc_truststore_path:/chemin/vers/truststore## @param jdbc_truststore_type - chaîne, facultatif## Le type de fichier truststore JDBC. Valeurs autorisées : JKS, SSO et PKCS12.#jdbc_truststore_type:SSO## @param jdbc_truststore_password - chaîne, facultatif## Le mot de passe du truststore utilisé lors de la connexion via JDBC.## jdbc_truststore_password: <MOTDEPASSE_TRUSTSTORE_JDBC>
Pour en savoir plus sur la connexion à Oracle Database via TCPS sur JDBC, consultez le livre blanc officiel d’Oracle (en anglais).
L’utilisation de requêtes personnalisées est également prise en charge. Chaque requête doit comporter trois paramètres :
Paramètre
Description
metric_prefix
Il s’agit du préfixe de chaque métrique.
query
Il 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.
columns
Il 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 défini sur 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.
représentent ce que deviendrait l’exemple de configuration suivant :
- metric_prefix:oracle.custom_queryquery:|# Utilisez une barre verticale si votre script comporte plusieurs lignes.SELECT columnsFROM tester.test_tableWHERE conditionscolumns:# Utilisez ces caractères pour chaque colonne à ignorer :- {}- name:metric1type:gauge- name:tag1type:tag- name:metric2type:counttags:- tester:oracle
Créez une configuration de requête pour faciliter l’identification des verrouillages de base de données :
Pour inclure une requête personnalisée, modifiez conf.d\oracle.d\conf.yaml. Supprimez la mise en commentaire du bloc custom_queries, ajoutez les requêtes et colonnes nécessaires, puis redémarrez l’Agent.
init_config:instances:- server:localhost:1521service_name:orcl11g.us.oracle.comuser:datadogpassword:xxxxxxxjdbc_driver_path:/u01/app/oracle/product/11.2/dbhome_1/jdbc/lib/ojdbc6.jartags:- db:oraclecustom_queries:- metric_prefix:oracle.custom_query.locksquery:| select blocking_session, username, osuser, sid, serial# as serial, wait_class, seconds_in_wait
from v_$session
where blocking_session is not NULL order by blocking_sessioncolumns:- name:blocking_sessiontype:gauge- name:usernametype:tag- name:osusertype:tag- name:sidtype:tag- name:serialtype:tag- name:wait_classtype:tag- name:seconds_in_waittype:tag
Pour accéder à v_$session, accordez l’autorisation à DATADOG et testez les autorisations.
SQL> grant select on sys.v_$session to datadog;
## connexion avec l'utilisateur DD pour valider l'accès :
SQL> show user
USER is "DATADOG"
## création d'un synonyme pour rendre la vue visible
SQL> create synonym datadog.v_$session for sys.v_$session;
Synonym created.
SQL> select blocking_session,username,osuser, sid, serial#, wait_class, seconds_in_wait from v_$session
where blocking_session is not NULL order by blocking_session;
Une fois la configuration terminée, vous pouvez créer un monitor basé sur les métriques oracle.custom_query.locks.
Si une erreur de type JVMNotFoundException survient :
JVMNotFoundException("No JVM shared library file ({jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.})"
Assurez-vous que la variable d’environnement JAVA_HOME est définie et qu’elle pointe vers le bon répertoire.
Ajoutez la variable d’environnement requise à /etc/environment :
JAVA_HOME=/path/to/java
Redémarrez ensuite l’Agent.
Si l’erreur Unsupported major.minor version 52.0 s’affiche, cela signifie que vous exécutez une version de Java qui n’est pas
assez récente. Vous devez mettre à niveau Java sur votre système ou installer une nouvelle version et pointer votre variable
JAVA_HOME vers la nouvelle installation, tel qu’expliqué ci-dessus.
Vérifiez que vos variables d’environnement sont définies correctement en exécutant la commande suivante depuis l’Agent.
Assurez-vous que les résultats affichés correspondent à la bonne valeur.