SQL
SQL モニターには、この Splunk Observability Cloud インテグレーションを使用してください。メリット、インストール、設定、メトリクスを参照してください
SQL モニターは、データベース上の SQL クエリからデータベースの使用状況メトリクスを収集します。Kubernetes、Windows、Linux で利用できます。
設定
Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:
-
Smart Agent レシーバーを設定ファイルに含めます。
-
レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。
-
「Collector でSmart Agent モニターを使用する」を参照してください。
-
Smart Agent レシーバーの設定方法を参照してください。
-
一般的な構成オプションのリストについては、「モニターの共通設定」を参照してください。
-
Collector の詳細については、「はじめに:Collector を理解して使用する」を参照してください。
-
例
このインテグレーションを有効にするには、Collector構成に以下を追加します:
receivers:
smartagent/sql:
type: sql
... # Additional config
次に、設定ファイルの service.pipelines.metrics.receivers セクションにモニターを追加します:
service:
pipelines:
metrics:
receivers: [smartagent/sql]
コンフィギュレーション設定
以下の表は、このモニターの設定オプションを示しています:
|
オプション |
必須 |
タイプ |
説明 |
|---|---|---|---|
|
|
あり |
|
データポイントを生成するクエリのリスト。 |
|
|
いいえ |
|
SQLインスタンスのホストまたはアドレス。 |
|
|
いいえ |
|
SQL インスタンスのポート。デフォルト値は |
|
|
いいえ |
| キーと値のペアの形式で、置き換え可能なパラメータ。値は、 システムは、Go テンプレート構文を使用して、指定されたキーの値を |
|
|
いいえ |
| 使用するデータベースドライバ。有効な値は、postgres、
|
|
|
いいえ |
| データベースへの接続に使用される接続文字列と置換可能なパラメータ。 詳しくは、Go |
|
|
いいえ |
|
(デフォルト: |
ネストされた queries コンフィギュレーション・オブジェクトには以下のフィールドがあります:
|
オプション |
必須 |
タイプ |
説明 |
|---|---|---|---|
|
|
あり |
|
データベースから1つ以上の行を選択するSQLクエリ・テキスト。 |
|
|
いいえ |
| クエリ文字列のプレースホルダを置き換えるオプションの パラメータ。 |
|
|
いいえ |
|
クエリから生成されたメトリクス。 |
|
|
いいえ |
| 各行をメトリクスのセットに変換する式のセット。 これらの式はそれぞれ、クエリ結果セットの各行に対して実行され、行ごとに複数のデータポイントを生成することができます。各式は、1 つのデータポイントまたは nil として評価されなければなりません。 |
ネストされた metrics コンフィギュレーション・オブジェクトには以下のフィールドがあります:
|
オプション |
必須 |
タイプ |
説明 |
|---|---|---|---|
|
|
あり |
| Splunk Observability Cloud で表示されるメトリクスの 名前。. |
|
|
あり |
|
データポイントの値を保持する列名。 |
|
|
いいえ |
| データポイントのディメンションを構成する列の 名前。 |
|
|
いいえ |
| 値が累積カウンター(true)かゲージ (false)か。この値を間違って設定し、メトリクス名の最初のデータポイントを間違ったタイプで送信した場合、最初に見たタイプに基づいてシステムで設定されるため、手動でタイプを変更する必要があります。デフォルト値は |
|
|
いいえ |
| ディメンションと対応するプロパティのアタッチに使用する列との間の マッピング。 |
サポート対象のドライバ
使用するデータベースドライバの名前を含む dbDriver オプションを指定する必要があります。これらの名前は、エージェントで使用される Golang SQL ドライバの名前と同じです。モニターは、指定したドライバに従って、connectionString をフォーマットします。
mysql ドライバを使用する場合は、mysql ドライバの接続文字列構文を使用する必要があります。これは現在サポートされているドライバのリストです:
-
hana
-
sqlserver
-
mysql
-
postgres
-
pq
-
snowflake
パラメータ化された接続文字列
インテグレーションは、connectionString の値を、変数 host と port と params オプションのすべてのパラメータからなるコンテキストを持つ 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のパフォーマンスと使用状況のメトリクスを収集するようにエージェントを構成するには、以下の手順を実行します:
-
pkg/sql/snowflake-metrics.yamlファイルをsqlモニターリポジトリからagent.yamlファイルと同じ場所にコピーします。たとえば、/etc/splunkのようになります。GitHub リポジトリでsnowflake-metrics.yamlの最新バージョンを検索します。 -
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 ディメンションがあります。ディメンション値は country と status のその組み合わせに属する顧客の数です。また、複数の metrics アイテムを指定して、1 つのクエリから複数のメトリクスを生成することもできます。
メトリクス式の使用
列をメトリクス値とディメンションにマッピングするよりも複雑なロジックを実行する必要がある場合は、個々のメトリクス設定で使用可能な datapointExpressions オプションを使用します。expr 式言語を使用して、個々の行からデータポイントを導出するより高度なロジックを作成します。これらの式の評価は、式のコンテキストで使用可能な GAUGE または CUMULATIVE ヘルパー関数によって作成されたデータポイントになる必要があります。特定の行に対してデータポイントを生成する必要がない場合は、式の評価を nil にすることもできます。
GAUGE 、CUMULATIVE の両関数には以下のシグネチャーがあります:
( metricName、dimensions、value )
-
metricName:文字列でなければなりません -
dimensions:文字列のキーと値のマップでなければならず、また -
value:数値でなければなりません。
行の各列は、同じ名前の式のコンテキスト内の変数にマッピングされます。たとえば、SQL クエリ結果の列に name という列がある場合、式で name という変数を使用できます。式では、文字列値を一重引用符('')で囲みます。
メトリクス
このインテグレーションはメトリクスを生成しません。
トラブルシューティング
__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____
_________ __ ______ _____________ _____ _________
-
______ _ ____ __ ___ ______ _______ _______
-
_______ ______ ________
_________ __ ___________ _________ ___ ____ _____ _____
-
___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________
-
____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______