New Relicのデータベース監視機能とNew Relic Distribution of OpenTelemetry(NRDOT)を使用して、チームでOracleデータベースのパフォーマンスをモニターできるようになりました。このインテグレーションは、NRDOTコレクターを使用して、データベースのメトリクス、クエリのパフォーマンス、およびシステムの健全性に関する包括的なインサイトを提供します。
この NRDOT ベースのアプローチは、データベース監視のOpenTelemetry標準を活用することで既存のオンホスト インテグレーション (OHI) を補完し、既存の監視スタックとの統合を容易にします。
前提条件
始める前に、次のものがあることを確認してください。
- 有効なNew Relicライセンスキー
- サポートされているアーキテクチャー: AMD64 および ARM64 を搭載した Linux
- New Relic OTLPエンドポイントへのネットワーク接続
- Oracleデータベース 19c 以降
- このインテグレーションは、New Relicパブリックプレビュープログラムの一環としてご利用いただけます。プレビューとトライアルページからオプトインするには、組織マネージャーに確認してください。
Oracleデータベース監視用の NRDOT Collectorセットアップ
オンホスト(マルチテナント)またはRDS環境で、NRDOT Collectorを使用してOracleデータベースの監視を設定できます。以下の方法を使用して、NRDOT Collectorを設定できます:
ガイド付きインストール:ガイド付きインストールメソッドは、Oracleデータベース監視用のNRDOT Collectorをインストールおよび設定するのに役立つ、New Relicプラットフォームでのステップバイステップの手順を提供します。
手動インストール:手動インストール方法では、このドキュメントの手順に従って、ご自身でNRDOT Collectorをセットアップできます。以下の環境で手動で設定できます:
- オンホスト(マルチテナント)環境:インフラストラクチャとデータベースのテレメトリーデータの両方を収集するには、Oracleデータベースインスタンスと同じホストにNRDOT Collectorをインストールしてください。
- RDS環境:RDS環境にNRDOT Collectorをインストールして、Amazon RDSで実行されているOracle Databaseインスタンスをモニターします。
ヒント
NRDOT Collectorは、インフラストラクチャとデータベース関連のテレメトリーデータの両方を収集するため、New RelicでOracleデータベース環境の統合されたオブザーバビリティソリューションを利用できます。
NRDOT Collectorをインストールするには:
NRDOT Collectorをインストールする
New Relicアカウントにログインしてください。
left navigation pane > + Integration & Agents > Oracle (OpenTelemetry)に移動します。
Select an account画面で、Oracleデータベースインテグレーションをインストールするアカウントを選択し、Continueをクリックします。
「Enter your credential」画面で、次のいずれかのオプションを選択し、Continue [続行]をクリックします。
- 既存のキーを使用する: すでにライセンスキーをお持ちの場合は、ライセンスキーを指定してください。詳細については、ユーザーキーを参照してください。
- 新しいキーを作成する: ライセンスキーがない場合は、 Create a new key [新しいキーの作成]をクリックして作成します。
Compatibility and requirements画面で、すべての要件が満たされていることを確認し、Continueをクリックします。
Database user configuration画面で、デプロイメントタイプを選択してインテグレーションをインストールします。
画面上の指示に従って、選択した環境のインテグレーションを設定します。
インストレーション後、Test your integration画面で、Test connectionをクリックして、NRDOT CollectorがOracleデータベースインスタンスに接続し、New Relicにデータを送信できることを確認します。テストが成功すると、確認メッセージが表示されます。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションパフォーマンスとデータベース操作を関連付けるには、データベースサービス識別をセットアップできます。この機能により、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。New RelicでAPMとデータベースの相関関係を取得するための詳細については、データベースサービスの識別を設定するを参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なる New Relic アカウントにある場合、データを表示するには両方のアカウントにアクセスできる必要があります。
データを探す、使う
データの収集が開始されると、New Relic UIを通じて包括的なOracleデータベース監視にアクセスできます。
New RelicでOracleデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- 検索条件を
instrumentation.provider = opentelemetryに設定します。 - エンティティのリストからOracleデータベースを選択します。
オンホスト環境またはマルチテナント環境で NRDOT Collectorを使用してOracleデータベース監視を設定できます。 オンホスト(マルチテナント)環境にNRDOT Collectorインストールするには、以下の手順に従ってください。
注: このCDB配下のすべてのPDBがモニターされます。
設置方法
Linux 環境に適したインストレーション配布方法を選択します。
データベースユーザーを構成する
マルチテナントOracleデータベースに必要な権限を持つ監視ユーザーを作成します。これには、C##プレフィックスを持つ共通ユーザーを作成する必要があります。
データベースユーザーを作成したり、割り当ての付与を実行したりする前に、
SYSユーザーとして次のステートメントを実行し、現在アクティブなコンテナコンテキストをCDB$ROOTに設定する必要があります:ALTER SESSION SET CONTAINER = CDB$ROOT;マルチテナントデータベースの場合は、ルートデータベースにアドミニストレーターとしてログインします。CREATE USERを使用して、データベースに新しいユーザーを追加します。指定のユーザー名は「common user」であり、Oracleの推奨に従い
c##を接頭辞として付ける必要があります。CREATE USER c##<YOUR_DB_USERNAME> IDENTIFIED BY "<USER_PASSWORD>" CONTAINER=ALL;GRANT CREATE SESSION TO c##<YOUR_DB_USERNAME> CONTAINER=ALL;CDBルートでSYSDBAとして次の文を実行します。これにより、監視ユーザーはコンテナデータビュー内のすべてのPDBの行を表示できるようになります。これは、PDBごとのメトリクスとイベントに必要です。
ALTER USER c##<YOUR_DB_USERNAME> SET CONTAINER_DATA=ALL CONTAINER=CURRENT;ヒント
USER_PASSWORDがOracleの新しいユーザーパスワードの要件を満たしていることを確認します。
マルチテナントデータベースの監視権限を付与する
CDBルートで、SYSDBAとして次のGRANTステートメントを実行します。これらには、インスタンスの検出、メトリクスの収集、PDBごとの監視、およびイベントの収集が含まれます。これらを1つのスクリプトとしてまとめて実行することも、各ステートメントを個別に実行することもできます。
GRANT SELECT ON V_$INSTANCE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$DATABASE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CONTAINERS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$DATAFILE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SYSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CON_SYSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SYSMETRIC TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$CON_SYSMETRIC TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SESSION TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$RESOURCE_LIMIT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$OSSTAT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SGAINFO TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$ROWCACHE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$PARAMETER TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_TABLESPACE_USAGE_METRICS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_TABLESPACES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_DATA_FILES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_FREE_SPACE TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_RECYCLEBIN TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SQL TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$LOCK TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$SESSION_EVENT TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_PROCEDURES TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON DBA_OBJECTS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON V_$PDBS TO c##<USER_NAME> CONTAINER=ALL;GRANT SELECT ON CDB_SERVICES TO c##<USER_NAME> CONTAINER=ALL;NRDOT Collectorを構成する
設定ファイルを作成します。ファイル名は
oracle-config.yamlである必要があります。bash$sudo nano /etc/nrdot-collector/oracle-config.yaml以下の設定内容を、前の手順で作成した
oracle-config.yamlファイルに追加します。oracle-config.yamlファイルを使用するようにNRDOTコレクターの設定を更新してください。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設定ファイルに次の必須事項を設定します。
パラメータ
説明
<YOUR_DB_HOST>Oracleデータベースのホスト名を入力してください。
<YOUR_DB_PORT>Oracleデータベースのポートを入力します。
<USERNAME>データベースのユーザー名を入力してください。
<PASSWORD>データベースのパスワードを入力してください。
<YOUR_SERVICE_NAME>Oracleサービス名を入力してください。
<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLP エンドポイントを入力します。詳細については、 New Relic OTLP エンドポイントのドキュメントを参照してください。
<YOUR_NEWRELIC_LICENSE_KEY>New Relic APIキーを入力します。
「イベント」セクションで、これらのイベントタイプを有効にしてメトリクスを収集します:
イベント
説明
db.server.query_sample現在のSQL、待機状態、およびブロックの詳細をキャプチャするセッションごとのアクティブなクエリのサンプル。
db.server.top_query実行統計とクエリプランを含む、CPUまたは経過時間ごとの上位N個のSQLステートメント。
db.server.session.wait_samplev$session_eventからのセッションごとの累積待機回数と期間。
各イベントタイプの収集設定を構成します:
設定セクション
パラメータ
デフォルト値
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60秒
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
ヒント
New Relic OTLP エンドポイント設定およびOpenTelemetryベストプラクティスの詳細については、 OpenTelemetry OTLP ドキュメントを参照してください。
(オプション) SQLクエリレシーバーのセットアップ
SQLクエリレシーバーを設定して、Oracleデータベースからカスタムメトリックを収集できます。詳細については、SQLクエリレシーバーのドキュメントを参照してください。
NRDOTコレクターを再起動します
設定を更新した後、NRDOT コレクターを再起動します。
$sudo systemctl restart nrdot-collector.service$sudo systemctl status nrdot-collector.serviceヒント
新しい設定を有効にするために、設定を変更した後は常にNRDOT Collectorを再起動してください。
(オプション)マルチレシーバー設定
nrdot-collectorバイナリは、単一のoracle-config.yaml内でのマルチレシーバー設定をサポートしており、一意の認証情報を使用して複数のOracleデータベースインスタンスをモニターします。
ヒント
この設定により、複数のOracleデータベースインスタンスを同時にモニターできます。各インスタンスは、共通のプロセッサとエクスポーターを共有しながら、一意の認証情報を持つ独自のレシーバー設定を取得します。監視要件に基づいて、
collection_intervalやその他のパラメーターを調整します。設定を更新した後、NRDOT コレクターを再起動して変更を適用します。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションパフォーマンスとデータベース操作を関連付けるには、データベースサービス識別をセットアップできます。この機能により、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。New RelicでAPMとデータベースの相関関係を取得するための詳細については、データベースサービスの識別を設定するを参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なる New Relic アカウントにある場合、データを表示するには両方のアカウントにアクセスできる必要があります。
(オプション)シークレット管理を構成する
シークレット管理機能を使用すると、データベースの認証情報などの機密情報を安全に管理できます。これにより、設定ファイルに機密データをハードコーディングすることを回避し、監視セットアップのセキュリティを強化できます。詳細については、シークレット管理を参照してください。
データを探す、使う
データの収集が開始されると、New Relic UIを通じて包括的なOracleデータベース監視にアクセスできます。
New RelicでOracleデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- 検索条件を
instrumentation.provider = opentelemetryに設定します。 - エンティティのリストからOracleデータベースを選択します。
PDB環境にNRDOT Collectorをインストールするには、以下の手順に従ってください。
設置方法
Linux 環境に適したインストレーション配布方法を選択します。
データベースユーザーを構成する
PDB Oracleデータベースインスタンスに必要な権限を持つ監視ユーザーを作成します。
- ユーザーを作成したり権限を付与したりする前に、SYSとして以下のステートメントを実行します:ALTER SESSION SET CONTAINER = "<YOUR_PDB>";
- ターゲットPDB内でSYSとして次のステートメントを実行し、ローカル監視ユーザーを作成します:CREATE USER <USER_NAME> IDENTIFIED BY "<YOUR_PASSWORD>";GRANT CREATE SESSION TO <USER_NAME>;
マルチテナントデータベースの監視権限を付与する
PDB内でSYSユーザーとしてこれらのコマンドを実行します。これにより、監視ツールがメトリクスを収集し、イベントを追跡し、データベースインスタンスを見つけるために必要な基本的なアクセス権が付与されます。
GRANT SELECT ON V_$INSTANCE TO <USER_NAME>;GRANT SELECT ON V_$DATABASE TO <USER_NAME>;GRANT SELECT ON V_$CONTAINERS TO <USER_NAME>;GRANT SELECT ON V_$DATAFILE TO <USER_NAME>;GRANT SELECT ON V_$SYSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SYSMETRIC TO <USER_NAME>;GRANT SELECT ON V_$SESSION TO <USER_NAME>;GRANT SELECT ON V_$RESOURCE_LIMIT TO <USER_NAME>;GRANT SELECT ON V_$OSSTAT TO <USER_NAME>;GRANT SELECT ON V_$SGAINFO TO <USER_NAME>;GRANT SELECT ON V_$ROWCACHE TO <USER_NAME>;GRANT SELECT ON V_$PARAMETER TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACE_USAGE_METRICS TO <USER_NAME>;GRANT SELECT ON DBA_TABLESPACES TO <USER_NAME>;GRANT SELECT ON DBA_DATA_FILES TO <USER_NAME>;GRANT SELECT ON DBA_FREE_SPACE TO <USER_NAME>;GRANT SELECT ON DBA_RECYCLEBIN TO <USER_NAME>;GRANT SELECT ON V_$SQL TO <USER_NAME>;GRANT SELECT ON V_$SQL_PLAN_STATISTICS_ALL TO <USER_NAME>;GRANT SELECT ON V_$LOCK TO <USER_NAME>;GRANT SELECT ON V_$SESSION_EVENT TO <USER_NAME>;GRANT SELECT ON DBA_PROCEDURES TO <USER_NAME>;GRANT SELECT ON DBA_OBJECTS TO <USER_NAME>;GRANT SELECT ON V_$PDBS TO <USER_NAME>;GRANT SELECT ON CDB_SERVICES TO <USER_NAME>;NRDOT Collectorを構成する
PDB固有の設定でNRDOT Collectorを設定します。
設定ファイルを作成します。ファイル名は
oracle-config.yamlである必要があります。bash$sudo nano /etc/nrdot-collector/oracle-config.yaml以下の設定内容を、前の手順で作成した
oracle-config.yamlファイルに追加します。oracle-config.yamlファイルを使用するようにNRDOTコレクターの設定を更新してください。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設定ファイルに次の必須事項を設定します。
パラメータ
説明
<YOUR_DB_HOST>Oracleデータベースのホスト名を入力してください。
<YOUR_DB_PORT>Oracleデータベースのポートを入力します。
<USERNAME>データベースのユーザー名を入力してください。
<PASSWORD>データベースのパスワードを入力してください。
<YOUR_SERVICE_NAME>Oracleサービス名を入力してください。
<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLP エンドポイントを入力します。詳細については、 New Relic OTLP エンドポイントのドキュメントを参照してください。
<YOUR_NEWRELIC_LICENSE_KEY>New Relic APIキーを入力します。
「イベント」セクションで、これらのイベントタイプを有効にしてメトリクスを収集します:
イベント
説明
db.server.query_sample現在のSQL、待機状態、およびブロックの詳細をキャプチャするセッションごとのアクティブなクエリのサンプル。
db.server.top_query実行統計とクエリプランを含む、CPUまたは経過時間ごとの上位N個のSQLステートメント。
db.server.session.wait_samplev$session_eventからのセッションごとの累積待機回数と期間。
各イベントタイプの収集設定を構成します:
設定セクション
パラメータ
価値
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60秒
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
ヒント
New Relic OTLP エンドポイント設定およびOpenTelemetryベストプラクティスの詳細については、 OpenTelemetry OTLP ドキュメントを参照してください。
(オプション) SQLクエリレシーバーのセットアップ
SQLクエリレシーバーを設定して、Oracleデータベースからカスタムメトリックを収集できます。詳細については、SQLクエリレシーバーのドキュメントを参照してください。
NRDOTコレクターを再起動します
設定を更新した後、NRDOT コレクターを再起動します。
$sudo systemctl restart nrdot-collector.service$sudo systemctl status nrdot-collector.serviceヒント
新しい設定を確実に有効にするために、設定を変更した後は必ず NRDOT コレクターを再起動してください。
(オプション)マルチレシーバー設定
nrdot-collectorバイナリは、単一のoracle-config.yaml内でのマルチレシーバー設定をサポートしており、一意の認証情報を使用して複数のOracleデータベースインスタンスをモニターします。
ヒント
この設定により、複数のOracleデータベースインスタンスを同時にモニターできます。各インスタンスは、共通のプロセッサとエクスポーターを共有しながら、一意の認証情報を持つ独自のレシーバー設定を取得します。監視要件に基づいて、
collection_intervalやその他のパラメーターを調整します。設定を更新した後、NRDOT コレクターを再起動して変更を適用します。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションパフォーマンスとデータベース操作を関連付けるには、データベースサービス識別をセットアップできます。この機能により、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。New RelicでAPMとデータベースの相関関係を取得するための詳細については、データベースサービスの識別を設定するを参照してください。
重要
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>あなたのユーザー名(大文字)に置き換えてください。
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>;NRDOT Collectorを構成する
設定ファイルを作成します。ファイル名は
oracle-config.yamlである必要があります。bash$sudo nano /etc/nrdot-collector/oracle-config.yaml以下の設定内容を、前の手順で作成した
oracle-config.yamlファイルに追加します。設定ファイルに次の必須事項を設定します。
パラメータ
説明
<YOUR_DB_HOST>Oracleデータベースのホスト名を入力してください。
<YOUR_DB_PORT>Oracleデータベースのポートを入力します。
<USERNAME>データベースのユーザー名を入力してください。
<PASSWORD>データベースのパスワードを入力してください。
<YOUR_SERVICE_NAME>PDBサービス名を入力してください。
<YOUR_NEWRELIC_OTLP_ENDPOINT>New Relic OTLP エンドポイントを入力します。詳細については、 New Relic OTLP エンドポイントのドキュメントを参照してください。
<YOUR_NEWRELIC_LICENSE_KEY>New Relicのライセンスキーを入力してください。
「イベント」セクションで、これらのイベントタイプを有効にしてメトリクスを収集します:
イベント
説明
db.server.query_sample現在のSQL、待機状態、およびブロックの詳細をキャプチャするセッションごとのアクティブなクエリのサンプル。
db.server.top_query実行統計とクエリプランを含む、CPUまたは経過時間ごとの上位N個のSQLステートメント。
db.server.session.wait_samplev$session_eventからのセッションごとの累積待機回数と期間。
各イベントタイプの収集設定を構成します:
設定セクション
パラメータ
価値
top_query_collectionmax_query_sample_count1000
top_query_collectiontop_query_count200
top_query_collectioncollection_interval60秒
query_sample_collectionmax_rows_per_query100
session_wait_event_collectionmax_rows_per_query100
(オプション) SQLクエリレシーバーのセットアップ
SQLクエリレシーバーを設定して、Oracleデータベースからカスタムメトリックを収集できます。詳細については、SQLクエリレシーバーのドキュメントを参照してください。
(オプション)マルチレシーバー設定
nrdot-collectorバイナリは、単一のoracle-config.yaml内でのマルチレシーバー設定をサポートしており、一意の認証情報を使用して複数のOracleデータベースインスタンスをモニターします。以下のサンプルoracle-config.yamlは、共通のプロセッサとエクスポーターを共有しながら、異なるRDSインスタンス用に複数のレシーバーを設定する方法を示しています。
ヒント
この設定により、複数のOracle RDS インスタンスを同時に監視できます。 各インスタンスは、共通のプロセッサとエクスポータを共有しながら、一意の資格情報を持つ独自のレシーバ設定を取得します。 監視要件に基づいて、
collection_intervalとその他の値を調整します。設定を更新した後、NRDOT コレクターを再起動して変更を適用します。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションパフォーマンスとデータベース操作を関連付けるには、データベースサービス識別をセットアップできます。この機能により、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。詳細については、New RelicでAPMとデータベースの相関関係を取得するためのデータベースサービス識別のセットアップを参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なるアカウントに存在する場合、データを表示するには両方のアカウントへのアクセス権が必要です。
(オプション)シークレット管理を構成する
シークレット管理機能を使用すると、データベースの認証情報などの機密情報を安全に管理できます。これにより、設定ファイルに機密データをハードコーディングすることを回避し、監視セットアップのセキュリティを強化できます。詳細については、シークレット管理を参照してください。
データを探す、使う
データの収集が開始されると、New Relic UIを通じて包括的なOracleデータベース監視にアクセスできます。
New RelicでOracleデータベースエンティティを見つけるには:
- https://one.newrelic.com > All Capabilities > Databasesに移動します。
- 検索条件を
instrumentation.provider = opentelemetryに設定します。 - エンティティのリストからOracleデータベースを選択します。
Oracle Autonomous Database(ADB)環境にNRDOT Collectorをインストールするには、以下の手順に従ってください。
設置方法
Linux 環境に適したインストレーション配布方法を選択します。
データベースユーザーを構成する
ADB Oracleデータベースインスタンスに必要な権限を持つ監視ユーザーを作成します。ターゲットADB内でSYSとして以下のステートメントを実行し、ローカル監視ユーザーを作成します:
CREATE USER <USER_NAME> IDENTIFIED BY "<YOUR_PASSWORD>";GRANT CREATE SESSION TO <USER_NAME>;Autonomous Databaseの監視権限の付与
ADB内でadminとしてこれらのコマンドを実行します。これにより、監視ツールがメトリクスを収集し、イベントを追跡し、データベースインスタンスを見つけるために必要な基本的なアクセス権が付与されます。
GRANT SELECT ON SYS.V_$INSTANCE TO <USER_NAME>;GRANT SELECT ON SYS.V_$DATABASE TO <USER_NAME>;GRANT SELECT ON SYS.V_$CONTAINERS TO <USER_NAME>;GRANT SELECT ON SYS.V_$DATAFILE TO <USER_NAME>;GRANT SELECT ON SYS.V_$PDBS TO <USER_NAME>; GRANT SELECT ON SYS.V_$SYSSTAT TO <USER_NAME>;GRANT SELECT ON SYS.V_$SYSMETRIC TO <USER_NAME>;GRANT SELECT ON SYS.V_$SESSION TO <USER_NAME>;GRANT SELECT ON SYS.V_$RESOURCE_LIMIT TO <USER_NAME>;GRANT SELECT ON SYS.V_$OSSTAT TO <USER_NAME>;GRANT SELECT ON SYS.V_$SGAINFO TO <USER_NAME>;GRANT SELECT ON SYS.V_$ROWCACHE TO <USER_NAME>;GRANT SELECT ON SYS.V_$PARAMETER TO <USER_NAME>;GRANT SELECT ON SYS.DBA_TABLESPACE_USAGE_METRICS TO <USER_NAME>;GRANT SELECT ON SYS.DBA_TABLESPACES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_DATA_FILES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_FREE_SPACE TO <USER_NAME>;GRANT SELECT ON SYS.DBA_RECYCLEBIN TO <USER_NAME>;GRANT SELECT ON SYS.V_$SQL TO <USER_NAME>;GRANT SELECT ON SYS.V_$SQL_PLAN_STATISTICS_ALL TO <USER_NAME>;GRANT SELECT ON SYS.V_$LOCK TO <USER_NAME>;GRANT SELECT ON SYS.V_$SESSION_EVENT TO <USER_NAME>;GRANT SELECT ON SYS.DBA_PROCEDURES TO <USER_NAME>;GRANT SELECT ON SYS.DBA_OBJECTS TO <USER_NAME>;NRDOT Collectorを構成する
ADB固有の設定でNRDOT Collectorを設定します。以下の内容で設定ファイル(例:adb-config.yaml)を作成します:
receivers: nroracledb/adb: datasource: "oracle://<USERNAME>:<PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>/<YOUR_SERVICE_NAME>?ssl=true&ssl%20verify=true" collection_interval: 10s events: db.server.query_sample: enabled: true db.server.top_query: enabled: true db.server.session.wait_sample: 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
metrics: oracledb.cpu_time: enabled: true oracledb.executions: enabled: true oracledb.parse_calls: enabled: true oracledb.hard_parses: enabled: true oracledb.logical_reads: enabled: true oracledb.physical_reads: enabled: true oracledb.physical_reads_direct: enabled: true oracledb.physical_writes: enabled: true oracledb.physical_writes_direct: enabled: true oracledb.physical_read_io_requests: enabled: true oracledb.physical_write_io_requests: enabled: true oracledb.physical_io.cache_writes: enabled: true oracledb.physical_io.requests: enabled: true attributes: - disk.io.direction - disk.io.block_size oracledb.physical_io.transferred: enabled: true attributes: - disk.io.direction - disk.io.type oracledb.sqlnet.io.transferred: enabled: true attributes: - network.io.direction - destination.type oracledb.consistent_gets: enabled: true oracledb.db_block_gets: enabled: true oracledb.data_dictionary.hit_ratio: enabled: true oracledb.pga_memory: enabled: true oracledb.enqueue_deadlocks: enabled: true oracledb.exchange_deadlocks: enabled: true oracledb.sessions.usage: enabled: true attributes: - session_type - session_status oracledb.logons: enabled: true oracledb.user_commits: enabled: true oracledb.user_rollbacks: enabled: true oracledb.tablespace_size.limit: enabled: true attributes: - tablespace_name oracledb.tablespace_size.usage: enabled: true attributes: - tablespace_name oracledb.storage.usage: enabled: true oracledb.storage.utilization: enabled: true oracledb.recycle_bin.limit: enabled: true oracledb.queries_parallelized: enabled: true oracledb.ddl_statements_parallelized: enabled: true oracledb.dml_statements_parallelized: enabled: true oracledb.parallel_operations_not_downgraded: enabled: true oracledb.parallel_operations_downgraded_1_to_25_pct: enabled: true oracledb.parallel_operations_downgraded_25_to_50_pct: enabled: true oracledb.parallel_operations_downgraded_50_to_75_pct: enabled: true oracledb.parallel_operations_downgraded_75_to_99_pct: enabled: true oracledb.parallel_operations_downgraded_to_serial: enabled: true
processors: batch: resource/add_event_name: attributes: - key: host.address value: "<YOUR_DB_HOST>" action: upsert
exporters: otlphttp/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
service: telemetry: metrics: level: none pipelines: metrics/oracledb: receivers: [nroracledb/adb] processors: [resource/add_event_name, batch] exporters: [otlphttp/newrelic] logs/oracledb: receivers: [nroracledb/adb] processors: [resource/add_event_name, batch] exporters: [otlphttp/newrelic]重要
注:以下のメトリクスはADBではサポートされていません:
- oracledb.database.cpu.utilization
- oracledb.database.wait.utilization
- oracledb.host.cpu.utilization
- oracledb.execution.utilization
- oracledb.parse.rate
- oracledb.parse.utilization
- oracledb.sort.ratio
- oracledb.sql_service.response.duration
- oracledb.buffer_cache.utilization
- oracledb.library_cache.utilization
- oracledb.shared_pool.utilization
- oracledb.redo_allocation.utilization
- oracledb.processes.limit
- oracledb.processes.usage
- oracledb.sessions.limit
- oracledb.transactions.limit
- oracledb.transactions.usage
- oracledb.dml_locks.limit
- oracledb.dml_locks.usage
- oracledb.enqueue_locks.limit
- oracledb.enqueue_locks.usage
- oracledb.enqueue_resources.limit
- oracledb.enqueue_resources.usage
(オプション) SQLクエリレシーバーのセットアップ
SQLクエリレシーバーを設定して、Oracleデータベースからカスタムメトリックを収集できます。詳細については、SQLクエリレシーバーのドキュメントを参照してください。
NRDOTコレクターを再起動します
コレクターを設定した後、NRDOTコレクターサービスを再起動して変更を適用します:
$sudo systemctl restart nrdot-collectorコレクターが正常に実行されていることを確認するには、サービスステータスを確認します:
$sudo systemctl status nrdot-collectorヒント
新しい設定を確実に有効にするために、設定を変更した後は必ず NRDOT コレクターを再起動してください。
(オプション)マルチレシーバー設定
同じコレクターから複数のOracle ADBインスタンスをモニターする場合は、異なる名前と接続の詳細を持つ追加のレシーバーブロックを追加することで、設定ファイルに複数のレシーバーを設定できます。
(オプション)APMとデータベースの相関関係を設定する
アプリケーションパフォーマンスとデータベース操作を関連付けるには、データベースサービス識別をセットアップできます。この機能により、どのアプリケーションが特定のデータベースワークロードを生成しているかを正確に確認できます。詳細については、New RelicでAPMとデータベースの相関関係を取得するためのデータベースサービス識別のセットアップを参照してください。
重要
APM でデータベース パフォーマンス データを表示するには、両方のエンティティが同じ New Relic アカウント内にある必要があります。エンティティが異なる New Relic アカウントにある場合、データを表示するには両方のアカウントにアクセスできる必要があります。
(オプション)シークレット管理を構成する
NRDOT Collectorを設定して、パスワードなどの機密情報を設定ファイルにプレーンテキストで保存する代わりに、シークレット管理システムから取得することができます。詳細については、シークレット管理を参照してください。
データを探す、使う
Oracle ADBインテグレーションを設定した後、New Relicでデータベースのパフォーマンスの監視と分析を開始できます:
one.newrelic.com > All Entitiesに移動します。
Oracleでフィルタリングして、データベースエンティティを見つけます。
Oracle ADBエンティティを選択して、ダッシュボード、メトリクス、およびログを表示します。
Oracleデータベースの監視について詳しくは、データベース監視のドキュメントを参照してください。
NRDOT コレクターがサポートするコマンド
このセクションでは、システム上のNRDOT Collectorサービスを管理するための一般的なコマンドの一覧を示します。
利用可能なメトリクス
NRDOTを使用したOracle データベースの監視では、以下のメトリクスを利用できます。これらを収集するには、設定で関連するスクレイパーを有効にしてください。
トラブルシューティング
セットアップ中に問題が発生した場合は、このトラブルシューティング ガイドを使用して一般的な問題を診断し、解決してください。
次のステップ
NRDOTでOracleデータベース監視をセットアップした後:
- データベースのメトリクスを視覚化するカスタムダッシュボードを作成する
- クリティカルデータベースパフォーマンス閾値のアラートを設定する
- New Relicのクエリ機能を使用して、データを探索します