概要
このチェックは、Datadog Agent を通じて Snowflake を監視します。Snowflake は SaaS 分析データウェアハウスであり、完全にクラウドインフラストラクチャー上で実行されます。
このインテグレーションにより、クレジットの使用状況、請求、ストレージ、クエリメトリクスなどが監視されます。
注: メトリクスは Snowflake へのクエリとともに収集されます。Datadog インテグレーションによるクエリは、Snowflake によって課金されます。
セットアップ
以下の手順に従って、このチェックをインストールし、ホストで実行中の Agent に対して構成します。
インストール
Snowflake チェックは Datadog Agent パッケージに含まれています。
注: Python 2 を使用する Datadog Agent v6 では、Snowflake チェックは利用できません。Agent v6 で Snowflake を使用するには、Datadog Agent v6 で Python 3 を使用するを参照するか、Agent v7 にアップグレードしてください。
構成
Snowflake は、`SYSADMIN` などの代替ロールにアクセス許可を付与することをお勧めします。詳細については、
ACCOUNTADMIN ロールの制御の詳細をご覧ください。
Snowflake を監視するための Datadog 固有のロールとユーザーを作成します。Snowflake で、以下を実行して、ACCOUNT_USAGE スキーマにアクセスできるカスタムロールを作成します。
注: デフォルトでは、このインテグレーションは SNOWFLAKE
データベースと ACCOUNT_USAGE
スキーマを監視します。ORGANIZATION_USAGE
スキーマを監視する方法については、“組織データの収集” を参照してください。
このデータベースはデフォルトで使用でき、表示できるのは ACCOUNTADMIN
ロールまたは ACCOUNTADMIN によって付与されたロールのユーザーのみです。
“text<br>use role ACCOUNTADMIN;<br>grant imported privileges on database snowflake to role SYSADMIN;<br>use role SYSADMIN;<br>
別の方法として、ACCOUNT_USAGE
にアクセスできる DATADOG
カスタムロールを作成することができます。
```text
– Snowflake の使用量を監視するための新しいロールを作成します。
create role DATADOG;
– 新しいロールに SNOWFLAKE データベースの特権を付与します。
grant imported privileges on database SNOWFLAKE to role DATADOG;
– DATADOG ロールにデフォルトのウェアハウスの使用権限を付与します。”
grant usage on warehouse <WAREHOUSE> to role DATADOG;
“– ユーザーを作成します (既存のユーザーを使用する場合はこのステップをスキップします)。
create user DATADOG_USER
LOGIN_NAME = DATADOG_USER
password = ‘<PASSWORD>’
default_warehouse = <WAREHOUSE>
default_role = DATADOG
default_namespace = SNOWFLAKE.ACCOUNT_USAGE;
– ユーザーにモニターロールを付与します。
grant role DATADOG to user <USER>;
```”
Snowflake のパフォーマンスデータの収集を開始するには、Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの snowflake.d/conf.yaml
ファイルを編集します。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル snowflake.d/conf.yaml を参照してください。
## @param account - string - required
## Name of your account (provided by Snowflake), including the platform and region if applicable.
## For more information on Snowflake account names,
## see https://docs.snowflake.com/en/user-guide/connecting.html#your-snowflake-account-name
#
- account: <ORG_NAME>-<ACCOUNT_NAME>
## @param username - string - required
## Login name for the user.
#
username: <USER>
## @param password - string - required
## Password for the user
#
password: <PASSWORD>
## @param role - string - required
## Name of the role to use.
##
## By default, the SNOWFLAKE database is only accessible by the ACCOUNTADMIN role. Snowflake recommends
## configuring a role specific for monitoring:
## https://docs.snowflake.com/en/sql-reference/account-usage.html#enabling-account-usage-for-other-roles
#
role: <ROLE>
## @param min_collection_interval - number - optional - default: 15
## This changes the collection interval of the check. For more information, see:
## https://docs.datadoghq.com/developers/write_agent_check/#collection-interval
##
## NOTE: Most Snowflake ACCOUNT_USAGE views are populated on an hourly basis,
## so to minimize unnecessary queries, set the `min_collection_interval` to 1 hour.
#
min_collection_interval: 3600
# @param disable_generic_tags - boolean - optional - default: false
# Generic tags such as `cluster` will be replaced by <integration_name>_cluster to avoid
# getting mixed with other integration tags.
# disable_generic_tags: true
In the default `conf.yaml`, the
min_collection_interval
is 1 hour.
Snowflake metrics are aggregated by day, you can increase the interval to reduce the number of queries.
Note: Snowflake ACCOUNT_USAGE views have a
known latency of 45 minutes to 3 hours.
Agent を再起動します。
組織データの収集
デフォルトでは、このインテグレーションは ACCOUNT_USAGE
スキーマを監視しますが、代わりに組織レベルのメトリクスを監視するように設定することができます。
組織メトリクスを収集するには、インテグレーションの構成でスキーマフィールドを ORGANIZATION_USAGE
に変更し、min_collection_interval
を 43200 に増やします。ほとんどの組織クエリのレイテンシーが最大 24 時間であるため、これにより Snowflake へのクエリ数を減らすことができます。
注: 組織のメトリクスを監視するには、user
が ORGADMIN
ロールである必要があります。
- schema: ORGANIZATION_USAGE
min_collection_interval: 43200
デフォルトでは、一部の組織メトリクスのみが有効になっています。利用可能なすべての組織メトリクスを収集するには、metric_groups
構成オプションを使用します。
metric_groups:
- snowflake.organization.warehouse
- snowflake.organization.currency
- snowflake.organization.credit
- snowflake.organization.storage
- snowflake.organization.contracts
- snowflake.organization.balance
- snowflake.organization.rate
- snowflake.organization.data_transfer
さらに、アカウントと組織の両方のメトリクスを同時に監視することができます。
instances:
- account: example-inc
username: DATADOG_ORG_ADMIN
password: '<PASSWORD>'
role: SYSADMIN
schema: ORGANIZATION_USAGE
database: SNOWFLAKE
min_collection_interval: 43200
- account: example-inc
username: DATADOG_ACCOUNT_ADMIN
password: '<PASSWORD>'
role: DATADOG_ADMIN
schema: ACCOUNT_USAGE
database: SNOWFLAKE
min_collection_interval: 3600
複数環境のデータ収集
複数の Snowflake 環境のデータを収集したい場合は、snowflake.d/conf.yaml
ファイルに各環境をインスタンスとして追加します。例えば、DATADOG_SYSADMIN
と DATADOG_USER
という 2 つのユーザーのデータを収集する必要がある場合:
instances:
- account: example-inc
username: DATADOG_SYSADMIN
password: '<PASSWORD>'
role: SYSADMIN
database: EXAMPLE-INC
- account: example-inc
username: DATADOG_USER
password: '<PASSWORD>'
role: DATADOG_USER
database: EXAMPLE-INC
プロキシのコンフィギュレーション
Snowflake は、プロキシコンフィギュレーションの環境変数を設定することをお勧めします。
snowflake.d/conf.yaml の init_config
の下に proxy_host
、proxy_port
、proxy_user
、proxy_password
を設定することもできます。
注: Snowflake は、プロキシコンフィギュレーションを自動的にフォーマットし、標準プロキシ環境変数を設定します。
これらの変数は、Docker、ECS、Kubernetes などのオーケストレーターを含むインテグレーションからのすべてのリクエストにも影響を与えます。
Snowflake 構成へのプライベート接続
Snowflake でプライベート接続 (AWS PrivateLink など) が有効な場合、account
構成オプションを以下の形式に更新することで Snowflake とのインテグレーションを構成することが可能です。
- account: <ACCOUNT>.<REGION_ID>.privatelink
Snowflake カスタムクエリ
Snowflake インテグレーションは、カスタムクエリに対応しています。デフォルトで、インテグレーションは共有 SNOWFLAKE
データベースと ACCOUNT_USAGE
スキーマに接続します。
カスタムクエリを別のスキーマまたはデータベースで実行するには、別のインスタンスをサンプル snowflake.d/conf.yaml に追加して database
および schema
オプションを指定します。
ユーザーとロールには、指定したデータベースまたはスキーマへのアクセス権があることを確認します。
コンフィギュレーションオプション
custom_queries
には以下のオプションがあります。
オプション | 必須 | 説明 |
---|
クエリ | はい | 実行する SQL です。簡単なステートメントにすることも、複数行のスクリプトにすることもできます。結果のすべての行が評価されます。複数行のスクリプトが必要な場合は、パイプを使用します。 |
列 | はい | 列を表すリストです。左から右へ順に並べられます。
次の 2 つの必須データがあります。 - name : サフィックスとして metric_prefix に付加され、完全な名前を形成します。type が tag と指定されている場合、この列は、このクエリによって収集されるすべてのメトリクスにタグとして適用されます。 - type : 送信方法 (gauge 、count 、rate など)。tag と設定し、この列のアイテムの名前と値 (<name>:<row_value> ) で行の各メトリクスにタグ付けすることができます。 |
usage-metering-get-hourly-usage-for-lambda-traced-invocations | いいえ | 各メトリクスに適用する静的タグのリスト。 |
注
- 定義済みの
columns
のうち最低 1 つは、メトリクスタイプ (gauge
、count
、rate
など) である必要があります。 - 列内のアイテム数は、クエリで返された列数と同じである必要があります。
columns
のアイテムが定義される順番は、クエリで返された順番と同じである必要があります。
custom_queries:
- query: select F3, F2, F1 from Table;
columns:
- name: f3_metric_alias
type: gauge
- name: f2_tagkey
type: tag
- name: f1_metric_alias
type: count
tags:
- test:snowflake
例
以下は、データベース、スキーマ、ウェアハウス名でタグ付けされた QUERY_HISTORY
ビューですべてのクエリをカウントするクエリの例です。
select count(*), DATABASE_NAME, SCHEMA_NAME, WAREHOUSE_NAME from QUERY_HISTORY group by 2, 3, 4;
構成
instances
のカスタムクエリのコンフィギュレーションは、以下のようになります。
custom_queries:
- query: select count(*), DATABASE_NAME, SCHEMA_NAME, WAREHOUSE_NAME from QUERY_HISTORY group by 2, 3, 4;
columns:
- name: query.total
type: gauge
- name: database_name
type: tag
- name: schema_name
type: tag
- name: warehouse_name
type: tag
tags:
- test:snowflake
検証
結果を確認するには、メトリクスの概要を使用してメトリクスを検索します。

検証
Agent の status サブコマンドを実行し、Checks セクションで snowflake
を探します。
収集データ
注: デフォルトでは、以下のメトリクスグループのメトリクスのみが有効になっています。
snowflake.query.*
、
snowflake.billing.*
、
snowflake.storage.*
、
snowflake.logins.*
他のメトリクスグループのメトリクスを収集する場合は、でこのインテグレーションのコンフィグファイル例を参照してください。
メトリクス
イベント
Snowflake には、イベントは含まれません。
サービスのチェック
トラブルシューティング
ご不明な点は、Datadog のサポートチームまでお問合せください。
その他の参考資料
お役に立つドキュメント、リンクや記事: