- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Supported OS
このチェックは、Datadog Agent を通じて Snowflake を監視します。Snowflake は SaaS 分析データウェアハウスであり、完全にクラウドインフラストラクチャー上で実行されます。 このインテグレーションにより、クレジットの使用状況、請求、ストレージ、クエリメトリクスなどが監視されます。
以下の手順に従って、このチェックをインストールし、ホストで実行中の Agent に対して構成します。
Snowflake チェックは Datadog Agent パッケージに含まれています。
注: Python 2 を使用する Datadog Agent v6 では、Snowflake チェックは利用できません。Agent v6 で Snowflake を使用するには、Datadog Agent v6 で Python 3 を使用する を参照するか、Agent v7 にアップグレードしてください。
v7.23.0
でインテグレーションを構成している場合は、バージョンを 2.0.1
にアップグレードして最新機能をご利用ください。
下記のコマンドを使用してインテグレーションをアップグレードできます。datadog-agent integration install datadog-snowflake==2.0.1
Snowflake を監視するための Datadog 固有のロールとユーザーを作成します。Snowflake で、以下を実行して、ACCOUNT_USAGE スキーマにアクセスできるカスタムロールを作成します。
注: デフォルトでは、このインテグレーションは SNOWFLAKE
データベースと ACCOUNT_USAGE
スキーマを監視します。ORGANIZATION_USAGE
スキーマを監視する方法については、“組織データの収集” を参照してください。
このデータベースはデフォルトで使用でき、表示できるのは ACCOUNTADMIN
ロールまたは ACCOUNTADMIN によって付与されたロール
のユーザーのみです。
use role ACCOUNTADMIN;
grant imported privileges on database snowflake to role SYSADMIN;
use role SYSADMIN;
または、ACCOUNT_USAGE
にアクセスできる DATADOG
カスタムロールを作成することもできます。
-- Snowflake の使用状況を監視することを目的とした新しいロールを作成します。
create role DATADOG;
-- SNOWFLAKE データベースに対する権限を新しいロールに付与します。
grant imported privileges on database SNOWFLAKE 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
min_collection_interval
is 1 hour.
Snowflake metrics are aggregated by day, you can increase the interval to reduce the number of queries.デフォルトでは、このインテグレーションは 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 でプライベート接続
(AWS PrivateLink
など) が有効な場合、account
構成オプションを以下の形式に更新することで Snowflake とのインテグレーションを構成することが可能です。
- account: <ACCOUNT>.<REGION_ID>.privatelink
Snowflake インテグレーションは、カスタムクエリに対応しています。デフォルトで、インテグレーションは共有 SNOWFLAKE
データベースと ACCOUNT_USAGE
スキーマに接続します。
カスタムクエリを別のスキーマまたはデータベースで実行するには、別のインスタンスをサンプル snowflake.d/conf.yaml
に追加して database
および schema
オプションを指定します。
ユーザーとロールには、指定したデータベースまたはスキーマへのアクセス権があることを確認します。
custom_queries
には以下のオプションがあります。
オプション | 必須 | 説明 |
---|---|---|
query | 〇 | 実行する SQL です。簡単なステートメントにすることも、複数行のスクリプトにすることもできます。結果のすべての行が評価されます。複数行のスクリプトが必要な場合は、パイプを使用します。 |
columns | 〇 | 列を表すリストです。左から右へ順に並べられます。 次の 2 つの必須データがあります。 - name : サフィックスとして metric_prefix に付加され、完全な名前を形成します。type が tag と指定されている場合、この列は、このクエリによって収集されるすべてのメトリクスにタグとして適用されます。- type : 送信方法 (gauge 、count 、rate など)。tag と設定し、この列のアイテムの名前と値 (<name>:<row_value> ) で行の各メトリクスにタグ付けすることができます。 |
タグ | ✕ | 各メトリクスに適用する静的タグのリスト。 |
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.storage.storage_bytes.total (gauge) | The average number of bytes of table storage used including bytes for data currently in Time Travel. Shown as byte |
snowflake.storage.stage_bytes.total (gauge) | The average number of bytes of stage storage used by files in all internal stages. Shown as byte |
snowflake.storage.failsafe_bytes.total (gauge) | The average number of bytes of data in Fail-safe. Shown as byte |
snowflake.storage.database.storage_bytes (gauge) | The average number of bytes of database storage used. Shown as byte |
snowflake.storage.database.failsafe_bytes (gauge) | The average number of bytes of Fail-safe storage used. Shown as byte |
snowflake.billing.virtual_warehouse.avg (gauge) | The average overall credits billed per hour for virtual warehouses. Shown as unit |
snowflake.billing.virtual_warehouse.sum (gauge) | The sum of overall credits billed for virtual warehouses. Shown as unit |
snowflake.billing.cloud_service.avg (gauge) | The average overall credits billed per hour for cloud services. Shown as unit |
snowflake.billing.cloud_service.sum (gauge) | The total overall credits billed for cloud services. Shown as unit |
snowflake.billing.total_credit.avg (gauge) | The average overall of credits used per hour for the account. This is the sum of snowflake.billing.cloudservice and snowflake.billing.virtualwarehouses. Shown as unit |
snowflake.billing.total_credit.sum (gauge) | The total overall of credits used for the account. This is the sum of snowflake.billing.cloudservice and snowflake.billing.virtualwarehouses. Shown as unit |
snowflake.billing.warehouse.cloud_service.avg (gauge) | The average credits used per hour for cloud services by warehouse. Shown as unit |
snowflake.billing.warehouse.cloud_service.sum (gauge) | The total credits used for cloud services by warehouse. Shown as unit |
snowflake.billing.warehouse.virtual_warehouse.avg (gauge) | The average credits used per hour by warehouse. Shown as unit |
snowflake.billing.warehouse.virtual_warehouse.sum (gauge) | The total credits used by warehouse. Shown as unit |
snowflake.billing.warehouse.total_credit.avg (gauge) | The average total number of credits used per hour for the warehouse. NOTE: This value does not take into account adjustments which may be higher than your actual credit consumption. Shown as unit |
snowflake.billing.warehouse.total_credit.sum (gauge) | The total number of credits used for the warehouse. NOTE: This value does not take into account adjustments which may be higher than your actual credit consumption. Shown as unit |
snowflake.logins.fail.count (count) | Total failed login attempts. Shown as error |
snowflake.logins.success.count (count) | Total successful login attempts. Shown as success |
snowflake.logins.total (count) | Total number of login attempts. Shown as attempt |
snowflake.query.executed (gauge) | The average number of queries executed. Shown as query |
snowflake.query.queued_overload (gauge) | Average number of queries queued because the warehouse was overloaded. Shown as query |
snowflake.query.queued_provision (gauge) | Average number of queries queued because the warehouse was being provisioned. Shown as query |
snowflake.query.blocked (gauge) | Average number of queries blocked by a transaction lock. Shown as query |
snowflake.query.execution_time (gauge) | Average query execution time. Shown as millisecond |
snowflake.query.compilation_time (gauge) | Average query compilation time. Shown as millisecond |
snowflake.query.bytes_scanned (gauge) | Average query bytes scanned. Shown as byte |
snowflake.query.bytes_written (gauge) | Average query bytes written. Shown as byte |
snowflake.query.bytes_deleted (gauge) | Average query bytes deleted. Shown as byte |
snowflake.data_transfer.bytes.avg (gauge) | Average bytes transferred. Shown as byte |
snowflake.data_transfer.bytes.sum (gauge) | Total bytes transferred. Shown as byte |
snowflake.auto_recluster.credits_used.avg (gauge) | Average credits billed for automatic reclustering. Shown as unit |
snowflake.auto_recluster.credits_used.sum (gauge) | Total credits billed for automatic reclustering. Shown as unit |
snowflake.auto_recluster.bytes_reclustered.avg (gauge) | Average bytes reclustered. Shown as byte |
snowflake.auto_recluster.bytes_reclustered.sum (gauge) | Total bytes reclustered. Shown as byte |
snowflake.auto_recluster.rows_reclustered.avg (gauge) | Average rows reclustered. Shown as row |
snowflake.auto_recluster.rows_reclustered.sum (gauge) | Total rows reclustered. Shown as row |
snowflake.storage.table.active_bytes.avg (gauge) | Average bytes owned by (and billed to) this table that are in the active state. Shown as byte |
snowflake.storage.table.time_travel_bytes.avg (gauge) | Average bytes owned by (and billed to) this table that are in the Time Travel state. Shown as byte |
snowflake.storage.table.failsafe_bytes.avg (gauge) | Average bytes owned by (and billed to) this table that are in the Fail-safe state. Shown as byte |
snowflake.storage.table.retained_bytes.avg (gauge) | Average bytes owned by (and billed to) this table that are retained after deletion because they are referenced by one or more clones of this table. Shown as byte |
snowflake.pipe.credits_used.avg (gauge) | Average number of credits billed for Snowpipe data loads. Shown as unit |
snowflake.pipe.credits_used.sum (gauge) | Total number of credits billed for Snowpipe data loads. Shown as unit |
snowflake.pipe.bytes_inserted.avg (gauge) | Average number of bytes loaded from Snowpipe. Shown as byte |
snowflake.pipe.bytes_inserted.sum (gauge) | Total number of bytes loaded from Snowpipe. Shown as byte |
snowflake.pipe.files_inserted.avg (gauge) | Average number of files loaded from Snowpipe. Shown as file |
snowflake.pipe.files_inserted.sum (gauge) | Total number of files loaded from Snowpipe. Shown as file |
snowflake.replication.credits_used.avg (gauge) | Average number of credits used for database replication. Shown as unit |
snowflake.replication.credits_used.sum (gauge) | Total number of credits used for database replication. Shown as unit |
snowflake.replication.bytes_transferred.avg (gauge) | Average number of bytes transferred for database replication. Shown as byte |
snowflake.replication.bytes_transferred.sum (gauge) | Total number of bytes transferred for database replication. Shown as byte |
snowflake.query.bytes_spilled.local (gauge) | Avg volume of data spilled to local disk. Shown as byte |
snowflake.query.bytes_spilled.remote (gauge) | Avg volume of data spilled to remote disk. Shown as byte |
snowflake.organization.contract.amount (gauge) | The average amount for the given contract |
snowflake.organization.credit.virtual_warehouse.sum (gauge) | The sum of credits used by warehouse. |
snowflake.organization.credit.virtual_warehouse.avg (gauge) | The average credits used per day by warehouse. |
snowflake.organization.credit.cloud_service.sum (gauge) | The sum of credits billed for cloud services |
snowflake.organization.credit.cloud_service.avg (gauge) | The average overall credits billed for cloud services |
snowflake.organization.credit.cloud_service_adjustment.sum (gauge) | Sum of credits adjusted for included cloud services. |
snowflake.organization.credit.cloud_service_adjustment.avg (gauge) | Average of credits adjusted for included cloud services. |
snowflake.organization.credit.total_credit.sum (gauge) | The sum of overall of credits used for the organization. This is the sum of snowflake.organization.credit.cloudservice.sum and snowflake.organization.credit.virtualwarehouse.sum. |
snowflake.organization.credit.total_credit.avg (gauge) | The average number of overall of credits used for the organization. This is the sum of snowflake.organization.credit.cloudservice.avg and snowflake.organization.credit.virtualwarehouse.avg. |
snowflake.organization.credit.total_credits_billed.sum (gauge) | The total number of credits billed for the account in the day. It is the sum of snowflake.organization.credit.cloudservice.sum, snowflake.organization.credit.virtualwarehouse.sum, and snowflake.organization.credit.cloudserviceadjustment.sum. |
snowflake.organization.credit.total_credits_billed.avg (gauge) | The average number of credits billed for the account in the day. It is the sum of snowflake.organization.credit.cloudservice.avg, snowflake.organization.credit.virtualwarehouse.avg, and snowflake.organization.credit.cloudserviceadjustment.avg. |
snowflake.organization.currency.usage (gauge) | Sum of the total number of credits charged per day. |
snowflake.organization.currency.usage_in_currency (gauge) | Sum of the total amount charged for the day. |
snowflake.organization.warehouse.virtual_warehouse.sum (gauge) | Sum of number of credits used for the warehouse. |
snowflake.organization.warehouse.virtual_warehouse.avg (gauge) | Average number of credits used for the warehouse. |
snowflake.organization.warehouse.cloud_service.avg (gauge) | Average number of credits used for cloud services. |
snowflake.organization.warehouse.cloud_service.sum (gauge) | Sum of credits used for cloud services. |
snowflake.organization.warehouse.total_credit.sum (gauge) | The total number of credits used by the warehouse. Sum of snowflake.organization.warehouse.cloudservice.sum and snowflake.organization.warehouse.totalcredit.sum. |
snowflake.organization.warehouse.total_credit.avg (gauge) | The average total number of credits used by the warehouse. Sum of snowflake.organization.warehouse.cloudservice.avg and snowflake.organization.warehouse.totalcredit.avg |
snowflake.organization.storage.average_bytes (gauge) | Number of bytes of database storage used, including data in Time Travel and Fail-safe. Shown as byte |
snowflake.organization.storage.credits (gauge) | Sum of total number of credits used for all accounts in the organization. Sum of credits used for database storage and stages. |
snowflake.organization.rate.effective_rate (gauge) | The rate after applying any applicable discounts per the contract for the organization. |
snowflake.organization.data_transfer.bytes_transferred (gauge) | Number of bytes transferred during the usage date. Shown as byte |
snowflake.organization.balance.capacity (gauge) | The amount of capacity in currency that is available for use. This is the end of day balance. |
snowflake.organization.balance.on_demand_consumption (gauge) | The amount of consumption at on demand prices that will be invoiced given that all the free usage and capacity balances have been exhausted. This is a negative value (e.g. -250) until the invoice is paid. This is the end of day balance. |
snowflake.organization.balance.rollover (gauge) | The amount of rollover balance in currency that is available for use. At the end of a contract term |
snowflake.organization.balance.free_usage (gauge) | The amount of free usage in currency that is available for use. This is the end of day balance |
Snowflake には、イベントは含まれません。
snowflake.can_connect
Returns CRITICAL
if the check cannot authenticate Snowflake credentials. Returns OK
otherwise.
Statuses: ok, critical
ご不明な点は、Datadog のサポートチーム までお問合せください。
お役に立つドキュメント、リンクや記事: