• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

NRDOTを使用したSQLクエリレシーバー

|View as Markdown (English)

プレビュー

この機能はまだ開発中ですが、ぜひお試しください。

この機能は現在、弊社のプレリリース ポリシーに従ってプレビューの一部として提供されています。

sqlqueryreceiverは、データベースに対して任意のカスタムSQLクエリを実行し、その結果をメトリクスとしてNew Relicに取り込むことができるOpenTelemetry Collectorレシーバーです。

組み込みのnroracledbreceiver/nrsqlserverreceiverメトリクスでカバーされていないデータをモニターしたい場合にこれを使用します。host.nameが正しく構成されている場合、sqlqueryreceiver経由で収集されたカスタムメトリックは、組み込みのレシーバーデータと同じOracleまたはSQL Serverエンティティの下にNew Relicで表示されます。

前提条件

  • データソースで構成されたデータベースユーザーは、クエリを実行する予定のすべてのビューまたはテーブルに対するSELECT権限を持っている必要があります。
  • コレクターのバイナリには、sqlqueryreceiverコンポーネントが含まれている必要があります。

構成

既存のoracle-config.yamlreceivers:セクション内に、既存のnroracledbブロックと並んでsqlqueryreceiverブロックを追加します:

receivers:
nroracledb:
...
sqlquery/oracle:
driver: oracle
# Approach 1: Use the `endpoint`, `username`, `password`, and `service` fields to connect to your database. The receiver will construct the datasource URL for you.
# host: <YOUR_DB_HOST>
# port: <YOUR_DB_PORT>
# database: <YOUR_DATABASE_NAME>
# username: <YOUR_DB_USERNAME>
# password: <YOUR_DB_PASSWORD>
# Approach 2: Use the `datasource` field to provide a full connection string.
datasource: "oracle://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>/<YOUR_SERVICE_NAME>"
collection_interval: 60s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: oracledb.<YOUR_METRIC_NAME>
value_column: <RESULT_COLUMN>
attribute_columns: [<DIMENSION_COLUMN_1>, <DIMENSION_COLUMN_2>]
value_type: double

各メトリクスに対して以下のパラメーターを設定します:

パラメータ

説明

<YOUR_DB_HOST>

ホスト名またはIPアドレス。例:

10.12.0.4

<YOUR_DB_PORT>

ポート番号。デフォルト値は次のように設定されています

1433

<YOUR_DB_USERNAME>

Oracleデータベースのユーザー名。例

newrelic

<YOUR_DB_PASSWORD>

Oracleデータベースのパスワード。

<YOUR_SERVICE_NAME>

Oracleサービス名。例

master

<collection_interval>

クエリを実行してメトリクスを収集する頻度。例:

30s

60s

<YOUR_CUSTOM_SQL>

実行するSQLクエリ。

重要

カスタムクエリがPIIや機密データを収集または公開しないようにしてください。

<YOUR_METRIC_NAME>

New Relicでのメトリクス名の表示。一貫性を保つために、

oracledb.

プレフィックスを使用してください。例:

oracledb.custom.wait_time_ms

<VALUE_COLUMN>

その値がメトリクスの値となる、クエリ結果の列。例

wait_time_ms

<VALUE_TYPE>

値の列のデータ型。オプション:

int

double

。省略した場合、デフォルトは

int

です。例

int

<DATA_TYPE>

OTLPメトリクスタイプ。現在/スナップショットの値には

gauge

を使用します。累積カウンターには

sum

を使用します。省略した場合、デフォルトは

gauge

です。例

gauge

<UNIT>

メトリクスの値の測定単位。New Relicでメタデータとして使用されます。例:

ms

By

s

%

1

<ATTRIBUTE_COLUMNS>

メトリクスのラベル/ディメンションになるクエリ結果の列。NRQLでのフィルタリングとファセットに使用されます。たとえば

["wait_type", "database_name"]

重要

