• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Monitoring d'Oracle Database avec NRDOT

Aperçu

Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !

Cette fonctionnalité est actuellement fournie dans le cadre d'un aperçu conformément à nos politiques de pré-sortie.

New Relic permet désormais à votre équipe de monitorer les performances de votre base de données Oracle à l'aide de la distribution New Relic d'OpenTelemetry (NRDOT) et des fonctionnalités de monitoring de bases de données de New Relic. Cette intégration offre une visibilité complète sur les métriques de base de données, les performances des requêtes et la santé du système à l'aide du collecteur NRDOT.

Cette approche basée sur NRDOT complète notre On-Host Integration (OHI) existante en s'appuyant sur les standards OpenTelemetry pour le monitoring des bases de données, facilitant ainsi l'intégration avec votre pile d'observabilité existante.

Prérequis

Avant de commencer, assurez-vous d’avoir les éléments suivants :

Configurer le NRDOT Collector pour le monitoring d'Oracle Database

Vous pouvez configurer le monitoring d'Oracle Database à l'aide du collecteur NRDOT dans des environnements sur l'hôte (multitenant) ou RDS. Sélectionnez la configuration appropriée en fonction de votre environnement de base de données et suivez les étapes.

Conseil

Le NRDOT Collector collecte les données de télémétrie liées à la fois à l'infrastructure et à la base de données, afin que vous puissiez disposer d'une solution d'observabilité unifiée pour votre environnement Oracle Database dans New Relic.

Vous pouvez configurer le monitoring d'Oracle Database à l'aide du NRDOT Collector dans des environnements sur l'hôte ou multitenant. Pour installer le NRDOT Collector dans des environnements sur l'hôte (multi-locataires), suivez ces étapes :

Méthode d'installation

Sélectionnez la méthode de distribution de l'installation appropriée pour votre environnement Linux :

Important

Il est recommandé d'installer le collecteur NRDOT sur le même hôte que votre instance Oracle Database pour visualiser les métriques au niveau de l'infrastructure pour le monitoring des performances des requêtes.

Configurer l'utilisateur de la base de données

Créez un utilisateur de monitoring avec les privilèges nécessaires pour votre base de données Oracle multitenant. Cela nécessite de créer un utilisateur commun avec le préfixe C##.

  1. Connectez-vous à la base de données racine en tant qu'administrateur :

    CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<USER_PASSWORD>";

    Conseil

    Assurez-vous que votre USER_PASSWORD respecte les exigences d'Oracle en matière de mot de passe du nouvel utilisateur.

Accorder des privilèges de monitoring pour une base de données multitenant

Exécutez les instructions SQL suivantes pour accorder des privilèges de monitoring. Utilisez le format de nom d'utilisateur correct avec le préfixe C## pour la base de données multi-locataire :

ALTER USER c##<YOUR_DB_USERNAME> SET CONTAINER_DATA=ALL CONTAINER=CURRENT;
GRANT CREATE SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SET CONTAINER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT CONNECT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SYSSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SESSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$STATNAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SYSTEM_EVENT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SHARED_SERVER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$DISPATCHER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$CIRCUIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$RESOURCE_LIMIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$LOCK TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$DATABASE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$PARAMETER TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SQLAREA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SQL TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SQL_PLAN TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.V_$PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$INSTANCE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SGA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SESSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$STATNAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SYSSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SQLAREA TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$LIBRARYCACHE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$ROWCACHE TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$PGASTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$CONTAINERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$CON_SYSMETRIC TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SYSMETRIC TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$FILESTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SYSTEM_EVENT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$ACTIVE_SERVICES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$SESSION_WAIT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON SYS.GV_$ROLLSTAT TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_OBJECTS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_TABLESPACES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_DATA_FILES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON DBA_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_SERVICES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_DATA_FILES TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_TABLESPACE_USAGE_METRICS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON CDB_PDBS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON ALL_USERS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON ALL_VIEWS TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;
GRANT SELECT ON GLOBAL_NAME TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;

