New Relicでは、 New Relic Distribution of OpenTelemetry (NRDOT) とNew Relic Relic のデータベース監視機能を使用して、チームがOracleのパフォーマンスを監視できるようになりました。 この統合により、NRDOT コレクターを使用して、包括的なインサイトをデータベース メトリクス、書き込みパフォーマンス、およびシステムの状態に提供します。
この NRDOT ベースのアプローチは、データベース監視のOpenTelemetry標準を活用することで既存のオンホスト インテグレーション (OHI) を補完し、既存の監視スタックとの統合を容易にします。
前提条件
始める前に、次のものがあることを確認してください。
- 有効なNew Relicライセンスキー
- サポートされているアーキテクチャー: AMD64 および ARM64 を搭載した Linux
- New Relicの OTLP エンドポイントへのネットワーク接続
- Oracleデータベース 19c 以降
- Oracleデータベースでは、NRDOT コレクターを実行しているマシン上にOracle Instant Clientがあります。
Oracleデータベース監視用の NRDOT Collectorセットアップ
オンホスト (マルチテナント) 環境または RDS 環境で NRDOT Collector使用してOracleデータベース監視を設定できます。 データベース環境に基づいて適切な設定を選択し、手順に従ってください。
ヒント
NRDOT Collectorインフラストラクチャとデータベース関連のテレメトリー データの両方を収集するため、 New RelicでOracleデータベース環境の統合された監視ソリューションを実現できます。
オンホスト環境またはマルチテナント環境で NRDOT Collectorを使用してOracleデータベース監視を設定できます。 オンホスト(マルチテナント)環境にNRDOT Collectorインストールするには、以下の手順に従ってください。
設置方法
Linux 環境に適したインストレーション配布方法を選択します。
重要
パフォーマンス監視のためにインフラレベルのメトリクスを表示するには、 Oracleデータベース インスタンスと同じホストに NRDOT Collectorインストールすることをお勧めします。
データベースユーザーを構成する
マルチテナントOracleデータベースに必要な権限を持つ監視ユーザーを作成します。これには、接頭辞C##を持つ共通ユーザーを作成する必要があります。
ルート データベースにアドミニストレーターとしてログインします。
CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<USER_PASSWORD>";ヒント
USER_PASSWORDが Oracle の新規ユーザーパスワード要件を満たしていることを確認してください。
マルチテナントデータベースの監視権限を付与する
監視権限を付与するには、以下のSQL文を実行してください。マルチテナントデータベースの場合は、 C##プレフィックスとして正しいユーザー名形式を使用してください。
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;NRDOT Collectorを構成する
/etc/nrdot-collector-host/にあるconfig.yamlファイルを編集し、以下のコードスニペットを追加してください。重要
既存の NRDOT Collectorユーザーの場合は、上記の設定を既存の
config.yamlファイルにマージしてください。 これには、現在の設定を保持したまま、 Oracleデータベース監視用の新しいレシーバー、プロセッサ、およびエクスポータを追加することが含まれます。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]設定ファイルに次の必須事項を設定します。
パラメータ
説明
<YOUR_DB_HOST>Oracleデータベースのホスト名を入力します。
<YOUR_DB_PORT>Oracleデータベースのポートを入力します。
<USERNAME>データベースのユーザー名を入力してください。
<PASSWORD>データベースのパスワードを入力してください。
<YOUR_CDB_SERVICE_NAME>Oracleサービス名を入力してください。
<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLP エンドポイントを入力します。詳細については、 New Relic OTLP エンドポイントのドキュメントを参照してください。
<YOUR_NEWRELIC_API_KEY>New Relic APIキーを入力します。
pdb_services次のオプションから監視する PDB サービスを選択します。
- 空またはnil:指定されたサービスデータのみを収集します
["ALL"]: すべてのPDBサービス(CDBを除く)を収集します["pdb1", "pdb2"]指定されたPDBサービスのみを収集する
enable_query_monitoring低速、アクティブ、待機、ブロックセッション、実行計画などの監視メトリクスを取得します。 デフォルト値は
falsequery_monitoring_response_time_threshold応答タイムの閾値を設定します (ミリ秒単位)。 この閾値を越える突破を捕捉します。 デフォルト値は500msに設定されています。
query_monitoring_count_threshold各書き込みパフォーマンス メトリクスのレコード数。 デフォルト値は30に設定されています
ヒント
New Relic OTLP エンドポイント設定およびOpenTelemetryベストプラクティスの詳細については、 OpenTelemetry OTLP ドキュメントを参照してください。
NRDOTコレクターを再起動します
設定を更新した後、NRDOT コレクターを再起動します。
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostヒント
新しい設定を確実に有効にするために、設定を変更した後は必ず NRDOT コレクターを再起動してください。
(オプション)マルチレシーバー設定
nrdot-collector-hostバイナリは、一意の資格証明を使用して複数のOracleデータベース インスタンスを監視するために、単一のconfig.yaml内のマルチレシーバー設定をサポートします。 以下の例config.yamlは、共通のプロセッサとエクスポーターを共有しながら、異なるオンホスト(マルチテナント)インスタンス用に複数のレシーバを設定する方法を示しています。
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]ヒント
この設定により、複数のOracle RDS インスタンスを同時に監視できます。 各インスタンスは、共通のプロセッサとエクスポータを共有しながら、一意の資格情報を持つ独自のレシーバ設定を取得します。 監視要件に基づいて、
collection_intervalとその他の値を調整します。設定を更新した後、NRDOT コレクターを再起動して変更を適用します。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションのパフォーマンスをデータベース操作と関連付けるために、データベース サービス ID を設定できます。 この機能を使用すると、特定のデータベース ワークロードを生成しているアプリケーションを正確に確認できます。詳細については、「 New RelicでAPMとデータベースの相関関係を取得するためのデータベース サービス ID のセットアップ」を参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なる New Relic アカウントにある場合、データを表示するには両方のアカウントにアクセスできる必要があります。
(オプション)シークレット管理を構成する
シークレット管理機能を使用すると、データベース資格情報などの機密情報を安全に管理できます。これにより、構成ファイルに機密データをハードコーディングすることを避け、監視設定のセキュリティを強化できます。詳細については、シークレット管理を参照してください。
データを探す、使う
データが収集されると、 New RelicのUIを通じて包括的なOracleデータベース監視にアクセスできるようになります。
New RelicでOracleデータベースのエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- 検索条件を
instrumentation.provider = opentelemetryに設定します。 - エンティティのリストからOracleデータベースを選択します。
RDS環境にNRDOT Collectorインストールするには、以下の手順に従ってください。
設置方法
Linux 環境に適したインストレーション配布方法を選択します。
データベースユーザーを構成する
RDS Oracleデータベースに必要な権限を持つ監視ユーザーを作成します。
ルート データベースにアドミニストレーターとしてログインします。
CREATE USER <USERNAME> IDENTIFIED BY "<USER_PASSWORD>";新しく作成されたユーザーに
CONNECT権限を付与します。GRANT CONNECT TO <USERNAME>;
RDS データベースに対する監視権限を付与する
監視権限を付与するには、以下のSQL文を実行してください。<USERNAME_IN_UPPERCASE>あなたのユーザー名(大文字)に置き換えてください。
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;/NRDOT Collectorを構成する
/etc/nrdot-collector-host/にあるconfig.yamlファイルを編集し、以下のコードスニペットを追加してください。重要
既存の NRDOT Collectorユーザーの場合は、上記の設定を既存の
config.yamlファイルにマージしてください。 これには、現在の設定を保持したまま、 Oracleデータベース監視用の新しいレシーバー、プロセッサ、およびエクスポータを追加することが含まれます。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]設定ファイルに次の必須事項を設定します。
パラメータ
説明
<YOUR_DB_HOST>Oracleデータベースのホスト名を入力します。
<YOUR_DB_PORT>Oracleデータベースのポートを入力します。
<USERNAME>データベースのユーザー名を入力してください。
<PASSWORD>データベースのパスワードを入力してください。
<PDB_NAME>PDBサービス名を入力してください。
<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLP エンドポイントを入力します。詳細については、 New Relic OTLP エンドポイントのドキュメントを参照してください。
<YOUR_NEWRELIC_API_KEY>New Relic APIキーを入力します。
pdb_services次のオプションから監視する PDB サービスを選択します。
- 空またはnil:指定されたサービスデータのみを収集します
["pdb1", "pdb2"]指定されたPDBサービスのみを収集する
enable_query_monitoring低速、アクティブ、待機、ブロックセッション、実行計画などの監視メトリクスを取得します。 デフォルト値は
falsequery_monitoring_response_time_threshold応答タイムの閾値を設定します (ミリ秒単位)。 この閾値を越える突破を捕捉します。 デフォルト値は500msに設定されています。
query_monitoring_count_threshold各書き込みパフォーマンス メトリクスのレコード数。 デフォルト値は30に設定されています
NRDOTコレクターを再起動します
設定を更新した後、NRDOT コレクターを再起動します。
$sudo systemctl restart nrdot-collector-host$sudo systemctl status nrdot-collector-hostヒント
新しい設定を確実に有効にするために、設定を変更した後は必ず NRDOT コレクターを再起動してください。
(オプション)マルチレシーバー設定
nrdot-collector-hostバイナリは、一意の資格証明を使用して複数のOracleデータベース インスタンスを監視するために、単一のconfig.yaml内のマルチレシーバー設定をサポートします。 以下の例config.yamlは、共通のプロセッサとエクスポーターを共有しながら、異なる RDS インスタンスに対して複数のレシーバを設定する方法を示しています。
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]ヒント
この設定により、複数のOracle RDS インスタンスを同時に監視できます。 各インスタンスは、共通のプロセッサとエクスポータを共有しながら、一意の資格情報を持つ独自のレシーバ設定を取得します。 監視要件に基づいて、
collection_intervalとその他の値を調整します。設定を更新した後、NRDOT コレクターを再起動して変更を適用します。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションのパフォーマンスをデータベース操作と関連付けるために、データベース サービス ID を設定できます。 この機能を使用すると、特定のデータベース ワークロードを生成しているアプリケーションを正確に確認できます。詳細については、「 New RelicでAPMとデータベースの相関関係を取得するためのデータベース サービス ID のセットアップ」を参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なるアカウントに存在する場合、データを表示するには両方のアカウントへのアクセス権が必要です。
(オプション)シークレット管理を構成する
シークレット管理機能を使用すると、データベース資格情報などの機密情報を安全に管理できます。これにより、構成ファイルに機密データをハードコーディングすることを避け、監視設定のセキュリティを強化できます。詳細については、シークレット管理を参照してください。
データを探す、使う
データが収集されると、 New RelicのUIを通じて包括的なOracleデータベース監視にアクセスできるようになります。
New RelicでOracleデータベースのエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- 検索条件を
instrumentation.provider = opentelemetryに設定します。 - エンティティのリストからOracleデータベースを選択します。
NRDOT コレクターがサポートするコマンド
このセクションでは、システム上のNRDOT Collectorサービスを管理するための一般的なコマンドの一覧を示します。
利用可能なメトリクス
設定フラグごとに整理されたメトリクスを使用して、 Oracleパフォーマンスを監視します。 デフォルトのメトリクスは、 New Relic UI機能のために自動的に収集されます。 特定のスクレイパーを有効にすると、提供される追加のメトリクスを使用して、高度でより深いインサイトを取得することもできます。
デフォルトのメトリクス
これらのメトリクスはNew RelicのOracleデータベース監視機能に不可欠であり、設定に関係なく自動的に収集されます。
追加のメトリクス
インサイトをOracleデータベースのパフォーマンスと健全性にさらに深くするために、必要に応じてこれらの追加のメトリクスを有効にします。
次のステップ
NRDOT を使用してOracleデータベース監視を設定した後:
- データベースのメトリクスを視覚化するカスタムダッシュボードを作成する
- クリティカルデータベースパフォーマンス閾値のアラートを設定する
- New Relicのクエリ機能を使用してデータを探索する