工作区中笔记本的可观察性和日志记录

概述

Snowflake 将笔记本日志写入容器的本地文件系统,并将其引入到 事件表,您可以查询以排查笔记本运行故障、查看执行历史记录并执行长期分析。

您可以使用事件表来集中管理工作区中笔记本的操作数据;例如,对于以下任务:

  • 计划运行故障排除(错误、警告、时间戳)

  • 审计谁在何时执行了什么操作(由工作负载发出且已配置为收集时)

  • 为笔记本活动创建仪表板(成功/失败计数、运行持续时间、噪声错误)

备注

日志在事件表中显示之前,通常会有三到五分钟的延迟。

在笔记本代码中启用日志记录

默认情况下,Python 日志记录设置为 WARNING。要获取应用程序事件,必须将日志记录级别设置为 INFODEBUG

  • 将以下代码添加到 Python 笔记本或脚本中:

import logging

# Set the root logger to INFO level
logging.getLogger().setLevel(logging.INFO)

# Generate a test log entry
logging.info("APPLICATION_EVENT: Service initialization complete.")

使用 Snowflake Trail 查询日志

您可以通过 Snowflake Trail 在 Snowsight 中查看日志条目。

备注

在查看日志消息之前,您必须 启用遥测数据收集

确定事件表

  • 要查找账户的事件表,请在 SQL 文件中运行以下命令:

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;

查询和分析日志

事件表开始收集事件后,您可以像查询任何其他表一样对其进行查询,以按时间范围、严重性和工作负载标识符进行筛选。有关事件表架构和列定义的更多信息,请参阅 事件表列

  • 要调查最近的日志事件,请运行以下代码(将占位符值替换为实际值):

    SELECT
        TIMESTAMP,
        VALUE AS LOG_MESSAGE,
        RESOURCE_ATTRIBUTES:"snow.service.name"::string AS SERVICE_NAME,
        RECORD:"severity_text"::string AS SEVERITY
    FROM <database_name>.<schema_name>.<event_table_name>
    WHERE RECORD_TYPE = 'LOG'
      AND RESOURCE_ATTRIBUTES:"snow.service.name" = '<your_service_name>'
      AND TIMESTAMP > DATEADD(hour, -1, CURRENT_TIMESTAMP())
    ORDER BY TIMESTAMP DESC
    LIMIT 100;
    

在 Snowsight 中查看计划笔记本运行的日志

每个计划的笔记本都会使用一个笔记本项目对象,用于存储部署的代码、执行历史和工件。

在 Snowsight 中查看计划运行的日志:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Catalog » Database Explorer

  3. 包含该笔记本项目对象的数据库和架构。

  4. 选择笔记本项目对象,然后选择 Run history 选项卡。

  5. 对于要检查的运行,在 Logs 列,选择 Logs

在笔记本代码中启用日志记录后,自定义日志消息和基础设施初始化日志将显示在此日志视图中。

故障排除

  • 如果没有看到预期事件,请验证是否已创建事件表,以及是否已为账户和工作负载启用和配置事件日志记录。

  • 如果计划运行失败,请交叉检查 笔记本调度,并在同一时间窗口内的事件表中查找相关错误。