Configurer le collecteur NRDOT

  1. Modifiez votre fichier config.yaml disponible à /etc/nrdot-collector-host/, puis ajoutez l'extrait de code suivant :

    Important

    Si vous êtes déjà utilisateur de NRDOT Collector, assurez-vous de fusionner la configuration ci-dessus avec votre fichier config.yaml existant. Cela inclut l'ajout des nouveaux récepteurs, processeurs et exportateurs pour le monitoring d'Oracle Database, tout en conservant vos configurations actuelles.

    extensions:
    health_check:
    receivers:
    otlp:
    protocols:
    grpc:
    http:
    hostmetrics:
    collection_interval: 60s
    scrapers:
    cpu:
    metrics:
    system.cpu.time:
    enabled: false
    system.cpu.utilization:
    enabled: true
    load:
    memory:
    metrics:
    system.memory.utilization:
    enabled: true
    paging:
    metrics:
    system.paging.utilization:
    enabled: false
    system.paging.faults:
    enabled: false
    filesystem:
    metrics:
    system.filesystem.utilization:
    enabled: true
    disk:
    metrics:
    system.disk.merged:
    enabled: false
    system.disk.pending_operations:
    enabled: false
    system.disk.weighted_io_time:
    enabled: false
    network:
    metrics:
    system.network.connections:
    enabled: false
    # Uncomment to enable process metrics, which can be noisy but valuable.
    # processes:
    # process:
    # metrics:
    # process.cpu.utilization:
    # enabled: true
    # process.cpu.time:
    # enabled: false
    filelog:
    include:
    - /var/log/alternatives.log
    - /var/log/cloud-init.log
    - /var/log/auth.log
    - /var/log/dpkg.log
    - /var/log/syslog
    - /var/log/messages
    - /var/log/secure
    - /var/log/yum.log
    newrelicoracledb/cdb:
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "<USERNAME>"
    password: "<PASSWORD>"
    service: "<YOUR_CDB_SERVICE_NAME>"
    collection_interval: 30s
    timeout: 30s
    # enable_tablespace_scraper: true
    # enable_core_scraper: true
    # enable_system_scraper: true
    # enable_connection_scraper: true
    # enable_container_scraper: true
    # enable_database_info_scraper: true
    newrelicoracledb/pdb:
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "<USERNAME>"
    password: "<PASSWORD>"
    service: "<YOUR_CDB_SERVICE_NAME>"
    collection_interval: 30s
    timeout: 30s
    pdb_services: ["ALL"]
    # query_monitoring_response_time_threshold: 500
    # query_monitoring_count_threshold: 30
    # enable_query_monitoring: true
    # enable_pdb_scraper: true
    processors:
    metricstransform:
    transforms:
    - include: system.cpu.utilization
    action: update
    operations:
    - action: aggregate_labels
    label_set: [ state ]
    aggregation_type: mean
    - include: system.paging.operations
    action: update
    operations:
    - action: aggregate_labels
    label_set: [ direction ]
    aggregation_type: sum
    filter/exclude_cpu_utilization:
    metrics:
    datapoint:
    - 'metric.name == "system.cpu.utilization" and attributes["state"] == "interrupt"'
    - 'metric.name == "system.cpu.utilization" and attributes["state"] == "nice"'
    - 'metric.name == "system.cpu.utilization" and attributes["state"] == "softirq"'
    filter/exclude_memory_utilization:
    metrics:
    datapoint:
    - 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_unreclaimable"'
    - 'metric.name == "system.memory.utilization" and attributes["state"] == "inactive"'
    - 'metric.name == "system.memory.utilization" and attributes["state"] == "cached"'
    - 'metric.name == "system.memory.utilization" and attributes["state"] == "buffered"'
    - 'metric.name == "system.memory.utilization" and attributes["state"] == "slab_reclaimable"'
    filter/exclude_memory_usage:
    metrics:
    datapoint:
    - 'metric.name == "system.memory.usage" and attributes["state"] == "slab_unreclaimable"'
    - 'metric.name == "system.memory.usage" and attributes["state"] == "inactive"'
    filter/exclude_filesystem_utilization:
    metrics:
    datapoint:
    - 'metric.name == "system.filesystem.utilization" and attributes["type"] == "squashfs"'
    filter/exclude_filesystem_usage:
    metrics:
    datapoint:
    - 'metric.name == "system.filesystem.usage" and attributes["type"] == "squashfs"'
    - 'metric.name == "system.filesystem.usage" and attributes["state"] == "reserved"'
    filter/exclude_filesystem_inodes_usage:
    metrics:
    datapoint:
    - 'metric.name == "system.filesystem.inodes.usage" and attributes["type"] == "squashfs"'
    - 'metric.name == "system.filesystem.inodes.usage" and attributes["state"] == "reserved"'
    filter/exclude_system_disk:
    metrics:
    datapoint:
    - 'metric.name == "system.disk.operations" and IsMatch(attributes["device"], "^loop.*") == true'
    - 'metric.name == "system.disk.merged" and IsMatch(attributes["device"], "^loop.*") == true'
    - 'metric.name == "system.disk.io" and IsMatch(attributes["device"], "^loop.*") == true'
    - 'metric.name == "system.disk.io_time" and IsMatch(attributes["device"], "^loop.*") == true'
    - 'metric.name == "system.disk.operation_time" and IsMatch(attributes["device"], "^loop.*") == true'
    filter/exclude_system_paging:
    metrics:
    datapoint:
    - 'metric.name == "system.paging.usage" and attributes["state"] == "cached"'
    - 'metric.name == "system.paging.operations" and attributes["type"] == "cached"'
    filter/exclude_network:
    metrics:
    datapoint:
    - 'IsMatch(metric.name, "^system.network.*") == true and attributes["device"] == "lo"'
    attributes/exclude_system_paging:
    include:
    match_type: strict
    metric_names:
    - system.paging.operations
    actions:
    - key: type
    action: delete
    transform/clear_metadata:
    metric_statements:
    - context: metric
    statements:
    - set(metric.description, "")
    - set(metric.unit, "")
    filter/exec_plan_and_query_details_include:
    metrics:
    include:
    match_type: strict
    metric_names:
    - newrelicoracledb.execution_plan
    - newrelicoracledb.slow_queries.query_details
    filter/exec_plan_and_query_details_exclude:
    metrics:
    exclude:
    match_type: strict
    metric_names:
    - newrelicoracledb.execution_plan
    - newrelicoracledb.slow_queries.query_details
    cumulativetodelta/oracle:
    include:
    match_type: strict
    metrics:
    - newrelicoracledb.connection.bytes_received
    - newrelicoracledb.connection.bytes_sent
    - newrelicoracledb.connection.execute_count
    - newrelicoracledb.connection.logons_cumulative
    - newrelicoracledb.connection.parse_count_hard
    - newrelicoracledb.connection.parse_count_total
    - newrelicoracledb.connection.sqlnet_roundtrips
    - newrelicoracledb.connection.user_commits
    - newrelicoracledb.connection.user_rollbacks
    transform/host:
    metric_statements:
    - context: metric
    statements:
    - set(metric.description, "")
    - set(metric.unit, "")
    transform:
    trace_statements:
    - context: span
    statements:
    - truncate_all(span.attributes, 4095)
    - truncate_all(resource.attributes, 4095)
    log_statements:
    - context: log
    statements:
    - truncate_all(log.attributes, 4095)
    - truncate_all(resource.attributes, 4095)
    memory_limiter:
    check_interval: 1s
    limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
    batch:
    resourcedetection:
    detectors: ["system"]
    system:
    hostname_sources: ["os"]
    resource_attributes:
    host.id:
    enabled: true
    resourcedetection/db_safe:
    detectors: ["system"]
    override: false
    system:
    hostname_sources: ["os"]
    resource_attributes:
    host.id:
    enabled: true
    resourcedetection/cloud:
    detectors: ["gcp", "ec2", "azure"]
    timeout: 2s
    override: true
    resourcedetection/env:
    detectors: ["env"]
    timeout: 2s
    override: true
    connectors:
    metricsaslogs:
    include_resource_attributes: true
    include_scope_info: true
    exporters:
    otlp:
    endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
    headers:
    api-key: "<YOUR_NEWRELIC_API_KEY>"
    compression: gzip
    service:
    pipelines:
    metrics/host:
    receivers: [hostmetrics]
    processors:
    - memory_limiter
    - metricstransform
    - filter/exclude_cpu_utilization
    - filter/exclude_memory_utilization
    - filter/exclude_memory_usage
    - filter/exclude_filesystem_utilization
    - filter/exclude_filesystem_usage
    - filter/exclude_filesystem_inodes_usage
    - filter/exclude_system_disk
    - filter/exclude_network
    - attributes/exclude_system_paging
    - transform/host
    - resourcedetection
    - resourcedetection/cloud
    - resourcedetection/env
    - cumulativetodelta/oracle
    - batch
    exporters: [otlp]
    traces:
    receivers: [otlp]
    processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]
    exporters: [otlp]
    metrics:
    receivers: [otlp]
    processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]
    exporters: [otlp]
    logs:
    receivers: [otlp]
    processors: [memory_limiter, transform, resourcedetection, resourcedetection/cloud, resourcedetection/env, batch]
    exporters: [otlp]
    metrics/oracledb:
    receivers: [newrelicoracledb/cdb, newrelicoracledb/pdb]
    processors: [memory_limiter, resourcedetection/db_safe, batch, transform/clear_metadata, filter/exec_plan_and_query_details_exclude]
    exporters: [otlp]
    metrics/exec_plan_and_query_details_to_logs:
    receivers: [newrelicoracledb/cdb, newrelicoracledb/pdb]
    processors: [filter/exec_plan_and_query_details_include]
    exporters: [metricsaslogs]
    logs/oracledb:
    receivers: [metricsaslogs]
    processors: [memory_limiter, resourcedetection/db_safe, batch]
    exporters: [otlp]
    extensions: [health_check]
  2. Définissez les paramètres requis suivants dans le fichier de configuration :

    paramètres

    Description

    <YOUR_DB_HOST>

    Saisissez le nom d'hôte de votre base de données Oracle.

    <YOUR_DB_PORT>

    Saisissez le port de votre base de données Oracle.

    <USERNAME>

    Saisissez le nom d'utilisateur de votre base de données.

    <PASSWORD>

    Saisissez le mot de passe de votre base de données.

    <YOUR_CDB_SERVICE_NAME>

    Saisissez le nom de votre service Oracle.

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    Saisissez le point de terminaison OTLP New Relic. Pour plus d'informations, consultez la documentation sur les endpoints OTLP New Relic.

    <YOUR_NEWRELIC_API_KEY>

    Saisissez votre clé API New Relic.

    pdb_services

    Sélectionnez les services PDB à monitorer parmi les options suivantes :

    • Vide ou nil : collecter uniquement les données de service spécifiées
    • ["ALL"]: Collecter tous les services PDB (à l'exclusion de la CDB)
    • ["pdb1", "pdb2"]: Collecter uniquement les services PDB spécifiés

    enable_query_monitoring

    Obtenez des métriques de monitoring des requêtes telles que les sessions lentes, actives, en attente et bloquantes, ainsi que le plan d'exécution. La valeur par défaut est définie sur

    false

    query_monitoring_response_time_threshold

    Définissez le seuil de temps de réponse des requêtes (en ms). Capture les requêtes qui dépassent ce seuil. La valeur par défaut est définie sur 500 ms.

    query_monitoring_count_threshold

    Le nombre d'enregistrements pour chaque métrique de performance des requêtes. La valeur par défaut est définie sur 30

    Conseil

    Pour plus de détails sur la configuration du point de terminaison OTLP New Relic et les bonnes pratiques OpenTelemetry, consultez la documentation OpenTelemetry OTLP.

Redémarrer le collecteur NRDOT

Après avoir mis à jour votre configuration, redémarrez le collecteur NRDOT :

bash
$
sudo systemctl restart nrdot-collector-host
$
sudo systemctl status nrdot-collector-host

Conseil

Redémarrez toujours le collecteur NRDOT après avoir modifié la configuration pour garantir la prise en compte des nouveaux paramètres.

(Facultatif) Configuration multi-récepteur

Le binaire nrdot-collector-host prend en charge une configuration multi-récepteur au sein d'un seul config.yaml pour monitorer plusieurs instances de base de données Oracle à l'aide d'identifiants uniques. L'exemple config.yaml ci-dessous montre comment configurer plusieurs récepteurs pour différentes instances sur l'hôte (multi-locataires) tout en partageant des processeurs et des exportateurs communs.

receivers:
newrelicoracledb/cdb1:
endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
username: "<USERNAME>"
password: "<PASSWORD>"
service: "<YOUR_CDB1_SERVICE_NAME>"
collection_interval: 30s
timeout: 30s
# enable_tablespace_scraper: true
# enable_core_scraper: true
# enable_system_scraper: true
# enable_connection_scraper: true
# enable_container_scraper: true
# enable_database_info_scraper: true
# First CDB's PDB configuration
newrelicoracledb/pdb1:
endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
username: "<USERNAME>"
password: "<PASSWORD>"
service: "<YOUR_CDB2_SERVICE_NAME>"
collection_interval: 30s
timeout: 30s
pdb_services: ["ALL"]
# query_monitoring_response_time_threshold: 500
# query_monitoring_count_threshold: 30
# enable_query_monitoring: true
# enable_pdb_scraper: true
# Second CDB configuration
newrelicoracledb/cdb2:
endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
username: "<USERNAME>"
password: "<PASSWORD>"
service: "<YOUR_CDB2_SERVICE_NAME>"
collection_interval: 30s
timeout: 30s
# enable_tablespace_scraper: true
# enable_core_scraper: true
# enable_system_scraper: true
# enable_connection_scraper: true
# enable_container_scraper: true
# enable_database_info_scraper: true
# Second CDB's PDB configuration
newrelicoracledb/pdb2:
endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
username: "<USERNAME>"
password: "<PASSWORD>"
service: "<YOUR_CDB2_SERVICE_NAME>"
collection_interval: 30s
timeout: 30s
pdb_services: ["ALL"]
# query_monitoring_response_time_threshold: 500
# query_monitoring_count_threshold: 30
# enable_query_monitoring: true
# enable_pdb_scraper: true
processors:
memory_limiter/oracle:
check_interval: 1s
limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
cumulativetodelta/oracle:
include:
match_type: strict
metrics:
- newrelicoracledb.connection.bytes_received
- newrelicoracledb.connection.bytes_sent
- newrelicoracledb.connection.execute_count
- newrelicoracledb.connection.logons_cumulative
- newrelicoracledb.connection.parse_count_hard
- newrelicoracledb.connection.parse_count_total
- newrelicoracledb.connection.sqlnet_roundtrips
- newrelicoracledb.connection.user_commits
- newrelicoracledb.connection.user_rollbacks
transform/oracle_clear_metadata:
metric_statements:
- context: metric
statements:
- set(metric.description, "")
- set(metric.unit, "")
log_statements:
- context: log
statements:
- set(body, "")
filter/exec_plan_and_query_details_include:
metrics:
include:
match_type: strict
metric_names:
- newrelicoracledb.execution_plan
- newrelicoracledb.slow_queries.query_details
filter/exec_plan_and_query_details_exclude:
metrics:
exclude:
match_type: strict
metric_names:
- newrelicoracledb.execution_plan
- newrelicoracledb.slow_queries.query_details
resourcedetection/oracle_db_safe:
detectors: ["system"]
override: false
system:
hostname_sources: ["os"]
resource_attributes:
host.id:
enabled: true
connectors:
metricsaslogs/oracle:
include_resource_attributes: true
include_scope_info: true
service:
pipelines:
metrics/oracledb:
receivers: [newrelicoracledb/cdb1, newrelicoracledb/pdb1, newrelicoracledb/cdb2, newrelicoracledb/pdb2]
processors: [memory_limiter/oracle, cumulativetodelta/oracle, transform/oracle_clear_metadata, filter/exec_plan_and_query_details_exclude, resourcedetection/oracle_db_safe]
exporters: [otlp]
metrics/oracle_query_to_logs:
receivers: [newrelicoracledb/cdb1, newrelicoracledb/pdb1, newrelicoracledb/cdb2, newrelicoracledb/pdb2]
processors: [memory_limiter/oracle, filter/exec_plan_and_query_details_include]
exporters: [metricsaslogs/oracle]
logs/oracledb:
receivers: [metricsaslogs/oracle]
processors: [memory_limiter/oracle, transform/oracle_clear_metadata, resourcedetection/oracle_db_safe]
exporters: [otlp]

Conseil

  • Cette configuration vous permet de monitorer plusieurs instances Oracle RDS simultanément. Chaque instance dispose de sa propre configuration de récepteur avec des identifiants uniques, tout en partageant des processeurs et des exportateurs communs. Ajustez le collection_interval et d'autres paramètres en fonction de vos besoins de monitoring.

  • Redémarrez le collecteur NRDOT après avoir mis à jour la configuration pour appliquer les modifications.

(Facultatif) Configurer la corrélation APM-base de données

Pour corréler les performances de votre application avec les opérations de base de données, vous pouvez configurer l'identification du service de base de données. Cette fonctionnalité vous permet de voir exactement quelles applications génèrent des workloads de base de données spécifiques. Pour plus d'informations, reportez-vous à configurer l'identification du service de base de données pour obtenir la corrélation APM-base de données dans New Relic.

Important

Pour afficher les données de performance de la base de données dans APM, les deux entités doivent se trouver dans le même compte New Relic. Si les entités se trouvent dans des comptes New Relic différents, vous devez avoir accès aux deux comptes pour visualiser les données.

(Facultatif) Configurer la gestion des secrets

La fonctionnalité de gestion des secrets vous permet de gérer en toute sécurité des informations sensibles, telles que les identifiants de base de données. Cela permet de renforcer la sécurité de votre configuration de supervision en évitant de coder en dur des données sensibles dans les fichiers de configuration. Pour plus d'informations, consultez la gestion des secrets.

Trouvez et utilisez vos données

Une fois vos données collectées, vous pouvez accéder à un monitoring complet de la base de données Oracle via l'interface utilisateur de New Relic.

Pour trouver votre entité de base de données Oracle dans New Relic :

  1. Allez à https://one.newrelic.com > All Capabilities > Databases.
  2. Définissez les critères de recherche comme instrumentation.provider = opentelemetry.
  3. Sélectionnez votre base de données Oracle dans la liste des entités.

Pour installer le collecteur NRDOT dans les environnements RDS, suivez ces étapes :

Méthode d'installation

Sélectionnez la méthode de distribution de l'installation appropriée pour votre environnement Linux :

Configurer l'utilisateur de la base de données

Créez un utilisateur de monitoring avec les privilèges nécessaires pour votre base de données Oracle RDS.

  1. Connectez-vous à la base de données racine en tant qu'administrateur :

    CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";
  2. Accorder les privilèges CONNECT à l'utilisateur nouvellement créé :

    GRANT CONNECT TO <USERNAME>;

Accorder des privilèges de monitoring pour la base de données RDS

Exécutez les instructions SQL suivantes pour accorder des privilèges de monitoring. Remplacez <USERNAME_IN_UPPERCASE> par votre nom d'utilisateur en majuscules :

SET SERVEROUTPUT ON;
BEGIN
FOR r IN (SELECT column_value as view_name FROM table(sys.odcivarchar2list(
'V_$SESSION', 'V_$SYSSTAT', 'V_$SESSTAT', 'V_$STATNAME',
'V_$SYSTEM_EVENT', 'V_$SHARED_SERVER', 'V_$DISPATCHER',
'V_$RESOURCE_LIMIT', 'V_$LOCK', 'V_$DATABASE',
'V_$PARAMETER', 'V_$SQLAREA', 'V_$SQL', 'V_$SQL_PLAN',
'V_$PDBS', 'GV_$INSTANCE', 'GV_$SGA', 'GV_$SESSTAT',
'GV_$STATNAME', 'GV_$SYSSTAT', 'GV_$SQLAREA',
'GV_$LIBRARYCACHE', 'GV_$ROWCACHE', 'GV_$PGASTAT',
'GV_$CONTAINERS', 'GV_$PDBS', 'GV_$CON_SYSMETRIC',
'GV_$SYSMETRIC', 'GV_$FILESTAT', 'GV_$SYSTEM_EVENT',
'GV_$ACTIVE_SERVICES', 'GV_$SESSION', 'GV_$SESSION_WAIT',
'GV_$ROLLSTAT', 'DBA_OBJECTS', 'DBA_TABLESPACES',
'DBA_TABLESPACE_USAGE_METRICS', 'DBA_DATA_FILES', 'DBA_USERS',
'CDB_SERVICES', 'CDB_DATA_FILES', 'CDB_TABLESPACE_USAGE_METRICS',
'CDB_USERS', 'CDB_PDBS', 'ALL_USERS', 'ALL_VIEWS', 'GLOBAL_NAME'
))) LOOP
BEGIN
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => r.view_name,
p_grantee => '<USERNAME_IN_UPPERCASE>',
p_privilege => 'SELECT'
);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('FAILED: ' || r.view_name || ' | Error: ' || SQLERRM);
END;
END LOOP;
END;
/

