Docs » Splunk Observability Cloud でサポートされているインテグレーション » Collectorコンポーネント: レシーバー » SQLクエリレシーバー

SQLクエリレシーバー 🔗

SQL クエリレシーバーは、カスタム SQL クエリを使用して、データベース接続からメトリクスを生成します。サポートされているパイプラインは metrics です。詳細については、パイプラインでデータを処理する を参照してください。

はじめに 🔗

以下の手順に従って、コンポーネントの設定とアクティベーションを行ってください:

  1. Splunk Distribution of the OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:

  1. 次のセクションで説明するように、SQL クエリレシーバーを設定します。

  2. Collector を再起動します。

サンプル構成 🔗

レシーバーをアクティブにするには設定ファイルの receivers セクションに sqlquery を追加します:

receivers:
  sqlquery:
    driver: your.driver
    datasource: "your_data_source"
    queries:
      - sql: "your_query"

次に、設定ファイルの service セクションの metrics パイプラインに、レシーバーを含めます:

service:
  pipelines:
    metrics:
      receivers: [sqlquery]

完全な設定例は 例:映画データベースのクエリ を参照してください。

高度な設定 🔗

これらは、最も関連性の高い必須設定フィールドです:

  • driver。データベースドライバの名前。postgresmysqlsnowflakesqlserverhdb (SAP HANA)、または oracle (Oracle DB)のいずれか。

  • datasourcesql.Open に渡されるデータソース値。これは通常、少なくともデータベース名と接続情報で構成されるドライバ固有の文字列です。ドライバのドキュメントでは、これを「接続文字列」と呼ぶこともあります。例: host=localhost port=5432 user=me password=s3cr3t sslmode=disable

  • queries。クエリとは、SQL ステートメントと、1つ以上のログおよび/またはメトリクスセクションのことです。詳細については、クエリの実行 を参照してください。

オプションのフィールドは以下の通りです:

  • collection_interval。デフォルトでは 10s です。クエリの実行間隔。

  • storage。デフォルトでは "" です。処理結果を追跡するために使用するストレージ拡張のID。

  • telemetry。コンポーネント自身のテレメトリ(ログ、メトリクス、トレース)の設定を定義します。

  • telemetry.logs。コンポーネント自身のログの設定を定義します。

  • telemetry.logs.query。デフォルトでは false です。true に設定すると、SQL クエリが実行されるたびに、クエリのテキストとパラメータの値が 「Running query」 というデバッグログとともに記録されます。

設定の一覧は 設定 を参照してください。

クエリの実行 🔗

クエリは、SQL文と1つ以上のログおよび/またはメトリクスセクションで構成されます:

  • 少なくとも1つのログまたは1つのメトリクスセクションが必要です。

  • 技術的には、ログとメトリクスの両方のセクションを1つのクエリセクションに入れることは可能ですが、ログとメトリクスのクエリの要件はまったく異なります。

クエリメトリクス 🔗

各メトリクススセクションは、metric_namevalue_column 、および追加のオプションフィールドで構成されます。クエリされた各メトリクスに対して、SQL クエリは、返された行ごとに1つのOTelメトリクスを生成します。

これらは、最も関連性の高い必須設定フィールドです:

  • metric_name。OTel メトリクスに割り当てられた名前。

  • value_column。メトリクスのデータポイントの値を設定するために使用する、返されたデータセット内のカラム名。Oracle DB などの一部のドライバでは、大文字小文字を区別します。

関連するオプションフィールドは以下の通りです:

  • attribute_columns。データポイントの属性設定に使用される、返されたデータセット内の列名のリスト。Oracle DB などの一部のドライバでは、大文字と小文字が区別されます。

  • data_typegauge (デフォルト)または sum。詳しくは メトリクスタイプ を参照してください。

  • value_typeint (デフォルト)または double

  • monotonic。デフォルトでは false です。累積和の値が単調増加するかどうかを示すブール値。ロールオーバーやリセットは行われません。

  • aggregationcumulative (デフォルト) または deltasum メトリクスタイプにのみ適用されます。

  • description。メトリクスに適用される説明。

  • unit。メトリクスに適用される単位。

  • static_attributes。メトリクスに適用される静的属性。

  • start_ts_column。開始タイムスタンプを含むカラムの名前で、その値がメトリクスの開始タイムスタンプに適用されます。sum メトリクスタイプにのみ適用されます。

  • ts_column。タイムスタンプを含む列の名前で、その値がメトリクスのタイムスタンプに適用されます。これは、最後に記録されたメトリクスのデータポイントの時間に応じて、現在のタイムスタンプになります。

