日志服务扫描(Scan)功能支持免配置索引进行目标字段的扫描,用于查询和分析相关日志。扫描功能包含扫描查询和扫描分析,本文介绍扫描功能的相关操作和示例。
前提条件
操作步骤
登录日志服务控制台。
在Project列表区域,单击目标Project。
在页签中,单击目标Logstore。
在输入框中,输入扫描语句。
扫描语句格式为
查询语句 | SPL语句或查询语句 | set session mode=scan; 分析语句(标准SQL)。在页面右上方设置扫描的时间范围。
您可以设置相对时间、整点时间和自定义时间。 此处设置的扫描时间最小粒度为分钟。
自动扫描
自动扫描和翻页功能仅适用于扫描查询操作。
执行一次扫描查询操作后,如果提示本次未扫描得到结果,您可以单击
图标,使系统自动扫描查询日志,直到返回符合扫描条件的日志或扫描次数达到20次。
在自动扫描对话框中,将展示自动扫描的进展。
每条扫描记录包含扫描次序、当前扫描结果数、扫描进度百分比、处理时间戳及扫描状态(如扫描完成, 无结果)。
翻页说明
当您执行一次翻页操作时,日志服务会对应执行一次扫描查询操作,用于保证扫描结果的连续性。
每次默认最多扫描100,000条日志,在翻页过程中,可能出现某页中显示的日志数量少于每页显示对应的数量,但仍支持向后翻页。即表示当前查询的100,000条日志中,满足扫描条件的日志数量少于每页显示对应的数量。
例如日志总数为200,000条,每页支持显示20条,当您执行一次扫描操作后,只返回15条且向后翻页功能可用,此时说明前100,000条日志中只有15条日志满足扫描条件。您可以执行翻页操作,日志服务会自动在后100,000条日志中,执行第二次扫描操作,并返回符合条件的日志。
示例
通过扫描功能查询请求状态为成功的请求对应的日志。
扫描语句
* | where Status='Success'扫描结果
查询结果以 Scan 模式返回,扫描数据量 56.74 KiB,扫描进度 4.19%。直方图按时间展示日志分布,原始日志记录包含 AlertStatus(值为 inactive)、Condition(值为
Count:__count__ > 0; Condition:inflow > 27)等告警字段。
通过扫描功能查询一个文件在一个时间点对应的日志。
扫描语句
* | where file = 'file:Android' | where time ='[2024-04-24T10:07:27.427014479]'扫描结果
扫描模式下共扫描数据量 375.46 KiB,返回 2 条匹配日志,时间分别为 2024-04-24 10:38:13 和 2024-04-24 10:38:00,file 字段值为
/var/log/nginx/test.log。
通过扫描功能计算各个请求状态对应的请求数量。
扫描语句
说明扫描分析功能,需要在SQL前面加上
set session mode=scan;,表示使用扫描模式* | set session mode=scan; SELECT Status, count(*) AS PV GROUP BY Status扫描结果
扫描结果显示共扫描 470 行、数据量 1.29 MiB,查询结果表格中 Status 为 Success,PV 为 470。
API调用
您可以通过GetLogs接口使用扫描功能。更多信息,请参见查询日志库日志。
如果您要使用扫描功能,需要在query参数的分析语句中添加set session mode=scan;,表示开启扫描功能,例如* | set session mode=scan; select count(*) as pv。