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 :
- Clé de licenceNew Relic valide
- Architecture prise en charge : Linux avec AMD64 et ARM64
- Connectivité réseau vers le point de terminaison OTLP de New Relic
- Oracle Database 19c ou version ultérieure
- Pour la base de données Oracle, vous disposez d'Oracle Instant Client sur la machine exécutant le collecteur NRDOT
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##.
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_PASSWORDrespecte 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
Modifiez votre fichier
config.yamldisponible à/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.yamlexistant. 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: 60sscrapers:cpu:metrics:system.cpu.time:enabled: falsesystem.cpu.utilization:enabled: trueload:memory:metrics:system.memory.utilization:enabled: truepaging:metrics:system.paging.utilization:enabled: falsesystem.paging.faults:enabled: falsefilesystem:metrics:system.filesystem.utilization:enabled: truedisk:metrics:system.disk.merged:enabled: falsesystem.disk.pending_operations:enabled: falsesystem.disk.weighted_io_time:enabled: falsenetwork: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: falsefilelog: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.lognewrelicoracledb/cdb:endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"service: "<YOUR_CDB_SERVICE_NAME>"collection_interval: 30stimeout: 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: truenewrelicoracledb/pdb:endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"username: "<USERNAME>"password: "<PASSWORD>"service: "<YOUR_CDB_SERVICE_NAME>"collection_interval: 30stimeout: 30spdb_services: ["ALL"]# query_monitoring_response_time_threshold: 500# query_monitoring_count_threshold: 30# enable_query_monitoring: true# enable_pdb_scraper: trueprocessors:metricstransform:transforms:- include: system.cpu.utilizationaction: updateoperations:- action: aggregate_labelslabel_set: [ state ]aggregation_type: mean- include: system.paging.operationsaction: updateoperations:- action: aggregate_labelslabel_set: [ direction ]aggregation_type: sumfilter/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: strictmetric_names:- system.paging.operationsactions:- key: typeaction: deletetransform/clear_metadata:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")filter/exec_plan_and_query_details_include:metrics:include:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailsfilter/exec_plan_and_query_details_exclude:metrics:exclude:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailscumulativetodelta/oracle:include:match_type: strictmetrics:- 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_rollbackstransform/host:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")transform:trace_statements:- context: spanstatements:- truncate_all(span.attributes, 4095)- truncate_all(resource.attributes, 4095)log_statements:- context: logstatements:- truncate_all(log.attributes, 4095)- truncate_all(resource.attributes, 4095)memory_limiter:check_interval: 1slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}batch:resourcedetection:detectors: ["system"]system:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/db_safe:detectors: ["system"]override: falsesystem:hostname_sources: ["os"]resource_attributes:host.id:enabled: trueresourcedetection/cloud:detectors: ["gcp", "ec2", "azure"]timeout: 2soverride: trueresourcedetection/env:detectors: ["env"]timeout: 2soverride: trueconnectors:metricsaslogs:include_resource_attributes: trueinclude_scope_info: trueexporters:otlp:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: "<YOUR_NEWRELIC_API_KEY>"compression: gzipservice: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- batchexporters: [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]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_servicesSé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_monitoringObtenez 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
falsequery_monitoring_response_time_thresholdDé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_thresholdLe 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 :
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostConseil
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_intervalet 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 :
- Allez à https://one.newrelic.com > All Capabilities > Databases.
- Définissez les critères de recherche comme
instrumentation.provider = opentelemetry. - 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.
Connectez-vous à la base de données racine en tant qu'administrateur :
CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";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
Modifiez votre fichier
config.yamldisponible à/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.yamlexistant. 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: 30stimeout: 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: trueprocessors:transform/clear_metadata:metric_statements:- context: metricstatements:- set(metric.description, "")- set(metric.unit, "")log_statements:- context: logstatements:- set(log.body, "")filter/exec_plan_and_query_details_include:metrics:include:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailsfilter/exec_plan_and_query_details_exclude:metrics:exclude:match_type: strictmetric_names:- newrelicoracledb.execution_plan- newrelicoracledb.slow_queries.query_detailscumulativetodelta:include:match_type: strictmetrics:- 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_rollbacksconnectors:metricsaslogs:include_resource_attributes: trueinclude_scope_info: trueexporters:otlp:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: "<YOUR_NEWRELIC_API_KEY>"compression: gzipservice: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]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_servicesSé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_monitoringObtenez 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
falsequery_monitoring_response_time_thresholdDé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_thresholdLe 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 :
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostConseil
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_intervalet 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 :
- Allez à https://one.newrelic.com > All Capabilities > Databases.
- Définissez les critères de recherche comme
instrumentation.provider = opentelemetry. - 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 :
- Créez des dashboards personnalisés pour visualiser les métriques de votre base de données
- Configurer des alertes pour les seuils critiques de performances des bases de données
- Explorez vos données à l'aide des fonctionnalités de requête de New Relic