• /
  • EnglishEspañolFrançais日本語한국어Português
  • 로그인지금 시작하기

Install & configure NRDOT Collector for AWS RDS monitoring

|View as Markdown (English)

Preview

We're still working on this feature, but we'd love for you to try it out!

This feature is currently provided as part of a preview pursuant to our pre-release policies.

Get comprehensive insights into your Amazon RDS Oracle Database performance with database monitoring, query analysis, and system health metrics using the New Relic Distribution of OpenTelemetry (NRDOT) collector.

Guided installation

To install through the New Relic UI instead, go to one.newrelic.com > Integrations & Agents > Oracle (OpenTelemetry) . This page covers the CLI install path only.

Prerequisites

Before you begin, ensure you have the following:

Enroll to preview

This integration is available as part of the New Relic public preview program. Contact your Organization Manager to opt in from the Previews & Trials page.

Install NRDOT Collector

Select the appropriate installation distribution method for your Linux environment:

Configure database user

Create a monitoring user with necessary privileges for your RDS Oracle Database.

  1. Log in to the root database as an administrator:

    CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";
  2. Grant CONNECT privileges to newly created user:

    GRANT CONNECT TO <USERNAME>;

Grant monitoring privileges for RDS database

Execute the following SQL statements to grant monitoring privileges. Replace <USERNAME_IN_UPPERCASE> with your username in uppercase:

EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSMETRIC', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CON_SYSMETRIC', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SESSION_EVENT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SYSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$CON_SYSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$OSSTAT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SGAINFO', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQLSTATS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$SQL_PLAN_STATISTICS_ALL', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$ROWCACHE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$RESOURCE_LIMIT', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$LOCK', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAFILE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_DATA_FILES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_FREE_SPACE', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_RECYCLEBIN', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACE_USAGE_METRICS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_PROCEDURES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACE_USAGE_METRICS', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_TABLESPACES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
EXEC rdsadmin.rdsadmin_util.grant_sys_object('CDB_SERVICES', '<USERNAME_IN_UPPERCASE>', 'SELECT', false);
GRANT CREATE SESSION TO <USERNAME_IN_UPPERCASE>;

Configure NRDOT Collector