Configurer le collecteur NRDOT

  1. Modifiez votre fichier config.yaml disponible à /etc/nrdot-collector-host/, puis ajoutez l'extrait de code suivant :

    Important

    Si vous êtes déjà utilisateur de NRDOT Collector, assurez-vous de fusionner la configuration ci-dessus avec votre fichier config.yaml existant. Cela inclut l'ajout des nouveaux récepteurs, processeurs et exportateurs pour le monitoring d'Oracle Database, tout en conservant vos configurations actuelles.

    receivers:
    newrelicoracledb/pdb:
    endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
    username: "<USERNAME>"
    password: "<PASSWORD>"
    service: "<PDB_NAME>"
    collection_interval: 30s
    timeout: 30s
    # pdb_services: ['PDB1','PDB2'] #for multiple pdbs
    # query_monitoring_response_time_threshold: 500
    # query_monitoring_count_threshold: 30
    # enable_query_monitoring: true
    # enable_pdb_scraper: true
    # enable_tablespace_scraper: true
    # enable_core_scraper: true
    # enable_system_scraper: true
    # enable_connection_scraper: true
    # enable_container_scraper: true
    # enable_database_info_scraper: true
    processors:
    transform/clear_metadata:
    metric_statements:
    - context: metric
    statements:
    - set(metric.description, "")
    - set(metric.unit, "")
    log_statements:
    - context: log
    statements:
    - set(log.body, "")
    filter/exec_plan_and_query_details_include:
    metrics:
    include:
    match_type: strict
    metric_names:
    - newrelicoracledb.execution_plan
    - newrelicoracledb.slow_queries.query_details
    filter/exec_plan_and_query_details_exclude:
    metrics:
    exclude:
    match_type: strict
    metric_names:
    - newrelicoracledb.execution_plan
    - newrelicoracledb.slow_queries.query_details
    cumulativetodelta:
    include:
    match_type: strict
    metrics:
    - newrelicoracledb.connection.bytes_received
    - newrelicoracledb.connection.bytes_sent
    - newrelicoracledb.connection.execute_count
    - newrelicoracledb.connection.logons_cumulative
    - newrelicoracledb.connection.parse_count_hard
    - newrelicoracledb.connection.parse_count_total
    - newrelicoracledb.connection.sqlnet_roundtrips
    - newrelicoracledb.connection.user_commits
    - newrelicoracledb.connection.user_rollbacks
    connectors:
    metricsaslogs:
    include_resource_attributes: true
    include_scope_info: true
    exporters:
    otlp:
    endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
    headers:
    api-key: "<YOUR_NEWRELIC_API_KEY>"
    compression: gzip
    service:
    pipelines:
    metrics:
    receivers: [newrelicoracledb/pdb]
    processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude, cumulativetodelta]
    exporters: [otlp]
    metrics/exec_plan_and_query_details_to_logs:
    receivers: [newrelicoracledb/pdb]
    processors: [filter/exec_plan_and_query_details_include]
    exporters: [metricsaslogs]
    logs/newrelicoracledb:
    receivers: [metricsaslogs]
    processors: [transform/clear_metadata]
    exporters: [otlp]
  2. Définissez les paramètres requis suivants dans le fichier de configuration :

    paramètres

    Description

    <YOUR_DB_HOST>

    Saisissez le nom d'hôte de votre base de données Oracle.

    <YOUR_DB_PORT>

    Saisissez le port de votre base de données Oracle.

    <USERNAME>

    Saisissez le nom d'utilisateur de votre base de données.

    <PASSWORD>

    Saisissez le mot de passe de votre base de données.

    <PDB_NAME>

    Saisissez le nom de votre service PDB.

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    Saisissez le point de terminaison OTLP New Relic. Pour plus d'informations, consultez la documentation sur les endpoints OTLP New Relic.

    <YOUR_NEWRELIC_API_KEY>

    Saisissez votre clé API New Relic.

    pdb_services

    Sélectionnez les services PDB à monitorer parmi les options suivantes :

    • Vide ou nil : collecter uniquement les données de service spécifiées
    • ["pdb1", "pdb2"]: Collecter uniquement les services PDB spécifiés

    enable_query_monitoring

    Obtenez des métriques de monitoring des requêtes telles que les sessions lentes, actives, en attente et bloquantes, ainsi que le plan d'exécution. La valeur par défaut est définie sur

    false

    query_monitoring_response_time_threshold

    Définissez le seuil de temps de réponse des requêtes (en ms). Capture les requêtes qui dépassent ce seuil. La valeur par défaut est définie sur 500 ms.

    query_monitoring_count_threshold

    Le nombre d'enregistrements pour chaque métrique de performance des requêtes. La valeur par défaut est définie sur 30

Redémarrer le collecteur NRDOT

Après avoir mis à jour votre configuration, redémarrez le collecteur NRDOT :

bash
$
sudo systemctl restart nrdot-collector-host
$
sudo systemctl status nrdot-collector-host

Conseil

Redémarrez toujours le collecteur NRDOT après avoir modifié la configuration pour garantir la prise en compte des nouveaux paramètres.

(Facultatif) Configuration multi-récepteur

Le binaire nrdot-collector-host prend en charge une configuration multi-récepteur au sein d'un seul config.yaml pour monitorer plusieurs instances de base de données Oracle en utilisant des identifiants uniques. L'exemple config.yaml ci-dessous montre comment configurer plusieurs récepteurs pour différentes instances RDS tout en partageant des processeurs et des exportateurs communs.

receivers:
# First RDS Instance
newrelicoracledb/pdb/rds1:
endpoint: "<YOUR_DB_HOST_1>:<YOUR_DB_PORT_1>"
username: "<USERNAME_1>"
password: "<PASSWORD_1>"
service: "<PDB_NAME_1>"
collection_interval: 30s
timeout: 30s
# query_monitoring_response_time_threshold: 500
# query_monitoring_count_threshold: 30
# enable_query_monitoring: true
# Second RDS Instance
newrelicoracledb/pdb/rds2:
endpoint: "<YOUR_DB_HOST_2>:<YOUR_DB_PORT_2>"
username: "<USERNAME_2>"
password: "<PASSWORD_2>"
service: "<PDB_NAME_2>"
collection_interval: 30s
timeout: 30s
# query_monitoring_response_time_threshold: 500
# query_monitoring_count_threshold: 30
# enable_query_monitoring: true
processors:
transform/clear_metadata:
metric_statements:
- context: metric
statements:
- set(metric.description, "")
- set(metric.unit, "")
log_statements:
- context: log
statements:
- set(log.body, "")
filter/exec_plan_and_query_details_include:
metrics:
include:
match_type: strict
metric_names:
- newrelicoracledb.execution_plan
- newrelicoracledb.slow_queries.query_details
filter/exec_plan_and_query_details_exclude:
metrics:
exclude:
match_type: strict
metric_names:
- newrelicoracledb.execution_plan
- newrelicoracledb.slow_queries.query_details
connectors:
metricsaslogs:
include_resource_attributes: true
include_scope_info: true
exporters:
otlp:
endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
headers:
api-key: "<YOUR_NEWRELIC_API_KEY>"
compression: gzip
service:
pipelines:
# Separate metrics pipelines to apply unique resource names
metrics/rds1:
receivers: [newrelicoracledb/pdb/rds1]
processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude]
exporters: [otlp]
metrics/rds2:
receivers: [newrelicoracledb/pdb/rds2]
processors: [transform/clear_metadata, filter/exec_plan_and_query_details_exclude]
exporters: [otlp]
# Combined logs pipeline for execution plans and query details
metrics/exec_plan_and_query_details_to_logs:
receivers: [newrelicoracledb/pdb/rds1, newrelicoracledb/pdb/rds2]
processors: [filter/exec_plan_and_query_details_include]
exporters: [metricsaslogs]
logs/newrelicoracledb:
receivers: [metricsaslogs]
processors: [transform/clear_metadata]
exporters: [otlp]

