• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Monitoreo de Oracle Database con NRDOT

Avance

Todavía estamos trabajando en esta característica, ¡pero nos encantaría que la probaras!

Esta función se proporciona actualmente como parte de una vista previa de conformidad con nuestras políticas de prelanzamiento.

New Relic ahora permite a su equipo monitorear el rendimiento de su base de datos Oracle usando New Relic Distribution of OpenTelemetry (NRDOT) con las capacidades de monitoreo de bases de datos de New Relic. Esta integración proporciona información integral sobre las métricas de la base de datos, el rendimiento de las consultas y el estado del sistema mediante el colector NRDOT.

Este enfoque basado en NRDOT complementa nuestra actual On-Host Integration (OHI) al aprovechar los estándares de OpenTelemetry para el monitoreo de bases de datos, lo que facilita la integración con su stack de observabilidad existente.

Requisitos previos

Antes de comenzar, cerciorar de tener lo siguiente:

Configurar el NRDOT Collector para el monitoreo de Oracle Database

Puede configurar el monitoreo de Oracle Database utilizando el NRDOT Collector en entornos on-host (multitenant) o RDS. Seleccione la configuración adecuada según su entorno de base de datos y siga los pasos.

Sugerencia

El NRDOT Collector recopila datos de telemetría relacionados tanto con la infraestructura como con la base de datos, para que pueda tener una solución de observabilidad unificada para su entorno de Oracle Database en New Relic.

Puede configurar el monitoreo de Oracle Database mediante el NRDOT Collector en entornos on-host o multitenant. Para instalar el NRDOT Collector en entornos en el host (multitenant), siga estos pasos:

Método de instalación

Seleccione el método de distribución de instalación adecuado para su entorno Linux:

Importante

Se recomienda instalar el NRDOT Collector en el mismo host que su instancia de Oracle Database para visualizar métricas a nivel de infraestructura para el monitoreo del rendimiento de consultas.

Configurar el usuario de la base de datos

Cree un usuario de monitoreo con los privilegios necesarios para su Oracle Database multitenant. Esto requiere crear un usuario común con el prefijo C##.

  1. Inicie sesión en la base de datos raíz como administrador:

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

    Sugerencia

    Asegúrese de que su USER_PASSWORD cumpla con los requisitos de contraseña de nuevo usuario de Oracle.

Otorgar privilegios de monitoreo para la base de datos multiinquilino

Ejecute las siguientes sentencias SQL para otorgar privilegios de monitoreo. Utilice el formato de nombre de usuario correcto con el prefijo C## para la base de datos multiinquilino:

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;

Configurar el Colector NRDOT

  1. Edite su archivo config.yaml disponible en /etc/nrdot-collector-host/, luego agregue el siguiente fragmento de código:

    Importante

    Si es un usuario existente de NRDOT Collector, asegúrese de fusionar la configuración anterior con su archivo config.yaml existente. Esto incluye agregar los nuevos receptores, procesadores y exportadores para el monitoreo de Oracle Database mientras mantiene sus configuraciones actuales.

    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. Establezca los siguientes parámetros obligatorios en el archivo de configuración:

    Parámetro

    Descripción

    <YOUR_DB_HOST>

    Ingrese el nombre de host de su base de datos Oracle.

    <YOUR_DB_PORT>

    Ingrese el puerto de su base de datos Oracle.

    <USERNAME>

    Ingrese su nombre de usuario de la base de datos.

    <PASSWORD>

    Ingrese la contraseña de su base de datos.

    <YOUR_CDB_SERVICE_NAME>

    Ingrese el nombre del servicio de Oracle.

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    Ingrese el endpoint OTLP de New Relic. Para obtener más información, consulta la documentación de los endpoints OTLP de New Relic.

    <YOUR_NEWRELIC_API_KEY>

    Ingrese su clave de API de New Relic.

    pdb_services

    Seleccione los servicios de PDB para monitorear de las siguientes opciones:

    • Vacío o nulo: recopilar solo los datos de servicio especificados
    • ["ALL"]: Recopilar todos los servicios de PDB (excluyendo CDB)
    • ["pdb1", "pdb2"]: Recopilar solo los servicios de PDB especificados

    enable_query_monitoring

    Obtenga métricas de monitoreo de consultas tales como sesiones lentas, activas, en espera, de bloqueo y plan de ejecución. El valor predeterminado está establecido en

    false

    query_monitoring_response_time_threshold

    Configure el umbral para el tiempo de respuesta de la consulta (en ms). Captura las consultas que superan este umbral. El valor predeterminado está establecido en 500ms.

    query_monitoring_count_threshold

    El número de registros para cada métrica de rendimiento de consultas. El valor predeterminado está establecido en 30

    Sugerencia

    Para obtener información más detallada sobre la configuración del endpoint OTLP de New Relic y las mejores prácticas de OpenTelemetry, consulte la documentación de OTLP de OpenTelemetry.

