SQL

SQL モニターには、この Splunk Observability Cloud インテグレーションを使用してください。メリット、インストール、設定、メトリクスを参照してください

注意: Smart Agent モニターは非推奨になります。SQL メトリクスを収集するには、ネイティブの OpenTelemetry SQL Query レシーバーコンポーネントを使用してください。

SQL モニターは、データベース上の SQL クエリからデータベースの使用状況メトリクスを収集します。Kubernetes、Windows、Linux で利用できます。

設定

Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:

  1. Smart Agent レシーバーを設定ファイルに含めます。

  2. レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。

このインテグレーションを有効にするには、Collector構成に以下を追加します:

receivers:
  smartagent/sql:
    type: sql
    ...  # Additional config

次に、設定ファイルの service.pipelines.metrics.receivers セクションにモニターを追加します:

service:
  pipelines:
    metrics:
      receivers: [smartagent/sql]

コンフィギュレーション設定

以下の表は、このモニターの設定オプションを示しています:

オプション

必須

タイプ

説明

queries

あり

list of objects (see below)

データポイントを生成するクエリのリスト。

host

いいえ

string

SQLインスタンスのホストまたはアドレス。

port

いいえ

integer

SQL インスタンスのポート。デフォルト値は 0 です。

params

いいえ

map of strings

キーと値のペアの形式で、置き換え可能なパラメータ。値は、

システムは、Go テンプレート構文を使用して、指定されたキーの値を connectionString に挿入します。たとえば、{{.key}} のようになります。

dbDriver

いいえ

string

使用するデータベースドライバ。有効な値は、postgres

mysql sqlserver および snowflake です。

connectionString

いいえ

string

データベースへの接続に使用される接続文字列と置換可能なパラメータ。

詳しくは、Go pq パッケージの接続文字列パラメータのリストを参照してください。

logQueries

いいえ

bool

(デフォルト: false ) true の場合、クエリ結果を infolevel で記録します。

ネストされた queries コンフィギュレーション・オブジェクトには以下のフィールドがあります:

オプション

必須

タイプ

説明

query

あり

string

データベースから1つ以上の行を選択するSQLクエリ・テキスト。

params

いいえ

list of values

クエリ文字列のプレースホルダを置き換えるオプションの

パラメータ。

metrics

いいえ

list of objects (see below)

クエリから生成されたメトリクス。

datapointExpressions

いいえ

list of strings

各行をメトリクスのセットに変換する式のセット。

これらの式はそれぞれ、クエリ結果セットの各行に対して実行され、行ごとに複数のデータポイントを生成することができます。各式は、1 つのデータポイントまたは nil として評価されなければなりません。

ネストされた metrics コンフィギュレーション・オブジェクトには以下のフィールドがあります:

オプション

必須

タイプ

説明

metricName

あり

string

Splunk Observability Cloud で表示されるメトリクスの

名前。.

valueColumn

あり

string

データポイントの値を保持する列名。

dimensionColumns

いいえ

list of strings

データポイントのディメンションを構成する列の

名前。

isCumulative

いいえ

bool

値が累積カウンター(true)かゲージ

(false)か。この値を間違って設定し、メトリクス名の最初のデータポイントを間違ったタイプで送信した場合、最初に見たタイプに基づいてシステムで設定されるため、手動でタイプを変更する必要があります。デフォルト値は false です。

dimensionPropertyColumns

いいえ

map of lists

ディメンションと対応するプロパティのアタッチに使用する列との間の

マッピング。

サポート対象のドライバ

使用するデータベースドライバの名前を含む dbDriver オプションを指定する必要があります。これらの名前は、エージェントで使用される Golang SQL ドライバの名前と同じです。モニターは、指定したドライバに従って、connectionString をフォーマットします。

注: 使用しているドライバに基づいた正しい接続文字列構文を使用していることを確認してください。たとえば、mysql ドライバを使用する場合は、mysql ドライバの接続文字列構文を使用する必要があります。

これは現在サポートされているドライバのリストです:

  • hana

  • sqlserver

  • mysql

  • postgres

  • pq

  • snowflake

パラメータ化された接続文字列

インテグレーションは、connectionString の値を、変数 hostportparams オプションのすべてのパラメータからなるコンテキストを持つ Golang テンプレートとして扱います。テンプレートに変数を追加するには、Golang {{.varname}} テンプレートの構文を使用します。