Conseil

  • Cette configuration vous permet de monitorer plusieurs instances Oracle RDS simultanément. Chaque instance dispose de sa propre configuration de récepteur avec des identifiants uniques, tout en partageant des processeurs et des exportateurs communs. Ajustez le collection_interval et d'autres paramètres en fonction de vos besoins de monitoring.

  • Redémarrez le collecteur NRDOT après avoir mis à jour la configuration pour appliquer les modifications.

(Facultatif) Configurer la corrélation APM-base de données

Pour corréler les performances de votre application avec les opérations de base de données, vous pouvez configurer l'identification du service de base de données. Cette fonctionnalité vous permet de voir exactement quelles applications génèrent des workloads de base de données spécifiques. Pour plus d'informations, reportez-vous à configurer l'identification du service de base de données pour obtenir la corrélation APM-base de données dans New Relic.

Important

Pour afficher les données de performance de la base de données dans APM, les deux entités doivent se trouver dans le même compte New Relic. Si les entités se trouvent dans des comptes différents, vous devez avoir accès aux deux comptes pour visualiser les données.

(Facultatif) Configurer la gestion des secrets

La fonctionnalité de gestion des secrets vous permet de gérer en toute sécurité des informations sensibles, telles que les identifiants de base de données. Cela permet de renforcer la sécurité de votre configuration de supervision en évitant de coder en dur des données sensibles dans les fichiers de configuration. Pour plus d'informations, consultez la gestion des secrets.

Trouvez et utilisez vos données

Une fois vos données collectées, vous pouvez accéder à un monitoring complet de la base de données Oracle via l'interface utilisateur de New Relic.

Pour trouver votre entité de base de données Oracle dans New Relic :

  1. Allez à https://one.newrelic.com > All Capabilities > Databases.
  2. Définissez les critères de recherche comme instrumentation.provider = opentelemetry.
  3. Sélectionnez votre base de données Oracle dans la liste des entités.

Commandes prises en charge par le collecteur NRDOT

Cette section fournit une liste de commandes courantes pour gérer le service NRDOT Collector sur votre système.

Métriques disponibles

Monitorez les performances de votre base de données Oracle avec des métriques organisées par indicateurs de configuration. Les métriques par défaut sont collectées automatiquement pour les fonctionnalités de l'interface utilisateur New Relic. Vous pouvez également utiliser les métriques supplémentaires fournies pour obtenir des informations plus avancées et approfondies lorsque vous activez des scrapers spécifiques.

Métriques par défaut

Ces métriques sont essentielles pour les fonctionnalités de monitoring de base de données Oracle de New Relic et sont collectées automatiquement, quelle que soit votre configuration.

Métriques supplémentaires

Activez ces métriques supplémentaires si nécessaire pour obtenir des informations plus approfondies sur les performances et l'état de santé de votre base de données Oracle.

Et ensuite ?

Après avoir configuré le monitoring de base de données Oracle avec NRDOT :

Droits d'auteur © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.