为应用程序启用日志记录和事件共享¶
本主题介绍如何启用日志记录和事件共享以排除应用程序故障。日志记录和跟踪事件允许您在应用程序遇到任何错误时获得性能和诊断信息。然后与应用程序提供商进行共享。
以使用者身份启用日志记录和事件共享的工作流程¶
作为使用者,您可以通过执行以下操作为应用程序启用日志记录和事件共享:
启用日志记录和事件共享的注意事项¶
在为应用程序启用日志记录和事件共享之前,必须考虑以下几点:
要使用此功能,您需在账户中 设置事件表。
启用事件共享 后,系统将在指定提供商账户的事件表中自动获取日志和跟踪事件的已脱敏和已编辑副本。
Snowflake 不向您收取启用事件共享的相关费用。但是,您应承担事件表中日志和事件引入与存储的费用。
与提供商共享事件后,您无法撤消对共享日志和跟踪事件的访问权限。
您无法使用事件共享来共享历史事件。
您无法共享事件的子集或应用筛选器。
Snowflake 会将共享事件发送到与您的账户位于同一区域的指定提供商账户。此功能不会跨不同区域共享数据。
您无法更改应用程序的日志记录或跟踪级别,因为这些级别是由提供商设置的。
Snowflake 建议在启用事件共享之前查看事件表中的日志和事件。
如果您不需要对应用程序进行故障排除,Snowflake 建议禁用日志记录和事件共享。
设置事件表¶
Native Apps Framework 需要一个事件表来存储由应用程序中的函数和存储过程生成的日志消息和跟踪事件。
备注
如果在安装应用程序之前没有设置事件表并将其设为活动表,则日志和事件数据将被丢弃。
一个账户可以有多个事件表,但一次只能将其中一个设置为 Snowflake 账户的活动事件表。如果没有活动事件表,则无法获取应用程序生成的日志消息和跟踪事件。即使应用程序中的函数和程序调用了日志记录和跟踪事件 APIs,也是如此。
使用 CREATE EVENT TABLE 命令创建事件表,如以下示例所示:
CREATE EVENT TABLE event_db.event_schema.my_event_table;
创建事件表后,使用 `ALTER ACCOUNT `_ 命令将事件表指定为账户的活动表:
ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
在事件表中查看事件¶
提供商和使用者都可以在事件表中查询,以查看已存储的事件。可使用 SELECT 命令从事件表中查询日志和跟踪事件,例如:
SELECT * FROM event_db.event_schema.my_event_table;
查看应用程序的日志记录和跟踪事件级别¶
作为使用者,您无法更改应用程序的日志级别。但是,在为应用程序启用日志记录之前,Snowflake 建议验证日志级别,以了解要与提供商共享的信息类型。
要查看已安装应用程序的日志记录级别,请运行以下命令:
DESC APPLICATION HelloSnowflake;
此命令显示有关 HelloSnowflake
应用程序的信息,包括 log_level
和 trace_level
的值。
为应用程序启用日志记录和事件共享¶
要与提供商共享日志和事件信息,必须为应用程序启用事件共享。
必须满足以下先决条件,才能为应用程序实例启用事件共享:
使用具有 MANAGE EVENT SHARING 全局权限的角色。ACCOUNTADMIN 角色默认具有此权限,也可以将此权限授予其他角色。
使用 Snowsight 启用日志记录和事件共享¶
提供商可以包括一个 Streamlit 应用程序,以显示一个允许使用者在其账户中启用日志记录和事件共享的对话框 Snowsight。要使用 Snowsight 启用日志记录和事件共享,需要满足以下要求:
已经配置了事件表。有关更多信息,请参阅 设置事件表。
您必须使用已被授予 MANAGE EVENT SHARING 权限的角色。
要为应用程序启用事件共享,请执行以下步骤:
登录 Snowsight。
在导航菜单中,选择 Data Products » Apps。
选择应用程序。
选择工具栏中的 Security 图标。
选择 Telemetry 选项卡。
使用滑块为应用程序启用事件共享。
如果当前未选择任何事件表,请从列表中选择事件表。
小心
请小心地在 Snowsight 中更改事件表。每个 Snowflake 账户对账户内生成的所有事件使用一个事件表。更改事件表会导致账户中生成的所有事件都存储在新位置。
使用 SQL 启用日志记录和事件共享¶
要为应用程序启用事件共享,请运行 ALTER APPLICATION 命令,以将 SHARE_EVENTS_WITH_PROVIDER 设置为 TRUE
。例如:
ALTER APPLICATION HelloSnowflake SET SHARE_EVENTS_WITH_PROVIDER = TRUE;
要显示应用程序的事件共享状态,请使用 DESC APPLICATION 命令,如下例所示:
DESC APPLICATION HelloSnowflake;
SHARE_EVENTS_WITH_PROVIDER
显示应用程序的事件共享状态。