Reiniciar el colector NRDOT

Después de actualizar su configuración, reinicie el colector NRDOT:

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

Sugerencia

Reinicie siempre el colector NRDOT después de realizar cambios de configuración para garantizar que los nuevos ajustes surtan efecto.

(Opcional) Configuración de múltiples receptores

El binario nrdot-collector-host soporta una configuración de múltiples receptores dentro de un solo config.yaml para monitorear múltiples instancias de base de datos Oracle utilizando credenciales únicas. El siguiente ejemplo config.yaml demuestra cómo configurar múltiples receptores para diferentes instancias en el host (multitenencia) mientras se comparten procesadores y exportadores comunes.

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]

Sugerencia

  • Esta configuración le permite monitorear múltiples instancias de Oracle RDS simultáneamente. Cada instancia obtiene su propia configuración de receptor con credenciales únicas, mientras comparte procesadores y exportadores comunes. Ajuste el collection_interval y otros parámetros según sus requisitos de monitoreo.

  • Reinicie el colector NRDOT después de actualizar la configuración para aplicar los cambios.

(Opcional) Configurar la correlación de APM y base de datos

Para correlacionar el rendimiento de su aplicación con las operaciones de la base de datos, puede configurar la identificación del servicio de base de datos. Esta función le permite ver exactamente qué aplicaciones están generando workloads de base de datos específicas. Para obtener más información, consulte configurar la identificación de servicios de base de datos para obtener la correlación entre APM y la base de datos en New Relic.

Importante

Para ver los datos de rendimiento de la base de datos en APM, ambas entidades deben estar en la misma cuenta de New Relic. Si las entidades están en diferentes cuentas de New Relic, debe tener acceso a ambas cuentas para ver los datos.

(Opcional) Configurar la gestión de secretos

La función de gestión de secretos le permite administrar de forma segura información confidencial, como las credenciales de bases de datos. Esto ayuda a mejorar la seguridad de su configuración de monitoreo al evitar la codificación rígida de datos sensibles en los archivos de configuración. Para obtener más información, consulta gestión de secretos.

Encuentra y utiliza tus datos

Una vez que se estén recopilando sus datos, puede acceder a un monitoreo integral de bases de datos Oracle a través de la UI de New Relic.

Para encontrar su entidad de base de datos Oracle en New Relic:

  1. Vaya a https://one.newrelic.com > All Capabilities > Databases.
  2. Establezca los criterios de búsqueda como instrumentation.provider = opentelemetry.
  3. Seleccione su base de datos Oracle de la lista de entidades.

Para instalar el NRDOT Collector en entornos RDS, siga estos pasos:

Método de instalación

Seleccione el método de distribución de instalación adecuado para su entorno Linux:

Configurar el usuario de la base de datos

Cree un usuario de monitoreo con los privilegios necesarios para su base de datos Oracle RDS.

  1. Inicie sesión en la base de datos raíz como administrador:

    CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";
  2. Otorgar privilegios de CONNECT al usuario recién creado:

    GRANT CONNECT TO <USERNAME>;

Otorgar privilegios de monitoreo para la base de datos RDS

Ejecute las siguientes sentencias SQL para otorgar privilegios de monitoreo. Reemplace <USERNAME_IN_UPPERCASE> por su nombre de usuario en mayúsculas:

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;
/

