监控任务执行事件

您可以将 Snowflake 配置为记录一个事件,该事件可提供有关任务执行状态的信息。事件记录在与任务相关联的 活动事件表 中。

例如,假设 已将事件表与数据库关联。该数据库中的任务执行时,Snowflake 会向该事件表记录一个事件。

您可以设置 有新数据时发出警报,以监控事件表。您可以将警报配置为在任务执行失败时 发送通知

以下部分介绍如何设置事件日志记录以捕获事件、如何设置警报,以及如何解释事件表中记录的事件:

备注

记录任务的事件会产生费用。请参阅 遥测数据收集成本

设置要捕获的事件的严重性级别

要设置将记录到事件表中的任务事件,请 设置您要在事件表中捕获的事件的严重性级别

  • 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 级事件,请执行:doc:ALTER TASK ...SET LOG_LEVEL </sql-reference/sql/alter-task>

    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,则此列包含错误消息。

语言: 中文