例:映画データベースのクエリ 🔗

SQLクエリレシーバーを使用して、データベースから情報を引き出すことができます。

例えば、映画とそのジャンルのリストがある映画データベースがあるとします:

Name

ジャンル

E.T.

sci-fi

スターウォーズ

sci-fi

ダイハード

アクション

count(*) クエリは、ジャンル別に分類された映画を返します:

count

ジャンル

2

sci-fi

1

アクション

以下の設定を使用する場合:

receivers:
  sqlquery:
    driver: postgres
    datasource: "host=localhost port=5432 user=postgres password=s3cr3t sslmode=disable"
    storage: file_storage
    queries:
      - sql: "select count(*) as count, genre from movie group by genre"
        metrics:
          - metric_name: movie.genres
            value_column: "count"
            attribute_columns: ["genre"]
            static_attributes:
              dbinstance: mydbinstance

設定のクエリは、各収集間隔で2つのメトリクスを返します:

メトリクス#0

  • 記述子

    • 名前: movie.genres

    • DataType: Gauge

  • NumberDataPoints #0

  • データポイント属性:

    • genre: STRING(sci-fi)

    • dbinstance: STRING(mydbinstance)

  • 値:2

メトリクス#1

  • 記述子

    • 名前: movie.genres

    • DataType: Gauge

  • NumberDataPoints #0

  • データポイント属性:

    • genre: STRING(action)

    • dbinstance: STRING(mydbinstance)

  • 値:1

例: oracle ドライバで映画データベースを照会します。 🔗

Oracle DBドライバを使って接続し、上の例と同じテーブルスキーマと内容を照会します。

sqlquery:
  # driver name: oracle
  # username: otel
  # password: password
  # host: localhost
  # container exposed port: 51521
  # Oracle DB service name: XE
  # Refer to Oracle Go Driver go_ora documentation for full connection string options
  datasource: "oracle://otel:password@localhost:51521/XE"
  driver: oracle
  queries:
    # Note: The table name may need to be preceded by the name of the user who created the table.
    # If the table is created by an initialization script within a docker container, it would be referred
    # to as "sys.movie", as the sys user runs initialization scripts. Permission would need to be granted
    # to the "otel" user to access or modify the table in that case.
    # This example assumes "otel" created the movie table.
    - sql: "select count(*) as count, genre, avg(imdb_rating) as avg from otel.movie group by genre"
      metrics:
        - metric_name: genre.count
          # Note that COUNT and GENRE are now all capital letters, the queries will return nothing if this isn't
          # accounted for.
          value_column: "COUNT"
          attribute_columns: [ GENRE ]
        - metric_name: genre.imdb
          value_column: "AVG"
          attribute_columns: [ GENRE ]
          value_type: "double"

例:MySQL データソース形式 🔗

MySQL の datasource フォーマットは user:password@tcp(host:port)/databasename です。

NULL 🔗

注意

NULL の値を生成するようなクエリは避けてください。

次のことに留意してください:

  • NULL の値を生成するクエリは警告を記録します。

  • NULL 値を生成するカラムを参照する設定では、追加のエラーが記録されます。

どちらの場合でも、レシーバーは作動し続けます。

設定 🔗

次の表に、SQL クエリレシーバーの設定オプションを示します:

トラブルシューティング 🔗

Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。

Splunk Observability Cloudをご利用のお客様

見込み客および無料トライアルユーザー様

  • Splunk Answers のコミュニティサポートで質問し、回答を得る

  • Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。

This page was last updated on 2024年09月18日.