Snowsight 中的警报

您可以在 Snowsight 中,为 Snowflake 功能设置 警报。此用户界面简化了您监控 Snowflake 账户的方式。

无需执行 SQL 语句来创建和管理警报,您可以使用 Snowsight 中的向导创建、管理和监控警报。

Snowsight 中的警报管理功能具有以下优势:

  • 警报的集中可见性: 在 Snowflake Alerts Center,您可以查看所有警报、这些警报的历史记录以及这些警报的执行状态。

  • 用于创建警报的模板: 您可以使用 Snowflake Alerts UI 中提供的警报模板,快速为以下功能创建警报。注意:通过模板生成警报后,它就等同于生命周期管理方面的任何其他警报,并且不包含任何特殊属性

  • 主动监控 Snowflake 功能: 您可以轻松配置故障、延迟或数据异常通知,以确保您的管道和预算保持健康状态。

先决条件

使用 Snowsight 创建、监控和管理警报之前,您必须满足以下先决条件:

任务警报的先决条件

如果您计划创建、管理和监控与 任务 相关的警报,则必须执行以下操作:

  • 设置要为任务事件获取的已记录消息的严重性级别。

    任务警报会监控记录到事件表中的错误消息。您必须至少将要监控的任务的 LOG_LEVEL 参数设置为 ERROR。您可以对以下某种类型的对象设置此参数:

    • 要将账户中所有对象(包括任务)的严重性级别设置为 ERROR,请执行 ALTER ACCOUNT SET LOG_LEVEL

      ALTER ACCOUNT SET LOG_LEVEL = ERROR;
      

      备注

      此设置还会影响 UDFs、存储过程和动态表记录的消息。

    • 要将包含任务的数据库中所有对象的严重性级别设置为 ERROR,请执行:doc:ALTER DATABASE ... SET LOG_LEVEL </sql-reference/sql/alter-database>

      ALTER DATABASE my_task_db SET LOG_LEVEL = ERROR;
      

      备注

      此设置还会影响该数据库中 UDFs、存储过程和动态表记录的消息。

    • 要将特定任务的严重性级别设置为 ERROR,请执行:doc:ALTER TASK ... SET LOG_LEVEL </sql-reference/sql/alter-task>

      ALTER TASK my_task SET LOG_LEVEL = ERROR;
      
  • 验证您计划用于访问 Snowsight 的角色获授的权限。

    该角色必须获授相关权限,才能查询 ACCOUNT_USAGE 模式中的 TASK_HISTORY 视图 和:doc:/sql-reference/account-usage/query_history

    有关信息,请参阅 允许其他角色使用 SNOWFLAKE 数据库中的架构

Openflow 警报的先决条件

Openflow 警报监控记录到事件表中的事件。确保 Openflow 已配置为记录事件。有关信息,请参阅以下章节:

  • :ref:`label-openflow_event_table`(如果您使用的是 Openflow BYOC)

  • :ref:`label-openflow_spcs_event_table`(如果您使用的是 Openflow Snowflake)

数据质量警报的先决条件

确保数据指标函数 (DMF) 已注册,并针对您要监控的表和视图运行。

有关信息,请参阅 使用 SQL 设置数据指标函数

设置警报通知

在 Snowsight 中创建警报时,您可以将警报配置为通过电子邮件或 Webhook 发送通知。

要发送通知,您必须使用通知集成。您可以使用现有的通知集成,也可以创建新的通知集成:

在 Snowsight 中创建用于访问警报的角色

要允许账户管理员以外的用户在 Snowsight 中访问警报,您可以创建一个已获授以下权限的自定义角色:创建、管理和监控警报所需的所有权限。您可以将此角色授予需要在 Snowsight 中使用警报的用户和其他角色。