Configure the NRDOT Collector with your RDS-specific settings.

  1. Create the configuration file. The filename must be oracle-config.yaml.

    bash
    $
    sudo nano /etc/nrdot-collector/oracle-config.yaml
  2. Add the configuration content below to the oracle-config.yaml file you created in the previous step.

    full configuration

    This configuration focuses only on database monitoring without host infrastructure metrics. To enable full-feature monitoring, refer to the configuration reference.

    oracle-config.yaml
    1
    receivers:
    2
    nroracledb/rds:
    3
    endpoint: mydb-instance.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com:1521
    4
    username: newrelic
    5
    password: YOUR_PASSWORD
    6
    service: YOUR_SERVICE_NAME
    7
    collection_interval: 10s
    8
    events:
    9
    db.server.query_sample:
    10
    enabled: true
    11
    db.server.top_query:
    12
    enabled: true
    13
    db.server.session.wait_sample:
    14
    enabled: true
    15
    16
    top_query_collection:
    17
    max_query_sample_count: 1000
    18
    top_query_count: 200
    19
    collection_interval: 60s
    20
    allowed_comment_keys:
    21
    - nr_service_guid
    22
    23
    query_sample_collection:
    24
    max_rows_per_query: 100
    25
    allowed_comment_keys:
    26
    - nr_service_guid
    27
    28
    session_wait_event_collection:
    29
    max_rows_per_query: 100
    30
    31
    # Metrics configuration - organized by category
    32
    metrics:
    33
    # === CPU & Performance Metrics ===
    34
    oracledb.cpu_time:
    35
    enabled: true
    36
    attributes:
    37
    - oracle.db.pdb
    38
    39
    # === Execution & Parse Metrics ===
    40
    oracledb.executions:
    41
    enabled: true
    42
    attributes:
    43
    - oracle.db.pdb
    44
    oracledb.parse_calls:
    45
    enabled: true
    46
    attributes:
    47
    - oracle.db.pdb
    48
    oracledb.hard_parses:
    49
    enabled: true
    50
    attributes:
    51
    - oracle.db.pdb
    52
    53
    # === I/O & Physical Read/Write Metrics ===
    54
    oracledb.logical_reads:
    55
    enabled: true
    56
    attributes:
    57
    - oracle.db.pdb
    58
    oracledb.physical_reads:
    59
    enabled: true
    60
    attributes:
    61
    - oracle.db.pdb
    62
    oracledb.physical_reads_direct:
    63
    enabled: true
    64
    attributes:
    65
    - oracle.db.pdb
    66
    oracledb.physical_writes:
    67
    enabled: true
    68
    attributes:
    69
    - oracle.db.pdb
    70
    oracledb.physical_writes_direct:
    71
    enabled: true
    72
    attributes:
    73
    - oracle.db.pdb
    74
    oracledb.physical_read_io_requests:
    75
    enabled: true
    76
    attributes:
    77
    - oracle.db.pdb
    78
    oracledb.physical_write_io_requests:
    79
    enabled: true
    80
    attributes:
    81
    - oracle.db.pdb
    82
    83
    # === New Physical I/O Metrics (detailed) ===
    84
    oracledb.physical_io.cache_writes:
    85
    enabled: true
    86
    attributes:
    87
    - oracle.db.pdb
    88
    oracledb.physical_io.requests:
    89
    enabled: true
    90
    attributes:
    91
    - disk.io.direction
    92
    - disk.io.block_size
    93
    - oracle.db.pdb
    94
    oracledb.physical_io.transferred:
    95
    enabled: true
    96
    attributes:
    97
    - disk.io.direction
    98
    - disk.io.type
    99
    - oracle.db.pdb
    100
    101
    # === Network I/O Metrics ===
    102
    oracledb.sqlnet.io.transferred:
    103
    enabled: true
    104
    attributes:
    105
    - network.io.direction
    106
    - destination.type
    107
    - oracle.db.pdb
    108
    109
    # === Buffer & Cache Metrics ===
    110
    oracledb.consistent_gets:
    111
    enabled: true
    112
    attributes:
    113
    - oracle.db.pdb
    114
    oracledb.db_block_gets:
    115
    enabled: true
    116
    attributes:
    117
    - oracle.db.pdb
    118
    oracledb.data_dictionary.hit_ratio:
    119
    enabled: true
    120
    121
    # === Memory Metrics ===
    122
    oracledb.pga_memory:
    123
    enabled: true
    124
    attributes:
    125
    - oracle.db.pdb
    126
    oracledb.sga.limit:
    127
    enabled: true
    128
    oracledb.sga.usage:
    129
    enabled: true
    130
    attributes:
    131
    - oracledb.sga.component.name
    132
    133
    oracledb.enqueue_deadlocks:
    134
    enabled: true
    135
    attributes:
    136
    - oracle.db.pdb
    137
    oracledb.exchange_deadlocks:
    138
    enabled: true
    139
    attributes:
    140
    - oracle.db.pdb
    141
    142
    # KEEP enabled: sessions.usage is sourced from v$session, not v$resource_limit.
    143
    oracledb.sessions.usage:
    144
    enabled: true
    145
    attributes:
    146
    - session_type
    147
    - session_status
    148
    - oracle.db.pdb
    149
    oracledb.logons:
    150
    enabled: true
    151
    attributes:
    152
    - oracle.db.pdb
    153
    154
    oracledb.user_commits:
    155
    enabled: true
    156
    attributes:
    157
    - oracle.db.pdb
    158
    oracledb.user_rollbacks:
    159
    enabled: true
    160
    attributes:
    161
    - oracle.db.pdb
    162
    163
    # === Tablespace Metrics ===
    164
    oracledb.tablespace_size.limit:
    165
    enabled: true
    166
    attributes:
    167
    - tablespace_name
    168
    - oracle.db.pdb
    169
    oracledb.tablespace_size.usage:
    170
    enabled: true
    171
    attributes:
    172
    - tablespace_name
    173
    - oracle.db.pdb
    174
    175
    # === Storage Metrics ===
    176
    oracledb.storage.usage:
    177
    enabled: true
    178
    oracledb.storage.utilization:
    179
    enabled: true
    180
    oracledb.recycle_bin.limit:
    181
    enabled: true
    182
    183
    # === Parallel Operations Metrics ===
    184
    oracledb.queries_parallelized:
    185
    enabled: true
    186
    attributes:
    187
    - oracle.db.pdb
    188
    oracledb.ddl_statements_parallelized:
    189
    enabled: true
    190
    attributes:
    191
    - oracle.db.pdb
    192
    oracledb.dml_statements_parallelized:
    193
    enabled: true
    194
    attributes:
    195
    - oracle.db.pdb
    196
    oracledb.parallel_operations_not_downgraded:
    197
    enabled: true
    198
    attributes:
    199
    - oracle.db.pdb
    200
    oracledb.parallel_operations_downgraded_1_to_25_pct:
    201
    enabled: true
    202
    attributes:
    203
    - oracle.db.pdb
    204
    oracledb.parallel_operations_downgraded_25_to_50_pct:
    205
    enabled: true
    206
    attributes:
    207
    - oracle.db.pdb
    208
    oracledb.parallel_operations_downgraded_50_to_75_pct:
    209
    enabled: true
    210
    attributes:
    211
    - oracle.db.pdb
    212
    oracledb.parallel_operations_downgraded_75_to_99_pct:
    213
    enabled: true
    214
    attributes:
    215
    - oracle.db.pdb
    216
    oracledb.parallel_operations_downgraded_to_serial:
    217
    enabled: true
    218
    attributes:
    219
    - oracle.db.pdb
    220
    processors:
    221
    batch:
    222
    resource/add_event_name:
    223
    attributes:
    224
    - key: host.address
    225
    value: YOUR_DB_HOST
    226
    action: upsert
    227
    exporters:
    228
    otlp/newrelic:
    229
    endpoint: https://otlp.nr-data.net:4318
    230
    headers:
    231
    api-key: YOUR_LICENSE_KEY
    232
    compression: gzip
    233
    retry_on_failure:
    234
    enabled: true
    235
    initial_interval: 5s
    236
    max_interval: 30s
    237
    max_elapsed_time: 300s
    238
    service:
    239
    pipelines:
    240
    metrics/oracledb:
    241
    receivers: [nroracledb/rds]
    242
    processors: [resource/add_event_name, batch]
    243
    exporters: [otlp/newrelic]
    244
    logs/oracledb:
    245
    receivers: [nroracledb/rds]
    246
    processors: [resource/add_event_name, batch]
    247
    exporters: [otlp/newrelic]
  1. Under the Events section, enable these event types to collect their metrics:

    Event

    Description

    db.server.query_sample

    Per-session active query samples capturing current SQL, wait state, and blocking details.

    db.server.top_query

    Top N SQL statements by CPU or elapsed time, including execution stats and query plans.

    db.server.session.wait_sample

    Per-session cumulative wait counts and durations from v$session_event.

  2. Configure the collection settings for each event type:

    Configuration Section

    Parameter

    Value

    top_query_collection

    max_query_sample_count

    1000

    top_query_collection

    top_query_count

    200

    top_query_collection

    collection_interval

    60s

    query_sample_collection

    max_rows_per_query

    100

    session_wait_event_collection

    max_rows_per_query

    100

