タスク実行のイベントモニタリング

タスクの実行ステータスに関する情報を提供するイベントを記録するようにSnowflakeを構成できます。イベントは、タスクに関連付けられた アクティブイベントテーブル に記録されます。

例えば、 イベントテーブルをデータベースに関連付けた とします。そのデータベースのタスクが実行されると、Snowflakeはそのイベントテーブルにイベントを記録します。

イベントテーブルを監視するために、 新しいデータに対してアラート をセットすることができます。タスク実行が失敗したときに 通知を送信する ようアラートを構成できます。

次のセクションでは、イベントをキャプチャするためのイベントログのセットアップ方法、アラートのセットアップ方法、イベントテーブルに記録されたイベントの解釈方法について説明します。

注釈

タスクのイベントをログに記録するにはコストがかかります。 テレメトリーデータ収集の費用 をご参照ください。

制限事項

  • タスクイベントはSnowflake Native Appsではサポートされていません。

キャプチャするイベントの重大度レベルのセット

イベントテーブルに記録するタスクイベントを設定するには、 イベントテーブルに記録したいイベントの重大度レベル をセットします。

  • ERROR: 失敗したタスクのイベント。

  • INFO: タスク実行の成功と失敗のイベント。

レベルを設定するには、アカウントまたはオブジェクトの LOG_LEVEL パラメーターをセットします。以下のためにレベルをセットできます。

  • アカウント内のすべてのオブジェクト、

  • データベースまたはスキーマ内のすべてのオブジェクト。

  • 特定のタスク。

注釈

アカウントまたはオブジェクトに重大度レベルがセットされていない場合、イベントはキャプチャされません。

例:

  • アカウント内の全オブジェクトの ERROR-レベルのイベントとメッセージを取得するには、 ALTER ACCOUNT SET LOG_LEVEL を実行します。

    ALTER ACCOUNT SET LOG_LEVEL = ERROR;
    
    Copy

    このレベルは、 UDFs、ストアドプロシージャ、動的テーブル、およびタスクを含む、アカウント内のすべてのタイプのオブジェクトに影響することに注意してください。

  • my_db データベース内のすべてのオブジェクトの INFO レベルのイベントとメッセージをキャプチャするために、 ALTER DATABASE ... SET LOG_LEVEL を実行します。

    ALTER DATABASE my_db SET LOG_LEVEL = INFO;
    
    Copy

    アカウントでレベルを設定する場合と同様に、データベースでレベルを設定すると、 UDFs、ストアドプロシージャ、動的テーブル、およびタスクを含む、データベース内のすべてのタイプのオブジェクトに影響します。

  • タスク my_task の ERROR レベルのイベントを捕捉するには、 ALTER TASK ... SET LOG_LEVEL を実行します。

    ALTER TASK my_task SET LOG_LEVEL = ERROR;
    
    Copy

タスク完了イベントの新規データに関するアラートの設定

ログイベントの重大度レベルを設定した後、新しいデータに対するアラートをセットして、タスク完了の失敗を示す新しいイベントをイベントテーブルで監視することができます。新しいデータに関するアラートは、イベントテーブルの新しい行が挿入され、アラートで指定された条件を満たすとトリガーされます。

注釈

新しいデータに対してアラートを作成するには、イベント・テーブルをクエリするために必要な権限を付与されたロールを使用する必要があります。

アラート条件では、タスク完了イベントをクエリするために、 resource_attributes:"snow.executable.type" = 'TASK' の行を選択します。イベントリストを絞り込むには、以下の列でフィルターをかけることができます。

  • 結果を特定のデータベース内のタスクに限定するには、 resource_attributes:"snow.database.name" を使用します。

  • タスクの実行に失敗したイベントを返すには、 value:state = 'FAILED' を使います。

タスク実行イベントでログに記録される値に関する情報は、 タスクイベントのログ情報 をご参照ください。

例えば、次のステートメントは、データベース my_db 内のタスクのタスク完了が失敗したときにアクションを実行するアラートを新しいデータに作成します。この例では次のように仮定しています。

