Use logging and event tracing for an app¶
このトピックでは、プロバイダーがログメッセージとトレースイベントを記録するために Snowflake Native App を設定する方法について説明します。
アプリのログメッセージとトレースイベントについて¶
Snowflake Native App Framework は、アプリに関する情報を収集するために、Snowflake のロギングとトレース 機能の使用をサポートしています。プロバイダーは、以下のことを記録・分析するアプリを設定することができます:
ログメッセージ は、コードの特定部分の状態に関する情報を含む、独立した詳細なメッセージです。
構造化データを使用した トレースイベント は、プロバイダーがコードの複数の部分にまたがる情報やグループ化された情報を取得するために使用できます。トレース・イベントは、アプリがそのパフォーマンスや動作に関連する情報を発信することを可能にします。
Metrics - Snowflake が生成する CPU とメモリメトリクスに基づく、ストアドプロシージャと UDF のリソース消費に関する情報。
アプリがログメッセージとトレースイベントを出力するように設定するには、プロバイダーはマニフェストファイルでログレベルとトレースレベルを設定します。 アプリのログとトレースのレベルを設定する をご参照ください。
プロバイダーは、コンシューマがログメッセージとトレースイベントをプロバイダーと共有できるように、イベント共有を使用するようにアプリを構成することもできます。詳しくは イベントの共有について をご参照ください。
イベント共有について¶
イベント共有により、プロバイダーはアプリのパフォーマンスや動作に関する情報を収集できます。プロバイダーは、コンシューマがログメッセージとトレースイベントをプロバイダーと共有することを要求するように、アプリを構成することができます。イベント共有は、プロバイダーとコンシューマーが、アプリによって発行されたログメッセージとトレースイベントを保存するために、アカウントにイベントテーブルを設定することを必要とします。
イベント共有が有効な場合、コンシューマ・アカウントのイベント・テーブルに挿入されるログ・メッセージとトレース・イベントは、プロバイダー・アカウントのイベント・テーブルにも挿入されます。
イベント共有を使用する際の考慮事項¶
アプリのロギングとイベント共有を設定する前に、プロバイダーは以下を考慮する必要があります:
プロバイダーは、データインジェスチョンやストレージなど、プロバイダー側でのイベント共有に関連するすべてのコストを負担します。
プロバイダーは、イベント共有をサポートする各リージョンで、 共有イベントを保存するためのアカウント を持っている必要があります。
プロバイダーは、マニフェストファイルで、アプリケーションのデフォルトのログレベルとトレースレベルを定義する必要があります。
以前のイベント共有機能から移行する際の注意点¶
既存のイベント共有機能からイベント定義の使用に移行する場合、プロバイダーは以下を考慮する必要があります。
以前のイベント共有機能は、 OPTIONAL ALL のイベント定義に相当します。
以前の機能を使用していたアプリの公開バージョンとパッチは、デフォルトで OPTIONAL ALL イベント定義を持ちます。プロバイダーは、このイベント定義をマニフェスト・ファイルに追加する必要はありません。
イベント定義の使用を開始するには、プロバイダーはサポートされているイベント定義をマニフェストファイルに追加します。これは新規アプリだけでなく、既存アプリの新バージョンやパッチにも適用されます。
注釈
より詳細なログとイベントの共有を要求し始めるには、プロバイダーはマニフェストファイルにイベント定義を追加するだけでよいです。プロバイダーは他に何もする必要はありません。
ワークフロー - アプリのイベント共有を設定する¶
イベント共有は、コンシューマがプロバイダーとログメッセージやトレースイベントを共有することを可能にします。
以下のワークフローは、アプリのイベント共有を設定し、有効にする方法を示しています:
プロバイダー は、アプリのログとトレース・レベル を設定します。
プロバイダー はイベント定義 をマニフェストファイルに追加します。
イベント定義は、アプリが発するログメッセージとトレースイベントのフィルターとして機能します。プロバイダーは、イベント定義を必須または任意に設定できます。
プロバイダーは 、組織内にイベントテーブル を設定します。
プロバイダーはアプリを公開します。
消費者がアプリをインストールすると、イベントテーブルを設定し、イベント共有を有効にすることができます。イベント共有のためのコンシューマ要件の詳細については、 Enable logging and event sharing for an app をご参照ください。
Monitor consumer application health¶
You can use the LAST_HEALTH_STATUS and LAST_HEALTH_STATUS_UPDATED_ON columns
of the APPLICATION_STATE view to monitor the health of consumer instances of your
app. The LAST_HEALTH_STATUS column has the following possible values:
OK: The consumer instance is healthy.FAILED: The consumer instance is in an error state.PAUSED: The consumer manually paused the app.
The following code sample demonstrates using the APPLICATION_STATE view
to retrieve the health status of all consumer instances of your app:
SELECT
CONSUMER_ORGANIZATION_NAME,
CONSUMER_ACCOUNT_NAME,
LAST_HEALTH_STATUS,
LAST_HEALTH_STATUS_UPDATE_TIME
FROM
SNOWFLAKE.ACCOUNT_USAGE.APPLICATION_STATE
WHERE
PROVIDER_ORG_NAME = '<your_provider_org_name>'
AND APPLICATION_NAME = '<your_app_name>'
ORDER BY
LAST_HEALTH_STATUS_UPDATE_TIME DESC;
The preceding query may return results similar to the following:
CONSUMER_ORG_NAME CONSUMER_ACCOUNT_NAME LAST_HEALTH_STATUS LAST_HEALTH_STATUS_UPDATE_TIME
------------------ --------------------- ------------------ -------------------------------
consumer_org_1 consumer_account_1 OK 2024-01-15 10:30:00.000
consumer_org_2 consumer_account_2 FAILED 2024-01-15 09:45:00.000
consumer_org_3 consumer_account_3 PAUSED 2024-01-14 16:20:00.000