Update NRDOT Collector configuration

Update the NRDOT Collector configuration to use your oracle-config.yaml file.

bash
$
sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/oracle-config.yaml"|' /etc/nrdot-collector/nrdot-collector.conf

팁

You can also:

  • Configure multiple receivers: To monitor multiple Oracle Database instances from one collector.
  • Configure SQL Query Receiver: To collect custom metrics from your Oracle Database.
  • Link your Oracle Database with APM: To correlate your application performance with database operations. This allows you to see exactly which applications are generating specific database workloads.
  • Set up secret management: To securely manage sensitive information, such as database credentials. This helps to enhance the security of your monitoring setup by avoiding hardcoding sensitive data in configuration files.

Restart NRDOT Collector

After updating your configuration, restart the NRDOT Collector:

bash
$
sudo systemctl restart nrdot-collector.service
$
sudo systemctl status nrdot-collector.service

팁

Always restart the NRDOT Collector after making configuration changes to ensure the new settings take effect.

Find and use your data

Once your data is being collected, you can access comprehensive Oracle Database monitoring through New Relic's UI.

To find your Oracle Database entity in New Relic:

  1. Go to https://one.newrelic.com > All Capabilities > Databases.
  2. Set the search criteria as instrumentation.provider = opentelemetry.
  3. Select your Oracle Database from the list of entities.

Troubleshooting

Learn how to troubleshoot your Oracle RDS monitoring setup in New Relic.

Metrics reference

Learn about the available metrics collected by the NRDOT Collector.

CDB instrumentation

Learn how to set up your Oracle Database for CDB monitoring in New Relic.

Copyright © 2026 New Relic Inc.

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