日志检索教程

最近更新时间:2022-12-15 18:19:58

我的收藏

操作场景

云函数 SCF 于2021年01月29日起进行日志服务升级,接入腾讯云日志服务 CLS,在此日期前创建的函数正在按地域逐渐进行迁移,详情可参见 云函数日志服务变更说明
云函数 SCF 向2021年01月29日之后的新增函数及迁移完成的函数默认提供两种日志查询方式:
控制台检索Serverless 控制台 内嵌日志服务 CLS 检索分析页面,支持关键词搜索,您可以在云函数控制台日志高级检索页面使用查询语法组合关键词进行检索。
API 检索:您可通过调用日志服务 CLS 搜索日志 接口查询函数调用日志。
注意
SCF 写入 CLS 的日志结构请参见 日志结构说明
若您的函数于2021年1月29日前创建且尚未进行迁移,如需使用更多日志分析功能,则请参见 日志投递配置(旧) 将函数调用日志投递到日志服务 CLS 使用。

控制台检索

参考以下步骤对函数使用日志高级检索功能:
1. 登录 Serverless 控制台,选择左侧导航栏中的函数服务
2. 在“函数服务”列表页面,选择需检索日志的函数名,进入函数详情页。
3. 选择日志查询 > 高级检索。在“高级检索”页中,您可使用关键词进行搜索,或使用查询语法组合关键词进行检索。语法规则详情可参见 日志检索语法与规则
4. 配置检索内容后,单击右侧的检索分析即可查询检索结果。

API 检索

下文介绍 CLS 搜索日志 API 与 SCF 相关参数如何获取和填充。

TopicId

TopicId 为函数日志投递的 CLS 日志主题 ID。获取 TopicId 操作步骤如下:
1. 登录 Serverless 控制台,选择左侧导航栏中的函数服务
2. 在“函数服务”列表页面,选择需检索日志的函数名,进入函数详情页。
3. 在“函数配置”页查看“日志配置”。如下图所示:

4. 单击日志主题对应的链接,跳转到日志服务控制台后,可以获取日志主题 ID。如下图所示:

说明
您也可以通过调用 获取函数详细信息 API 取 ClsTopicId 获取 Topicid

Query

注意
返回结果的各字段含义请参见 日志结构说明
SCF 调用日志为实时上报,如果请求存在但返回值为空,可能为函数尚未执行完成,该条日志没有上报到 CLS 导致,请在函数执行完成后重试检索。

获取某函数全部调用日志

以函数名称为 hello-scf,所在命名空间为 default 为例:
SCF_Namespace:"default" AND SCF_FunctionName:"hello-scf"

获取某个请求(RequestId)调用日志

以请求为 09c346d3-8417-49c5-8569-xxxxxxxxxxxx 为例:
SCF_RequestId:"09c346d3-8417-49c5-8569-xxxxxxxxxxxx"

获取某个请求(RequestId)的执行结果

执行结果包括请求开始时间、执行结果、执行耗时、内存消耗、日志等级,以请求为 09c346d3-8417-49c5-8569-xxxxxxxxxxxx 为例:
SCF_RequestId:"09c346d3-8417-49c5-8569-xxxxxxxxxxxx" AND SCF_Type:Platform AND SCF_Message:Report*

获取某个请求(RequestId)的返回值

以请求为 09c346d3-8417-49c5-8569-xxxxxxxxxxxx 为例:
SCF_RequestId:"09c346d3-8417-49c5-8569-xxxxxxxxxxxx" AND SCF_Type:Platform AND SCF_Message:Response*
注意
SCF 日志接入 CLS 后,依然为函数保留返回数据。返回数据将写入 CLS 的 SCF_Message 字段中,格式为 Response RequestId:xxx RetMsg:xxx
SCF_Message 的值长度限制为8KB,超出时将截取前8KB。

获取一段时间内函数的请求列表

以函数名称为 hello-scf,所在命名空间为 default,查询别名为 $DEFAULT,查询版本为1为例:
获取由于内部错误导致的失败请求列表:
SCF_Type:Platform AND SCF_Message:Report* | select SCF_RequestId as requestId, SCF_RetryNum as retryNum,SCF_StartTime as startTime where SCF_FunctionName='hello-scf' and SCF_Namespace='default' and SCF_Qualifier='1' and SCF_Alias:'$DEFAULT' and SCF_StatusCode = 500 order by startTime desc
获取执行时间超过3秒的请求列表:
SCF_Type:Platform AND SCF_Message:Report* | select SCF_RequestId as requestId, SCF_RetryNum as retryNum,SCF_StartTime as startTime where SCF_FunctionName='hello-scf' and SCF_Namespace='default' and SCF_Qualifier='1' and SCF_Alias:'$DEFAULT' and SCF_Duration>3000 order by startTime desc