例如,假设您要创建一个名为 my_alert_center_role 的角色实现此目的。要创建此角色,请完成以下步骤:

  1. 切换到允许创建自定义角色的角色(例如,ACCOUNTADMIN 角色):

    USE ROLE ACCOUNTADMIN;
    
  2. 创建自定义角色:

    CREATE OR REPLACE ROLE my_alert_center_role;
    
  3. 授予在 Snowsight 中访问警报时计划使用的虚拟仓库的 USAGE 权限。您必须授予此权限,因为某些功能需要活动的虚拟仓库。

    GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE my_alert_center_role;
    
  4. 向角色授予执行警报的权限:

    • 如果您计划创建使用特定虚拟仓库执行的警报,请向该角色授予以下权限:

      • 账户的 EXECUTE ALERT 权限

      • 要用于警报的虚拟仓库的 USAGE 权限

      例如:

      GRANT EXECUTE ALERT ON ACCOUNT TO ROLE my_alert_center_role;
      GRANT USAGE ON WAREHOUSE my_warehouse TO ROLE my_alert_center_role;
      
    • 如果您计划创建无服务器警报,请授予账户的 EXECUTE MANAGED ALERT 权限:

      GRANT EXECUTE MANAGED ALERT ON ACCOUNT TO ROLE my_alert_center_role;
      
  5. 授予 在数据库和模式中创建警报所需的权限

    例如,如果您计划在名为 my_alerts_database 的数据库和名为 my_alert_schema 的模式中创建警报,请授予该数据库和模式的 USAGE 权限,并授予模式的 CREATE ALERT 权限:

    GRANT USAGE ON DATABASE my_alerts_database TO ROLE my_alert_center_role;
    GRANT USAGE ON SCHEMA my_alerts_schema TO ROLE my_alert_center_role;
    GRANT CREATE ALERT ON SCHEMA my_alerts_schema TO ROLE my_alert_center_role;
    
  6. 授予您之前设置的 电子邮件通知集成 的 USAGE 权限:

    GRANT USAGE ON INTEGRATION my_email_int TO ROLE my_alert_center_role;
    
  7. 授予 允许访问默认事件表 的应用程序角色:

    GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_alert_center_role;
    
  8. 如果您计划为数据质量监控设置警报,请授予监控数据质量和执行数据指标函数所需的应用程序角色和权限:

    GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE my_alert_center_role;
    GRANT EXECUTE DATA METRIC FUNCTION ON ACCOUNT TO ROLE my_alert_center_role;
    
  9. 将自定义角色授予用户或其他角色:

    GRANT ROLE my_alert_center_role TO USER my_user;
    GRANT ROLE my_alert_center_role TO ROLE my_other_role;
    

在 Snowsight 中访问警报

要在 Snowsight 中访问警报,请执行以下操作:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Monitoring » Alerts

您可以查看现有警报的列表,并按警报名称和状态筛选警报。您还可以查看最近执行的警报的状态。

创建新警报

您可以使用提供的模板之一创建新警报。要创建警报,请完成以下步骤:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Monitoring » Alerts,然后选择 + Alert

  3. Name 字段中,输入警报的名称。

  4. Description 字段中,描述警报的目的。

  5. Location 菜单中,选择要在其中创建警报的数据库和模式。

  6. Compute Type 菜单中,选择以下选项之一:

  7. 如果要在创建警报后将其激活,请选择 Activate alert upon creation

    如果您不选择此选项,新创建的警报将处于暂停状态。您必须恢复警报,才能使警报处于活动状态。

  8. 选择 Next

  9. Select warehouse 菜单中,选择要用于警报的虚拟仓库。

  10. Alert template 菜单中,为 Snowflake 功能选择一个模板组,然后选择要用于创建警报的模板。

    下表列出了您可以选择的模板组和模板。

    模板组

    模板

    描述

    DATA_QUALITY

    Anomaly detection alert

    监控 在数据质量指标中检测到的异常,从而当发现异常模式或异常值时触发警报。

    Expectation violations alert

    监控 数据质量预期违规情况,从而当违反定义的预期时触发警报。

    OPENFLOW

    High CPU alert

    监控 Openflow 运行时 Pod 是否持续处于高 CPU 使用率 (>90%),这可能表明潜在性能下降。

    Connector backpressure (object count)

    监控连接器队列计数,以确定其是否超过了反压阈值,这可能表明下游系统无法跟上数据流速率。

    Connector backpressure (bytes)

    监控连接器排队字节,以确定其是否超过了反压阈值,这可能表明数据管道中存在内存压力。

    High queued bytes alert

    监控连接器队列字节,以确定其是否接近反压阈值 (>80%),这可以在反压发生之前提供早期警告。

    High queued count alert

    监控连接器队列对象计数,以确定其是否接近反压阈值 (>80%),这可以在反压发生之前提供早期警告。

    No data alert

    监控具有活动处理时间但未接收或发送任何数据的连接器,这可能表明潜在数据流问题。

    Runtime high error rate alert

    监控 Openflow 运行时处理器是否存在大量 ERROR 级日志,这可能表明处理失败。

    Table replication failure alert

    监控表复制过渡到 FAILED 状态,这可能表明重大数据同步问题。

    TASKS

    Error rate alert

    当累积任务错误率超过指定阈值时触发警报。

  11. 填写警报的配置字段。这些字段取决于您选择的模板。

  12. 选择要监控的范围。范围决定了警报的监控对象。例如,要监控账户中的所有对象,请从 Scope 菜单中选择 Account

  13. Schedule 菜单中,选择要用于运行警报的计划类型:

    • 要仅在添加新对象(例如,新行插入到您正在监控的表中)时运行警报,请选择 When new events are detected

    • 要定期运行警报,并选择执行警报的频率(例如,每 10 分钟一次),请选择 On a schedule

  14. Notification integration 菜单中,选择 您之前创建的通知集成。您可以使用电子邮件集成或 Webhook 集成

  15. 如果您选择了电子邮件集成,请从 Email recipients 菜单中,选择触发警报时要通知的人员的电子邮件地址。

  16. 选择 Create

备注

  • 模板向导会生成用于创建警报的 SQL 语句。如果需要进一步自定义警报,可以直接修改这些语句。

  • 仅当您当前的角色拥有警报的 MONITOR 或 OWNERSHIP 权限时,警报才可见。

