하나의 수집기에서 여러 오라클 데이터베이스 인스턴스를 모니터하도록 NRDOT Collector를 구성할 수 있습니다. 이는 서로 다른 호스트에서 실행되는 여러 오라클 데이터베이스가 있고 단일 NRDOT Collector 인스턴스를 사용하여 이들 모두에서 메트릭을 수집하려는 경우에 유용합니다.
다중 수신기 설정 추가
다음 예제는 다중 수신기 설정을 사용하여 여러 오라클 데이터베이스 인스턴스를 모니터하도록 NRDOT Collector를 설정하는 방법을 보여줍니다. 환경에 맞는 배포 유형을 선택하십시오. 추가 인스턴스를 위해 필요에 따라 수신기를 더 추가할 수 있습니다.
아래의 oracle-config.yaml은(는) 공통 익스포터를 공유하면서 서로 다른 온호스트(멀티테넌트) CDB 인스턴스에 대해 여러 리시버를 설정하는 방법을 보여줍니다.
receivers: # First CDB configuration (anchor cd1; cdb2 inherit via merge key) nroracledb/cdb1: &nroracledb-common endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "C##<YOUR_DB_USERNAME>" password: "<YOUR_DB_PASSWORD>" service: "<YOUR_CDB1_SERVICE_NAME>" collection_interval: 15s
events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.session.wait_sample: enabled: true db.server.top_procedure: enabled: true db.server.query_plan: enabled: true
top_query_collection: max_query_sample_count: 1000 top_query_count: 200 collection_interval: 60s allowed_comment_keys: - nr_service_guid
query_sample_collection: max_rows_per_query: 100 allowed_comment_keys: - nr_service_guid
session_wait_event_collection: max_rows_per_query: 100
top_procedure_collection: max_procedure_sample_count: 1000 top_procedure_count: 250 collection_interval: 60s
# Metrics configuration metrics: oracledb.buffer_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.consistent_gets: enabled: true attributes: - oracle.db.pdb oracledb.cpu_time: enabled: true attributes: - oracle.db.pdb oracledb.database.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.database.wait.utilization: enabled: true attributes: - oracle.db.pdb oracledb.db_block_gets: enabled: true attributes: - oracle.db.pdb oracledb.enqueue_deadlocks: enabled: true attributes: - oracle.db.pdb oracledb.execution.utilization: enabled: true attributes: - oracledb.parse.type - oracle.db.pdb oracledb.executions: enabled: true attributes: - oracle.db.pdb oracledb.hard_parses: enabled: true attributes: - oracle.db.pdb oracledb.host.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.library_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.logical_reads: enabled: true attributes: - oracle.db.pdb oracledb.logons: enabled: true attributes: - oracle.db.pdb oracledb.parse.rate: enabled: true attributes: - oracledb.parse.result - oracle.db.pdb oracledb.parse_calls: enabled: true attributes: - oracle.db.pdb oracledb.pga_memory: enabled: true attributes: - oracle.db.pdb oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size - oracle.db.pdb oracledb.physical_reads: enabled: true attributes: - oracle.db.pdb oracledb.physical_writes: enabled: true attributes: - oracle.db.pdb oracledb.processes.usage: enabled: true oracledb.sessions.usage: enabled: true attributes: - session_type - session_status - oracle.db.pdb oracledb.sga.usage: enabled: true attributes: - oracledb.sga.component.name oracledb.shared_pool.utilization: enabled: true attributes: - oracle.db.pdb oracledb.sql_service.response.duration: enabled: true attributes: - oracle.db.pdb oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type - oracle.db.pdb oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name - oracle.db.pdb oracledb.transactions.usage: enabled: true oracledb.user_commits: enabled: true attributes: - oracle.db.pdb oracledb.user_rollbacks: enabled: true attributes: - oracle.db.pdb
# Resource attributes attached to all metrics/logs resource_attributes: oracle.db.edition: enabled: true
# Second CDB configuration nroracledb/cdb2: <<: *nroracledb-common endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>" service: "<YOUR_CDB2_SERVICE_NAME>"
exporters: otlp/newrelic: endpoint: "<otlp_endpoint>" headers: api-key: "<license_key>" compression: gzip retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s sending_queue: enabled: true sizer: bytes queue_size: 100_000_000 num_consumers: 10 batch: sizer: bytes max_size: 1_000_000 min_size: 0 flush_timeout: 5s
service: pipelines: metrics/oracledb: receivers: [nroracledb/cdb1,nroracledb/cdb2] exporters: [otlp/newrelic] logs/oracledb: receivers: [nroracledb/cdb1, nroracledb/cdb2] exporters: [otlp/newrelic]아래 oracle-config.yaml은(는) 공통 익스포터를 공유하면서 서로 다른 온호스트 플러거블 데이터베이스 인스턴스에 대해 여러 수신기를 설정하는 방법을 보여줍니다.
receivers: # First PDB configuration (anchor; pdb1; pdb2 inherit via merge key) nroracledb/pdb1: &nroracledb-common endpoint: "<YOUR_DB_HOST>:<YOUR_DB_PORT>" username: "<YOUR_DB_USERNAME>" password: "<YOUR_DB_PASSWORD>" service: "<YOUR_PDB1_SERVICE_NAME>" collection_interval: 15s
events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.session.wait_sample: enabled: true db.server.top_procedure: enabled: true db.server.query_plan: enabled: true
top_query_collection: max_query_sample_count: 1000 top_query_count: 200 collection_interval: 60s allowed_comment_keys: - nr_service_guid
query_sample_collection: max_rows_per_query: 100 allowed_comment_keys: - nr_service_guid
session_wait_event_collection: max_rows_per_query: 100
top_procedure_collection: max_procedure_sample_count: 1000 top_procedure_count: 250 collection_interval: 60s
# Metrics configuration metrics: oracledb.buffer_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.consistent_gets: enabled: true attributes: - oracle.db.pdb oracledb.cpu_time: enabled: true attributes: - oracle.db.pdb oracledb.database.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.database.wait.utilization: enabled: true attributes: - oracle.db.pdb oracledb.db_block_gets: enabled: true attributes: - oracle.db.pdb oracledb.enqueue_deadlocks: enabled: true attributes: - oracle.db.pdb oracledb.execution.utilization: enabled: true attributes: - oracledb.parse.type - oracle.db.pdb oracledb.executions: enabled: true attributes: - oracle.db.pdb oracledb.hard_parses: enabled: true attributes: - oracle.db.pdb oracledb.host.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.library_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.logical_reads: enabled: true attributes: - oracle.db.pdb oracledb.logons: enabled: true attributes: - oracle.db.pdb oracledb.parse.rate: enabled: true attributes: - oracledb.parse.result - oracle.db.pdb oracledb.parse_calls: enabled: true attributes: - oracle.db.pdb oracledb.pga_memory: enabled: true attributes: - oracle.db.pdb oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size - oracle.db.pdb oracledb.physical_reads: enabled: true attributes: - oracle.db.pdb oracledb.physical_writes: enabled: true attributes: - oracle.db.pdb oracledb.processes.usage: enabled: true oracledb.sessions.usage: enabled: true attributes: - session_type - session_status - oracle.db.pdb oracledb.sga.usage: enabled: true attributes: - oracledb.sga.component.name oracledb.shared_pool.utilization: enabled: true attributes: - oracle.db.pdb oracledb.sql_service.response.duration: enabled: true attributes: - oracle.db.pdb oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type - oracle.db.pdb oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name - oracle.db.pdb oracledb.transactions.usage: enabled: true oracledb.user_commits: enabled: true attributes: - oracle.db.pdb oracledb.user_rollbacks: enabled: true attributes: - oracle.db.pdb
# Resource attributes attached to all metrics/logs resource_attributes: oracle.db.edition: enabled: true
# Second PDB configuration nroracledb/pdb2: <<: *nroracledb-common endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>" service: "<YOUR_PDB2_SERVICE_NAME>"
exporters: otlp/newrelic: endpoint: "<otlp_endpoint>" headers: api-key: "<license_key>" compression: gzip retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s sending_queue: enabled: true sizer: bytes queue_size: 100_000_000 num_consumers: 10 batch: sizer: bytes max_size: 1_000_000 min_size: 0 flush_timeout: 5s
service: pipelines: metrics/oracledb: receivers: [nroracledb/pdb1,nroracledb/pdb2] exporters: [otlp/newrelic] logs/oracledb: receivers: [nroracledb/pdb1,nroracledb/pdb2] exporters: [otlp/newrelic]아래의 oracle-config.yaml은(는) 공통 익스포터를 공유하면서 서로 다른 Amazon RDS 오라클 인스턴스에 대해 여러 리시버를 설정하는 방법을 보여줍니다.
receivers: # First RDS instance (anchor; rds2 inherits via merge key) nroracledb/rds1: &nroracledb-rds-common endpoint: "<YOUR_DB1_HOST>:<YOUR_DB1_PORT>" username: "<YOUR_DB1_USERNAME>" password: "<YOUR_DB1_PASSWORD>" service: "<YOUR_RDS1_SERVICE_NAME>" collection_interval: 15s
events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.session.wait_sample: enabled: true db.server.top_procedure: enabled: true db.server.query_plan: enabled: true
top_query_collection: max_query_sample_count: 1000 top_query_count: 200 collection_interval: 60s allowed_comment_keys: - nr_service_guid
query_sample_collection: max_rows_per_query: 100 allowed_comment_keys: - nr_service_guid
session_wait_event_collection: max_rows_per_query: 100
top_procedure_collection: max_procedure_sample_count: 1000 top_procedure_count: 250 collection_interval: 60s
# Metrics configuration metrics: oracledb.buffer_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.consistent_gets: enabled: true attributes: - oracle.db.pdb oracledb.cpu_time: enabled: true attributes: - oracle.db.pdb oracledb.database.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.database.wait.utilization: enabled: true attributes: - oracle.db.pdb oracledb.db_block_gets: enabled: true attributes: - oracle.db.pdb oracledb.enqueue_deadlocks: enabled: true attributes: - oracle.db.pdb oracledb.execution.utilization: enabled: true attributes: - oracledb.parse.type - oracle.db.pdb oracledb.executions: enabled: true attributes: - oracle.db.pdb oracledb.hard_parses: enabled: true attributes: - oracle.db.pdb oracledb.host.cpu.utilization: enabled: true attributes: - oracle.db.pdb oracledb.library_cache.utilization: enabled: true attributes: - oracle.db.pdb oracledb.logical_reads: enabled: true attributes: - oracle.db.pdb oracledb.logons: enabled: true attributes: - oracle.db.pdb oracledb.parse.rate: enabled: true attributes: - oracledb.parse.result - oracle.db.pdb oracledb.parse_calls: enabled: true attributes: - oracle.db.pdb oracledb.pga_memory: enabled: true attributes: - oracle.db.pdb oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size - oracle.db.pdb oracledb.physical_reads: enabled: true attributes: - oracle.db.pdb oracledb.physical_writes: enabled: true attributes: - oracle.db.pdb oracledb.processes.usage: enabled: true oracledb.sessions.usage: enabled: true attributes: - session_type - session_status - oracle.db.pdb oracledb.sga.usage: enabled: true attributes: - oracledb.sga.component.name oracledb.shared_pool.utilization: enabled: true attributes: - oracle.db.pdb oracledb.sql_service.response.duration: enabled: true attributes: - oracle.db.pdb oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type - oracle.db.pdb oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name - oracle.db.pdb oracledb.transactions.usage: enabled: true oracledb.user_commits: enabled: true attributes: - oracle.db.pdb oracledb.user_rollbacks: enabled: true attributes: - oracle.db.pdb
# Resource attributes attached to all metrics/logs (all enabled by default) resource_attributes: oracle.db.edition: enabled: true
# Second RDS instance (inherits all settings from rds1, overrides endpoint/credentials/service) nroracledb/rds2: <<: *nroracledb-rds-common endpoint: "<YOUR_DB2_HOST>:<YOUR_DB2_PORT>" username: "<YOUR_DB2_USERNAME>" password: "<YOUR_DB2_PASSWORD>" service: "<YOUR_RDS2_SERVICE_NAME>"
exporters: otlp/newrelic: endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" headers: api-key: "<YOUR_NEWRELIC_LICENSE_KEY>" compression: gzip retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s sending_queue: enabled: true sizer: bytes queue_size: 100_000_000 num_consumers: 10 batch: sizer: bytes max_size: 1_000_000 min_size: 0 flush_timeout: 5s
service: pipelines: metrics/oracledb: receivers: [nroracledb/rds1, nroracledb/rds2] exporters: [otlp/newrelic] logs/oracledb: receivers: [nroracledb/rds1, nroracledb/rds2] exporters: [otlp/newrelic]아래의 adb-config.yaml은(는) 공통 익스포터를 공유하면서 서로 다른 오라클 Autonomous 데이터베이스 인스턴스에 대해 여러 리시버를 설정하는 방법을 보여줍니다.
receivers: # First ADB instance (anchor; adb2 inherits via merge key) nroracledb/adb1: &nroracledb-adb-common datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_ADB1_HOST>:1522/<YOUR_ADB1_SERVICE_NAME>?ssl=true&ssl%20verify=true" collection_interval: 15s events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.session.wait_sample: enabled: true db.server.top_procedure: enabled: true db.server.query_plan: enabled: true
top_query_collection: max_query_sample_count: 1000 top_query_count: 200 collection_interval: 60s allowed_comment_keys: - nr_service_guid
query_sample_collection: max_rows_per_query: 100 allowed_comment_keys: - nr_service_guid
session_wait_event_collection: max_rows_per_query: 100
top_procedure_collection: max_procedure_sample_count: 1000 top_procedure_count: 250 collection_interval: 60s
# Metrics configuration - organized by category metrics: # === CPU & Performance Metrics === oracledb.cpu_time: enabled: true attributes: - oracle.db.pdb # DISABLED on ADB: sourced from v$sysmetric, empty inside a PDB. oracledb.database.cpu.utilization: enabled: false attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.host.cpu.utilization: enabled: false attributes: - oracle.db.pdb
# === Execution & Parse Metrics === oracledb.executions: enabled: true attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.execution.utilization: enabled: false attributes: - oracledb.parse.type - oracle.db.pdb oracledb.parse_calls: enabled: true attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.parse.rate: enabled: false attributes: - oracledb.parse.result - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.parse.utilization: enabled: false attributes: - oracle.db.pdb oracledb.hard_parses: enabled: true attributes: - oracle.db.pdb
# === I/O & Physical Read/Write Metrics === oracledb.logical_reads: enabled: true attributes: - oracle.db.pdb oracledb.physical_reads: enabled: true attributes: - oracle.db.pdb oracledb.physical_reads_direct: enabled: true attributes: - oracle.db.pdb oracledb.physical_writes: enabled: true attributes: - oracle.db.pdb oracledb.physical_writes_direct: enabled: true attributes: - oracle.db.pdb oracledb.physical_read_io_requests: enabled: true attributes: - oracle.db.pdb oracledb.physical_write_io_requests: enabled: true attributes: - oracle.db.pdb
# === New Physical I/O Metrics (detailed) === oracledb.physical_io.cache_writes: enabled: true attributes: - oracle.db.pdb oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size - oracle.db.pdb oracledb.physical_io.transferred: enabled: true attributes: - disk.io.direction - disk.io.type - oracle.db.pdb
# === Network I/O Metrics === oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type - oracle.db.pdb
# === Buffer & Cache Metrics === oracledb.consistent_gets: enabled: true attributes: - oracle.db.pdb oracledb.db_block_gets: enabled: true attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.buffer_cache.utilization: enabled: false attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.library_cache.utilization: enabled: false attributes: - oracle.db.pdb oracledb.data_dictionary.hit_ratio: enabled: true # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.shared_pool.utilization: enabled: false attributes: - oracle.db.pdb
# === Memory Metrics === oracledb.pga_memory: enabled: true attributes: - oracle.db.pdb oracledb.sga.limit: enabled: true oracledb.sga.usage: enabled: true attributes: - oracledb.sga.component.name
# === Wait & Database Time Metrics === # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.database.wait.utilization: enabled: false attributes: - oracle.db.pdb
# === Lock & Deadlock Metrics === # DISABLED on ADB: sourced from v$resource_limit, which returns zero rows. oracledb.dml_locks.limit: enabled: false oracledb.dml_locks.usage: enabled: false oracledb.enqueue_locks.limit: enabled: false oracledb.enqueue_locks.usage: enabled: false oracledb.enqueue_resources.limit: enabled: false oracledb.enqueue_resources.usage: enabled: false oracledb.enqueue_deadlocks: enabled: true attributes: - oracle.db.pdb oracledb.exchange_deadlocks: enabled: true attributes: - oracle.db.pdb
# === Process & Session Metrics === # DISABLED on ADB: v$resource_limit empty in PDB. oracledb.processes.limit: enabled: false oracledb.processes.usage: enabled: false oracledb.sessions.limit: enabled: false # KEEP enabled: sessions.usage is sourced from v$session, not v$resource_limit. oracledb.sessions.usage: enabled: true attributes: - session_type - session_status - oracle.db.pdb oracledb.logons: enabled: true attributes: - oracle.db.pdb
# === Transaction Metrics === # DISABLED on ADB: v$resource_limit empty in PDB. oracledb.transactions.limit: enabled: false oracledb.transactions.usage: enabled: false oracledb.user_commits: enabled: true attributes: - oracle.db.pdb oracledb.user_rollbacks: enabled: true attributes: - oracle.db.pdb
# === Tablespace Metrics === oracledb.tablespace_size.limit: enabled: true attributes: - tablespace_name - oracle.db.pdb oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name - oracle.db.pdb
# === Storage Metrics === oracledb.storage.usage: enabled: true oracledb.storage.utilization: enabled: true oracledb.recycle_bin.limit: enabled: true
# === Parallel Operations Metrics === oracledb.queries_parallelized: enabled: true attributes: - oracle.db.pdb oracledb.ddl_statements_parallelized: enabled: true attributes: - oracle.db.pdb oracledb.dml_statements_parallelized: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_not_downgraded: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_downgraded_1_to_25_pct: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_downgraded_25_to_50_pct: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_downgraded_50_to_75_pct: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_downgraded_75_to_99_pct: enabled: true attributes: - oracle.db.pdb oracledb.parallel_operations_downgraded_to_serial: enabled: true attributes: - oracle.db.pdb
# === Redo & Sort Metrics === # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.redo_allocation.utilization: enabled: false attributes: - oracle.db.pdb # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.sort.ratio: enabled: false attributes: - oracledb.sort.type - oracle.db.pdb
# === Response Time Metrics === # DISABLED on ADB: v$sysmetric empty in PDB. oracledb.sql_service.response.duration: enabled: false attributes: - oracle.db.pdb
# Resource attributes attached to all metrics/logs (all enabled by default) resource_attributes: oracle.db.edition: enabled: true
# Second ADB instance (inherits all settings from adb1, overrides connection details) nroracledb/adb2: <<: *nroracledb-adb-common datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_ADB2_HOST>:1522/<YOUR_ADB2_SERVICE_NAME>?ssl=true&ssl%20verify=true"
exporters: otlp/newrelic: endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" headers: api-key: "<YOUR_NEWRELIC_LICENSE_KEY>" compression: gzip retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s sending_queue: enabled: true sizer: bytes queue_size: 100_000_000 num_consumers: 10 batch: sizer: bytes max_size: 1_000_000 min_size: 0 flush_timeout: 5s service: pipelines: metrics/oracledb: receivers: [nroracledb/adb1, nroracledb/adb2] exporters: [otlp/newrelic] logs/oracledb: receivers: [nroracledb/adb1, nroracledb/adb2] exporters: [otlp/newrelic]팁
이 설정을 통해 여러 오라클 데이터베이스 인스턴스를 동시에 모니터할 수 있습니다. 각 인스턴스는 고유한 자격 증명이 있는 자체 수신기 설정을 가지며, 공통 프로세서와 익스포터를 공유합니다. 모니터링 요구 사항에 따라 collection_interval 및 기타 파라미터를 조정하십시오.
NRDOT Collector를 다시 시작하십시오
설정 변경 사항을 적용하려면 NRDOT Collector 서비스를 다시 시작합니다. 수집기는 시작 시 설정 파라미터를 한 번 로드하며 핫 리로딩을 지원하지 않습니다. 수집기가 실행되는 동안 설정에 적용된 모든 변경 사항은 프로세스가 다시 시작될 때까지 비활성 상태로 유지됩니다.
$sudo systemctl restart nrdot-collector.service