CREATE ALERT my_alert_on_task_failures
  IF( EXISTS(
    SELECT * FROM SNOWFLAKE.TELEMETRY.EVENT_TABLE
      WHERE resource_attributes:"snow.executable.type" = 'task'
        AND resource_attributes:"snow.database.name" = 'my_db'
        AND record:"severity_text" = 'ERROR'
        AND value:"state" = 'FAILED'))
  THEN
    BEGIN
      LET result_str VARCHAR;
      (SELECT ARRAY_TO_STRING(ARRAY_ARG(name)::ARRAY, ',') INTO :result_str
         FROM (
           SELECT resource_attributes:"snow.executable.name"::VARCHAR name
             FROM TABLE(RESULT_SCAN(SNOWFLAKE.ALERT.GET_CONDITION_QUERY_UUID()))
             LIMIT 10
         )
      );
      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.TEXT_PLAIN(:result_str),
        '{"my_slack_integration": {}}'
      );
    END;
Copy

タスク完了イベントのイベントテーブルへのクエリ

タスク完了が失敗したことを示すイベントをイベントテーブルにクエリすることもできます。

イベントテーブルをクエリするために必要なロールや、結果をフィルターするために使用できる条件については、 タスク完了イベントの新規データに関するアラートの設定 を参照してください。

例えば、タイムスタンプ、タスク名、クエリ ID、データベース my_db 内のタスクに関するエラーのエラーメッセージを取得する場合:

SELECT
    timestamp,
    resource_attributes:"snow.executable.name"::VARCHAR AS task_name,
    resource_attributes:"snow.query.id"::VARCHAR AS query_id,
    value:message::VARCHAR AS error
  FROM my_event_table
  WHERE
    resource_attributes:"snow.executable.type" = 'TASK' AND
    resource_attributes:"snow.database.name" = 'MY_DB' AND
    value:state = 'FAILED'
  ORDER BY timestamp DESC;
Copy
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+
| TIMESTAMP               | TASK_NAME | QUERY_ID                             | ERROR                                                |
|-------------------------+-----------+--------------------------------------+------------------------------------------------------|
| 2025-02-18 00:21:19.461 | T1        | 01ba76b5-0107-e56d-0000-a995024f4222 | 002003: SQL compilation error:                       |
|                         |           |                                      | Object 'MY_TABLE' does not exist or not authorized.  |
+-------------------------+-----------+--------------------------------------+------------------------------------------------------+

以下の例では、スキーマ my_schema 内のタスクに関するエラーの全列を検索します:

SELECT *
  FROM my_event_table
  WHERE
    resource_attributes:"snow.executable.type" = 'FAILED' AND
    resource_attributes:"snow.schema.name" = 'MY_SCHEMA' AND
    value:state = 'FAILED'
  ORDER BY timestamp DESC;
Copy
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+
| TIMESTAMP               | START_TIMESTAMP | OBSERVED_TIMESTAMP      | TRACE | RESOURCE | RESOURCE_ATTRIBUTES                                        | SCOPE | SCOPE_ATTRIBUTES | RECORD_TYPE | RECORD                        | RECORD_ATTRIBUTES | VALUE                                                                                                | EXEMPLARS |
|-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------|
| 2025-02-18 00:21:19.461 | NULL            | 2025-02-18 00:21:19.461 | NULL  | NULL     | {                                                          | NULL  | NULL             | EVENT       | {                             | NULL              | {                                                                                                    | NULL      |
|                         |                 |                         |       |          |   "snow.database.id": 49,                                  |       |                  |             |   "name": "execution.status", |                   |   "message": "002003: SQL compilation error:\nObject 'EMP_TABLE' does not exist or not authorized.", |           |
|                         |                 |                         |       |          |   "snow.database.name": "MY_DB",                        |       |                  |                |   "severity_text": "ERROR"    |                   |   "state": "FAILED"                                                                                  |           |
|                         |                 |                         |       |          |   "snow.executable.id": 518,                               |       |                  |             | }                             |                   | }                                                                                                    |           |
|                         |                 |                         |       |          |   "snow.executable.name": "T1",                            |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.executable.type": "TASK",                          |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.id": 2601,                                   |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.name": "DATA_ADMIN",                         |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.owner.type": "ROLE",                               |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.query.id": "01ba76b5-0107-e56d-0000-a995024f4222", |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.schema.id": 411,                                   |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.schema.name": "MY_SCHEMA",                      |       |                  |             |                               |                   |                                                                                                      |              |
|                         |                 |                         |       |          |   "snow.warehouse.id": 41,                                 |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          |   "snow.warehouse.name": "INTAKE_WAREHOUSE"                |       |                  |             |                               |                   |                                                                                                      |           |
|                         |                 |                         |       |          | }                                                          |       |                  |             |                               |                   |                                                                                                      |           |
+-------------------------+-----------------+-------------------------+-------+----------+------------------------------------------------------------+-------+------------------+-------------+-------------------------------+-------------------+------------------------------------------------------------------------------------------------------+-----------+