查看警报的详细信息

要查看特定警报的详细信息,请在警报列表中选择该警报所在的行。Snowsight 会打开警报详细信息页面,其中显示以下信息:

  • 近期执行历史记录:警报近期执行情况表,包括完成时间、状态(例如 TriggeredCondition not met)、运行的条件和操作 SQL,以及相应的查询 IDs。您可以按时间范围和状态进行筛选,并加载其他执行。

  • 描述:向 Clean Room 提供商发送请求,要求他们批准自定义模板,以便将其添加到 Clean Room。设置的警报注释或描述。

  • 详细信息:有关警报的元数据,包括警报名称、状态(已启动或已暂停)、所有者角色、数据库、模式、虚拟仓库和计划。

  • 条件:表示警报条件的 SQL 语句。此为警报的 IF(EXISTS(...)) 块。

  • 操作:满足条件时,警报执行的 SQL 语句。此为警报的 THEN 块。

监控警报执行情况

在警报详细信息页面上的近期执行历史记录表中,Status 列显示每次执行的状态。可能的状态包括:

  • Triggered:选择使用 时默认使用的角色和仓库。条件评估结果为 TRUE 且执行了操作。

  • Condition not met:选择使用 时默认使用的角色和仓库。条件评估结果为 FALSE 且没有执行操作。

有关可能状态及其含义的完整列表,请参阅 ALERT_HISTORY 中的 STATE 列。

要调查失败的执行,请查看 Condition query IDAction query ID 列。您可以使用这些查询 IDs,在 ALERT_HISTORY 中查找执行的 SQL_ERROR_CODE 和 SQL_ERROR_MESSAGE,其中提供了具体的错误代码和错误原因描述。

编辑警报

要在警报详细信息页面中编辑警报,请选择右上角的 工作表的更多操作 并选择 Edit。Snowsight 会打开包含两个选项卡的编辑对话框:GeneralConfig

编辑一般警报属性

General 选项卡中,您可以修改警报的以下属性:

  • Name:警报的名称。对于现有警报,此字段处于只读状态。

  • Comment:警报监控对象的描述。这会映射到 ALTER ALERT 中的 COMMENT 属性。

  • Compute Type:警报使用 无服务器 计算模型还是 指定的虚拟仓库。如果您选择 Warehouse,请从 Warehouse 菜单中选择虚拟仓库。

  • Schedule:警报运行的频率。选择 On a schedule 并设置频率(例如,每 30 分钟一次)。

选择 Save 应用更改。

编辑警报的配置

Config 选项卡中,您可以编辑警报的 配置 (CONFIG)。利用模板创建警报时,模板会设置一项配置,其中包含警报的可调参数(例如,阈值、通知目标和监控范围)。警报的条件和操作 SQL 会在运行时通过 SYSTEM$GET_ALERT_CONFIG 读取这些值。

通过编辑配置,您可以更改警报的业务逻辑,而无需修改底层 SQL 语句。

根据配置结构,Snowsight 会显示两种编辑体验之一。

编辑模板配置

如果警报是通过模板创建的,并且配置保留了模板所需的结构,Snowsight 会显示内容丰富的编辑表单。配置中的每个字段都显示有人类可读的标签和预期值的描述。具体字段取决于模板,但常见示例包括:

  • 触发警报的 阈值 值(例如,介于 0.0 和 1.0 之间的错误率)。

  • 通知方法,例如 EMAIL 或 WEBHOOK,以及集成和收件人的相关字段。

  • 范围,用于控制警报监控的对象(例如,ACCOUNT、DATABASE 或 SCHEMA),提供可进一步缩小范围的可选筛选器。

当您更改这些字段并选择 Save 时,Snowsight 会更新警报的 CONFIG JSON。然后,警报的条件和操作 SQL 会在下次警报运行时使用新值。

编辑扁平键值配置

如果配置与模板所需的结构不匹配(例如,如果您通过 SQL 修改了 CONFIG 并更改了其模式),Snowsight 会回退到扁平键值编辑器。

在此视图中,配置显示为键值对列表。您可以在两种模式之间切换:

  • Key-value:选择使用 时默认使用的角色和仓库。单独编辑每个键值对。

  • JSON:选择使用 时默认使用的角色和仓库。直接查看并编辑原始 JSON 配置。

小心

配置值会影响警报的条件和操作逻辑,但它们并非受管参数,与 Snowflake 之间不存在深度契约关系。CONFIG 是警报的 SQL 在运行时读取的 JSON 字符串,而模板的 SQL 负责解读这些值。

更改配置值会更改警报 SQL 的运行时行为。不正确的值(例如,阈值的非数字值或无效的电子邮件地址)可能会导致警报出现故障或产生意外结果。在修改配置值之前,请查看模板的文档或警报的 SQL。

如需详细了解 CONFIG 参数在 SQL 级别的运作方式,请参阅 将配置传递给警报