查看跟踪数据

您可以通过 Snowsight 查看跟踪数据或者通过查询存储跟踪数据的事件表,以查看跟踪数据。

备注

在开始使用跟踪数据之前,您必须 启用遥测数据收集

查看 Snowsight 中的跟踪条目

备注

对日志记录和跟踪的 Snowsight 支持是适用于所有账户的预览版功能。

您可以使用 Snowsight 查看事件表中捕获的跟踪数据。

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Monitoring » Traces and Logs

  3. Traces & Logs 页面中,您可以查看包含以下列的跟踪条目:

    描述

    日期

    条目记录时的日期。

    持续时间

    从跟踪开始到结束的时间长度。

    跟踪名称

    生成事件的可执行文件的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.executable.name 值。

    状态

    如果跟踪报告了错误,返回 Error;否则,返回 Success

    Span

    跟踪中的 span 数。

  4. Traces & Logs 页面中,您可以执行以下操作:

    • 要筛选显示的行,请使用页面顶部的下拉菜单。您可以根据以下特征进行筛选:

      • 记录条目的日期范围

      • 跟踪的状态,例如 SuccessError

      • 运行跟踪的数据库

    • 若要对行进行排序,请选择要对其进行排序的列名称。

  5. 若要在 Trace Details 页面中查看有关条目的更多详细信息,请选择条目的行。

  6. Traces Details 页面中,您可以查看 span 列表。

    span 对象包含跟踪事件。有关更多信息,请参阅 Snowflake 如何表示跟踪事件

    • 若要筛选显示的行,请使用页面顶部的下拉菜单。您可以按 Span Type 进行筛选:UDF、过程或 Streamlit。

    • 若要查看描述行中显示的数据的图例,请选择 Legend 下拉菜单,然后选择要查看的图例。

    • 若要查看有关条目的更多详细信息,请选择该条目的行。

      在此面板上,您可以查看存储在事件表中的更多信息。下表描述了面板中的值:

      详细信息选项卡

      详细信息

      描述

      跟踪 ID

      从查询发出的调用的唯一标识符。检索自 TRACE 列 trace_id 值。有关更多信息,请参阅 跟踪值

      Span ID

      与线程模型绑定的唯一标识符。检索自 TRACE 列 span_id 值。有关更多信息,请参阅 跟踪值

      范围

      发出事件的代码的命名空间。检索自 SCOPE 列

      持续时间

      从开始到结束的 span 持续时间。有关更多信息,请参阅 针对 SPAN RECORD_TYPE

      名称

      span 的名称。检索自 RECORD 列 name 值。

      父 span ID

      包含选定 span 的 span 的唯一 ID。

      状态代码

      span 的状态代码。检索自 RECORD 列 status 值。

      其他属性

      用户代码添加的属性和值。

      查询 ID

      启动跟踪的查询的 ID。检索自 :ref:` 列 RESOURCE_ATTRIBUTES<label-event_table_resource_attributes_execution_environment> snow.query.id 值。

      名称

      生成事件的可执行文件的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.executable.name 值。

      类型

      生成事件的可执行文件类型。检索自 RESOURCE_ATTRIBUTES 列 snow.executable.type 值。

      用户

      执行函数或过程的用户的名称。对于 Streamlit 应用程序,这是指在某一事件中查看该应用程序的用户的名称。检索自 RESOURCE_ATTRIBUTES 列 db.user 值。

      所有者

      具有可执行文件的 OWNERSHIP 权限的角色的名称。检索自 :ref:` 列 RESOURCE_ATTRIBUTES<label-event_table_resource_attributes_event_source> snow.owner.name 值。

      角色

      会话中主要角色的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.session.role.primary.name 值。

      仓库

      运行(生成事件的)查询的仓库的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.warehouse.name 值。

      数据库

      包含可执行文件的数据库的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.database.name 值。

      架构

      包含可执行文件的架构的名称。检索自 RESOURCE_ATTRIBUTES 列 snow.schema.name 值。

      Span 事件选项卡

      显示跟踪事件记录的数据。有关更多信息,请参阅 记录的事件数据

      相关指标选项卡

      显示图表说明 Snowpark Python 存储过程和 UDFs 所消耗的 CPU 和资源内存指标。针对特定查询且与 UDF 相关的指标。如果您从列表中选择 UDF span,则指标与同一查询的一个或多个 UDF span 相关。如果从列表中选择过程,您将看到单个 span 的过程指标。

      日志选项卡

      显示事件记录的值。检索自 VALUE 列

查询事件表以获得跟踪条目

事件表具有一组预定义的列,用于获取有关已记录消息的信息,包括:

  • span 开始时的时间戳。

  • 事件创建时的时间戳。

  • 记录的数据类型,例如数据是针对 span 还是 span 事件。

  • span 或事件的名称。

  • 与 span 或事件关联的属性(如果有)。

有关事件表列的参考信息,请参阅 事件表列

跟踪数据查询示例

以下部分使用示例数据说明如何查询事件表以获得跟踪数据。

收集的数据

下面示例中的输出显示了从事件表中选定的列子集中获取的内容,这些列子集是为使用 Python 编写的三个单独处理程序获取跟踪数据后生成的。

有关用于收集跟踪数据的事件表列的参考信息,请参阅 跟踪事件的数据

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP          | START_TIMESTAMP    | RESOURCE_ATTRIBUTES   | RECORD_TYPE | RECORD                                                                                                  | RECORD_ATTRIBUTES                                                           |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | 2023-04-20 0:45:49 | **See excerpt below** | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "digits_of_number", "status": { "code": "STATUS_CODE_UNSET" } } |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_init" }                                                                            |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_process" }                                                                         | { "input": "42" }                                                           |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 |                    |                       | SPAN_EVENT  | { "name": "test_udtf_end_partition" }                                                                   |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | 2023-04-20 0:46:00 |                       | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "times_two", "status": { "code": "STATUS_CODE_UNSET" } }        | { "example.func.times_two": "begin", "example.func.times_two.response": 8 } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 |                    |                       | SPAN_EVENT  | { "name": "event_without_attributes" }                                                                  |                                                                             |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 |                    |                       | SPAN_EVENT  | { "name": "event_with_attributes" }                                                                     | { "example.key1": "value1", "example.key2": "value2" }                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | 2023-04-20 0:46:08 |                       | SPAN        | { "kind": "SPAN_KIND_INTERNAL", "name": "do_tracing", "status": { "code": "STATUS_CODE_UNSET" } }       | { "example.proc.do_tracing": "begin" }                                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 |                    |                       | SPAN_EVENT  | { "name": "event_with_attributes" }                                                                     | { "example.key1": "value1", "example.key2": "value2" }                      |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

RESOURCE_ATTRIBUTES 摘录

以下 JSON 摘录包含三个处理程序中每个处理程序的 RESOURCE_ATTRIBUTES 列中包含的两个属性,这些处理程序的数据包含在前面的输出中。这些摘录后面的 SELECT 语句从这些属性中选择值。

RESOURCE_ATTRIBUTES 列包含有关事件来源的数据。有关参考信息,请参阅 RESOURCE_ATTRIBUTES 列

{
  ...
  "snow.executable.name": "DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER)",
  "snow.executable.type": "FUNCTION",
  ...
}

{
  ...
  "snow.executable.name": "TIMES_TWO(X NUMBER):NUMBER(38,0)",
  "snow.executable.type": "FUNCTION",
  ...
}

{
  ...
  "snow.executable.name": "DO_TRACING():VARIANT",
  "snow.executable.type": "PROCEDURE",
  ...
}
Copy

使用 SELECT 语句执行查询

在查询数据时,您可以使用 括号表示法 选择列中的属性值,如下表所示:

COLUMN_NAME['attribute_name']
Copy

下面示例中的代码查询上表,目的是隔离与 DIGITS_OF_NUMBER 函数相关的数据。

SET EVENT_TABLE_NAME='my_db.public.my_events';

SELECT
  TIMESTAMP as time,
  RESOURCE_ATTRIBUTES['snow.executable.name'] as handler_name,
  RESOURCE_ATTRIBUTES['snow.executable.type'] as handler_type,
  RECORD['name'] as event_name,
  RECORD_ATTRIBUTES as attributes
FROM
  IDENTIFIER($event_table_name)
WHERE
  RECORD_TYPE = 'SPAN_EVENT'
  AND HANDLER_NAME LIKE 'DIGITS_OF_NUMBER%';
Copy

查询结果

以下示例中的输出说明了查询的结果。

-------------------------------------------------------------------------------------------------------------------------------------------
| TIME               | HANDLER_NAME                                          | HANDLER_TYPE | EVENT_NAME              | ATTRIBUTES        |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_init          |                   |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_process       | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION     | test_udtf_end_partition |                   |
-------------------------------------------------------------------------------------------------------------------------------------------
语言: 中文