Oracle CDBユーザー(C##プレフィックス)の場合は、データソースURLで#%23としてエンコードしてください。たとえば、c##newrelicは次のようにする必要があります。 c%23%23newrelic

命名規則

New Relicで正しいエンティティに関連付けるには、メトリクス名がoracledb.で始まる必要があります。異なるプレフィックスを持つメトリクスは取り込まれますが、データベースエンティティの下には表示されません。

エンティティ合成

resource/add_hostプロセッサーを追加して、host.nameをデータベースレシーバーで使用される値と同じ値に設定してください。これを行わないと、カスタムメトリックはデータベースエンティティにリンクされません。

プロセッサをprocessors:セクションに追加してください:

processors:
batch:
resource/add_event_name:
attributes:
- key: host.address
value: "<YOUR_DB_HOST>"
action: upsert
resource/add_host:
attributes:
- key: host.name
value: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
action: upsert

Pipeline設定

設定のservice.pipelines:セクションに、既存のパイプラインと並んでmetrics/customパイプラインを追加します:

service:
pipelines:
metrics/oracledb:
receivers: [nroracledb]
processors: [resource/add_event_name, batch]
exporters: [otlp/newrelic]
logs/oracledb:
receivers: [nroracledb]
processors: [resource/add_event_name, batch]
exporters: [otlp/newrelic]
metrics/custom:
receivers: [sqlquery/oracle]
processors: [resource/add_host, resource/add_event_name, batch]
exporters: [otlp/newrelic]

重要

プロセッサーリストのbatchの前にresource/add_hostを追加します。

データを検証するためのNRQL

コレクターを再起動した後、以下を実行してカスタムメトリックが到着していることを確認します:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'oracledb.%'
SINCE 1 hour ago

トラブルシューティング [#troubleshooting]

問題原因修理
ORA-00942: table or view does not existデータベースユーザーにSELECT権限がありませんユーザーにSELECT ON <VIEW_NAME>を付与します。
missing port in address# URLエンコードされていないユーザー名/パスワード内データソースURLで#%23に置き換えてください。
New Relicにデータがありませんhost.name 未設定または不一致正しいホスト値を持つresource/add_hostプロセッサーを追加します。
データベースエンティティの下にないメトリクスメトリクス名に必須のプレフィックスがありません。メトリクス名が、Oracleデータベースの場合はoracledb.、SQL Serverの場合はsqlserver.で始まることを確認してください。

SQL Serverコレクター設定のreceivers:セクション内に、既存のnrsqlserverブロックと並んでsqlqueryreceiverブロックを追加します:

receivers:
nrsqlserver:
...
sqlquery:
driver: sqlserver
#Approach 1: Use the `host`, `port`, `database`, `username`, and `password` fields to connect to your database. The receiver will construct the datasource URL for you.
# host: <YOUR_DB_HOST>
# port: <YOUR_DB_PORT>
# database: <YOUR_DATABASE_NAME>
# username: <YOUR_DB_USERNAME>
# password: <YOUR_DB_PASSWORD>
# Approach 2: Use the `datasource` field to provide a full connection string.
datasource: "sqlserver://<YOUR_DB_USERNAME>:<YOUR_DB_PASSWORD>@<YOUR_DB_HOST>:<YOUR_DB_PORT>?database=<YOUR_DATABASE_NAME>"
collection_interval: 30s
queries:
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: sqlserver.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]
- sql: "<YOUR_CUSTOM_SQL>"
metrics:
- metric_name: sqlserver.<YOUR_METRIC_NAME>
value_column: <VALUE_COLUMN>
value_type: <VALUE_TYPE>
data_type: <DATA_TYPE>
unit: <UNIT>
attribute_columns: ["<ATTRIBUTE_COLUMNS>"]

各メトリクスに対して以下のパラメーターを設定します:

パラメータ

説明

<YOUR_DB_HOST>

サーバーのホスト名またはIPアドレスです。例:

10.12.0.4

<YOUR_DB_PORT>

サーバーのポート番号。デフォルト値は次に設定されています

1433

<YOUR_DB_USERNAME>

SQL Serverのユーザー名です。Windowsドメイン/GMSA認証の場合は省略します。たとえば

newrelic

<YOUR_DB_PASSWORD>

SQL Serverのパスワード。Windowsドメイン/GMSA認証の場合は省略します。たとえば

secret

<YOUR_DATABASE_NAME>

初期接続コンテキストとして使用するデータベース名。例:

master

collection_interval

クエリを実行してメトリクスを収集する頻度。例:

30s

60s

<YOUR_CUSTOM_SQL>

実行するSQLクエリ。例: SELECT SUM(pages_kb) / 1024 AS size_mb, type FROM sys.dm_os_memory_clerks GROUP BY type

重要

カスタムクエリがPIIや機密データを収集または公開しないようにしてください。

<YOUR_METRIC_NAME>

New Relicでのメトリクス名の表示。一貫性を保つために、

sqlserver.

プレフィックスを使用してください。例:

sqlserver.custom.wait_time_ms

<VALUE_COLUMN>

その値がメトリクスの値となる、クエリ結果の列。例

wait_time_ms

<VALUE_TYPE>

値の列のデータ型。オプション:

int

double

。省略した場合、デフォルトは

int

です。例

int

<DATA_TYPE>

OTLPメトリクスタイプ。現在/スナップショットの値には

gauge

を使用します。累積カウンターには

sum

を使用します。省略した場合、デフォルトは

gauge

です。例

gauge

<UNIT>

メトリクスの値の測定単位。New Relicでメタデータとして使用されます。例:

ms

By

s

%

1

<ATTRIBUTE_COLUMNS>

メトリクスのラベル/ディメンションになるクエリ結果の列。NRQLでのフィルタリングとファセットに使用されます。たとえば

["wait_type", "database_name"]

命名規則

New Relicで正しいエンティティに関連付けるには、メトリクス名がsqlserver.で始まる必要があります。異なるプレフィックスを持つメトリクスは取り込まれますが、データベースエンティティの下には表示されません。

エンティティ合成

resource/add_hostプロセッサーを追加して、host.nameをデータベースレシーバーで使用される値と同じ値に設定してください。これを行わないと、カスタムメトリックはデータベースエンティティにリンクされません。

プロセッサをprocessors:セクションに追加してください:

processors:
resource/add_host:
attributes:
- key: service.instance.id
value: "<YOUR_DB_HOST>:<YOUR_DB_PORT>"
action: upsert

Pipeline設定

設定のservice.pipelines:セクションに、既存のパイプラインと並んでmetrics/customパイプラインを追加します:

service:
pipelines:
metrics/sqlquery:
receivers: [sqlquery]
processors: [resource/add_host, batch]
exporters: [otlphttp]

重要

プロセッサーリストのbatchの前にresource/add_hostを追加します。

データを検証するためのNRQL

コレクターを再起動した後、以下を実行してカスタムメトリックが到着していることを確認します:

SELECT uniques(metricName) FROM Metric
WHERE otel.library.name LIKE '%sqlqueryreceiver%'
AND metricName LIKE 'sqlserver.%'
SINCE 1 hour ago
Copyright © 2026 New Relic株式会社。

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