Configurar el Colector NRDOT

  1. Edite su archivo config.yaml disponible en /etc/nrdot-collector-host/, luego agregue el siguiente fragmento de código:

    Importante

    Si es un usuario existente de NRDOT Collector, asegúrese de fusionar la configuración anterior con su archivo config.yaml existente. Esto incluye agregar los nuevos receptores, procesadores y exportadores para el monitoreo de Oracle Database mientras mantiene sus configuraciones actuales.

    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. Establezca los siguientes parámetros obligatorios en el archivo de configuración:

    Parámetro

    Descripción

    <YOUR_DB_HOST>

    Ingrese el nombre de host de su base de datos Oracle.

    <YOUR_DB_PORT>

    Ingrese el puerto de su base de datos Oracle.

    <USERNAME>

    Ingrese su nombre de usuario de la base de datos.

    <PASSWORD>

    Ingrese la contraseña de su base de datos.

    <PDB_NAME>

    Ingrese el nombre de su servicio PDB.

    <YOUR_NEWRELIC_OTLP_ENDPOINT>

    Ingrese el endpoint OTLP de New Relic. Para obtener más información, consulta la documentación de los endpoints OTLP de New Relic.

    <YOUR_NEWRELIC_API_KEY>

    Ingrese su clave de API de New Relic.

    pdb_services

    Seleccione los servicios de PDB para monitorear de las siguientes opciones:

    • Vacío o nulo: recopilar solo los datos de servicio especificados
    • ["pdb1", "pdb2"]: Recopilar solo los servicios de PDB especificados

    enable_query_monitoring

    Obtenga métricas de monitoreo de consultas tales como sesiones lentas, activas, en espera, de bloqueo y plan de ejecución. El valor predeterminado está establecido en

    false

    query_monitoring_response_time_threshold

    Configure el umbral para el tiempo de respuesta de la consulta (en ms). Captura las consultas que superan este umbral. El valor predeterminado está establecido en 500ms.

    query_monitoring_count_threshold

    El número de registros para cada métrica de rendimiento de consultas. El valor predeterminado está establecido en 30

Reiniciar el colector NRDOT

Después de actualizar su configuración, reinicie el colector NRDOT:

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

Sugerencia

Reinicie siempre el colector NRDOT después de realizar cambios de configuración para garantizar que los nuevos ajustes surtan efecto.

(Opcional) Configuración de múltiples receptores

El binario nrdot-collector-host soporta una configuración de múltiples receptores dentro de un solo config.yaml para monitorear múltiples instancias de base de datos Oracle utilizando credenciales únicas. El ejemplo config.yaml a continuación demuestra cómo configurar múltiples receptores para diferentes instancias de RDS mientras se comparten procesadores y exportadores comunes.

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]

Sugerencia

  • Esta configuración le permite monitorear múltiples instancias de Oracle RDS simultáneamente. Cada instancia obtiene su propia configuración de receptor con credenciales únicas, mientras comparte procesadores y exportadores comunes. Ajuste el collection_interval y otros parámetros según sus requisitos de monitoreo.

  • Reinicie el colector NRDOT después de actualizar la configuración para aplicar los cambios.

(Opcional) Configurar la correlación de APM y base de datos

Para correlacionar el rendimiento de su aplicación con las operaciones de la base de datos, puede configurar la identificación del servicio de base de datos. Esta función le permite ver exactamente qué aplicaciones están generando workloads de base de datos específicas. Para obtener más información, consulte configurar la identificación de servicios de base de datos para obtener la correlación entre APM y la base de datos en New Relic.

Importante

Para ver los datos de rendimiento de la base de datos en APM, ambas entidades deben estar en la misma cuenta de New Relic. Si las entidades están en cuentas diferentes, debe tener acceso a ambas cuentas para ver los datos.

(Opcional) Configurar la gestión de secretos

La función de gestión de secretos le permite administrar de forma segura información confidencial, como las credenciales de bases de datos. Esto ayuda a mejorar la seguridad de su configuración de monitoreo al evitar la codificación rígida de datos sensibles en los archivos de configuración. Para obtener más información, consulta gestión de secretos.

Encuentra y utiliza tus datos

Una vez que se estén recopilando sus datos, puede acceder a un monitoreo integral de bases de datos Oracle a través de la UI de New Relic.

Para encontrar su entidad de base de datos Oracle en New Relic:

  1. Vaya a https://one.newrelic.com > All Capabilities > Databases.
  2. Establezca los criterios de búsqueda como instrumentation.provider = opentelemetry.
  3. Seleccione su base de datos Oracle de la lista de entidades.

Comandos admitidos del colector NRDOT

Esta sección proporciona una lista de comandos comunes para administrar el servicio NRDOT Collector en su sistema.

Métricas disponibles

Monitoree el rendimiento de su base de datos Oracle con métricas organizadas por banderas de configuración. Las métricas predeterminadas se recopilan automáticamente para la funcionalidad de la UI de New Relic. También puede utilizar las métricas adicionales proporcionadas para obtener información más avanzada y profunda al habilitar scrapers específicos.

Métrica predeterminada

Estas métricas son esenciales para las funciones de monitoreo de bases de datos Oracle de New Relic y se recopilan automáticamente independientemente de su configuración.

Métricas adicionales

Habilite estas métricas adicionales según sea necesario para obtener información más detallada sobre el rendimiento y la salud de su base de datos Oracle.

Que sigue

Después de configurar el monitoreo de bases de datos Oracle con NRDOT:

Copyright © 2026 New Relic Inc.

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