次の例を参照してください:

smartagent/sql:
  type: sql
  host: localhost
  port: 1433
  dbDriver: sqlserver
  connectionString: 'Server=127.0.0.1;Database=WideWorldImporters;User Id=sa;Password=123456;'
  queries:
    - query: 'SELECT COUNT(*) as count FROM Sales.Orders'
      metrics:
        - metricName: "orders"
          valueColumn: "count"

Snowflakeのパフォーマンスと使用状況のメトリクスを収集する

Snowflakeのパフォーマンスと使用状況のメトリクスを収集するようにエージェントを構成するには、以下の手順を実行します:

  1. pkg/sql/snowflake-metrics.yaml ファイルを sql モニターリポジトリから agent.yaml ファイルと同じ場所にコピーします。たとえば、/etc/splunk のようになります。GitHub リポジトリで snowflake-metrics.yaml の最新バージョンを検索します。

  2. SQLモニターを以下のように設定します:
    receivers:
      smartagent/sql:
        type: sql
        intervalSeconds: 3600
        dbDriver: snowflake
        params:
          account: "account.region"
          database: "SNOWFLAKE"
          schema: "ACCOUNT_USAGE"
          role: "ACCOUNTADMIN"
          user: "user"
          password: "password"
        connectionString: "{{.user}}:{{.password}}@{{.account}}/{{.database}}/{{.schema}}?role={{.role}}"
        queries:
          {"#from": "/etc/signalfx/snowflake-metrics.yaml"}

snowflake-metrics.yaml の内容を agent.yaml の下の queries にコピーすることもできます。snowflake-metrics.yaml を編集し、モニターするメトリクスのみを含めます。

モニターの使用

次の customers データベーステーブルを考えてみます:

id

name

country

status

1

Bill

USA

active

2

Mary

USA

inactive

3

Joe

USA

active

4

Elizabeth

Germany

active

以下のモニター設定を使用して、国別のアクティブ・ユーザー数と顧客数のメトリクスを生成します:

receivers:
  smartagent/sql:
    type: sql
    host: localhost
    port: 5432
    dbDriver: postgres
    params:
      user: "${env:SQL_USERNAME}"
      password: "${env:SQL_PASSWORD}"
    # The `host` and `port` values shown in this example (also provided through autodiscovery) are interpolated
    # to the connection string as appropriate for the database driver.
    # Also, the values from the `params` configuration option above can be
    # interpolated.
    connectionString: 'host={{.host}} port={{.port}} dbname=main user={{.user}} password={{.password}} sslmode=disable'
    queries:
      - query: 'SELECT COUNT(*) as count, country, status FROM customers GROUP BY country, status;'
        metrics:
          - metricName: "customers"
            valueColumn: "count"
            dimensionColumns: ["country", "status"]

この構成を使用すると、一連の MTS が取得されます。これらはすべてメトリクス名 customers です。各 MTS には、county および status ディメンションがあります。ディメンション値は countrystatus のその組み合わせに属する顧客の数です。また、複数の metrics アイテムを指定して、1 つのクエリから複数のメトリクスを生成することもできます。

メトリクス式の使用

列をメトリクス値とディメンションにマッピングするよりも複雑なロジックを実行する必要がある場合は、個々のメトリクス設定で使用可能な datapointExpressions オプションを使用します。expr 式言語を使用して、個々の行からデータポイントを導出するより高度なロジックを作成します。これらの式の評価は、式のコンテキストで使用可能な GAUGE または CUMULATIVE ヘルパー関数によって作成されたデータポイントになる必要があります。特定の行に対してデータポイントを生成する必要がない場合は、式の評価を nil にすることもできます。

GAUGECUMULATIVE の両関数には以下のシグネチャーがあります:

( metricNamedimensionsvalue )

  • metricName:文字列でなければなりません

  • dimensions:文字列のキーと値のマップでなければならず、また

  • value:数値でなければなりません。

行の各列は、同じ名前の式のコンテキスト内の変数にマッピングされます。たとえば、SQL クエリ結果の列に name という列がある場合、式で name という変数を使用できます。式では、文字列値を一重引用符('')で囲みます。

メトリクス

このインテグレーションはメトリクスを生成しません。

トラブルシューティング

__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____

_________ __ ______ _____________ _____ _________

_________ __ ___________ _________ ___ ____ _____ _____

  • ___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________

  • ____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______