タスクイベントのログ情報

タスクが実行されると、イベントがイベント・テーブルにログ記録されます。以下のセクションでは、イベントを表すイベント・テーブル行について説明します。

イベントテーブル列値

タスクが完了または失敗すると、以下の値の行がイベント・テーブルに挿入されます。

注釈

列が以下にリストされていない場合、その列の値はイベントに対して NULL です。

データ型

説明

timestamp

TIMESTAMP_NTZ

イベント作成時の UTC タイムスタンプ。

observed_timestamp

TIMESTAMP_NTZ

ログに使用される時間は UTC です。現在、これは timestamp 列にある値と同じです。

resource_attributes

OBJECT

実行されたタスクを識別する 属性

record_type

STRING

タスク実行時の EVENT のイベントタイプ。

record

OBJECT

タスクの実行ステータスの 詳細

value

VARIANT

タスク実行の ステータス で、実行に失敗した場合は、失敗のエラーメッセージ。

resource_attributes 列のキー値・ペア

resource_attributes 列には、以下のキー値ペアを持つ OBJECT 値が含まれます。

属性名

属性タイプ

説明

snow.database.id

INTEGER

タスクを含むデータベースの内部/システム生成識別子。

12345

snow.database.name

VARCHAR

タスクを含むデータベースの名前。

MY_DATABASE

snow.executable.id

INTEGER

実行したタスクの内部/システム生成識別子。

12345

snow.executable.name

VARCHAR

実行したタスクの名前。

MY_TASK

snow.executable.type

VARCHAR

オブジェクトのタイプ。タスクイベントの値は TASK です。

TASK

snow.owner.id

INTEGER

タスクの OWNERSHIP 権限を持つロールの内部/システム生成識別子。

12345

snow.owner.name

VARCHAR

タスクの OWNERSHIP 権限を持つロールの名前。

MY_ROLE

snow.owner.type

VARCHAR

オブジェクトを所有するロールのタイプ。例えば ROLE があります。 . Snowflake Native App がオブジェクトを所有する場合、値は APPLICATION になります。 . 削除されたオブジェクトには所有者ロールがないため、オブジェクトを削除した場合、Snowflakeは NULL を返します。

ROLE

snow.query.id

VARCHAR

タスクを実行したクエリの ID

01ba7614-0107-e56c-0000-a995024f304a

snow.schema.id

INTEGER

タスクを含むスキーマの内部/システム生成識別子。

12345

snow.schema.name

VARCHAR

タスクを含むスキーマの名前。

MY_SCHEMA

snow.warehouse.id

INTEGER

タスクを実行するために使用されるウェアハウスの内部/システム生成識別子。

12345

snow.warehouse.name

VARCHAR

タスクの実行に使用されるウェアハウスの名前。

MY_WAREHOUSE

record 列のキー値・ペア

record 列には、以下のキー値ペアを持つ OBJECT 値が含まれます。

キー

説明

name

VARCHAR

イベント名。タスク実行時の値は execution.status です。

execution.status

severity_text

VARCHAR

イベントの重大度レベル(以下の値のいずれか)。

  • INFO: タスク実行に成功しました。

  • ERROR: タスクの実行に失敗しました。

INFO

value 列のキー値・ペア

value 列には、以下のキー値ペアを持つ VARIANT 値が含まれます。

キー

説明

state

VARCHAR

タスクの実行状態。以下の値のいずれか:

  • SUCCEEDED: タスク実行に成功しました。

  • ERROR: タスクの実行に失敗しました。

SUCCEEDED

message

VARCHAR

state の値が ERROR の場合、この列にはエラーメッセージが含まれます。