帮你快速理解、总结文档立即下载

如何使用日志分析检索语句

最近更新时间:2026-08-19 15:45:04
本文档已由 AI 辅助审校
我的收藏
日志分析支持通过控制台可视化界面或检索语句对日志数据进行过滤与统计。本文介绍检索语句的语法结构、支持的筛选项,以及在语句模式下拼接 SQL 完成统计分析的方法。

筛选条件类型

日志分析的筛选条件分为三类:
1. 日志源(必选):选择日志类型(七层访问日志或托管规则日志)与数据可用区。
2. 时间范围(必选):查看所选的时间范围内的数据,详情请参见 如何修改日志分析查询时间范围
3. 其他筛选条件:按支持的筛选项自定义过滤。不同日志类型支持的筛选项不同,详情请参见 支持的筛选项

检索模式与结果呈现

检索栏提供两种模式,通过检索栏左侧的模式切换控件切换。
模式
说明
交互模式
通过选择筛选项、运算符、值逐个添加筛选条件。同组内条件以 AND 连接,不同组之间以 OR 连接。
从交互模式切换至语句模式时,已添加的筛选条件会转写为检索语句并填入输入框,条件不丢失。
语句模式
以检索语句书写筛选条件,并可通过管道符 | 拼接 SQL 进行统计分析。
执行检索后,页面会根据检索语句内容展示不同结果:
检索语句不含 SQL 时,默认展示「原始日志」页。
检索语句包含 SQL 时,执行后将停留在「统计结果」页并渲染统计表格;表格上方提供结果下载入口。「原始日志」页将同时展示命中筛选条件的日志数据,可自由切换。




检索语句结构

一条完整的检索语句由筛选条件与 SQL 统计语句两部分组成,以管道符 | 拼接:
[筛选条件] | [SQL]
筛选条件:对原始日志做行级过滤,语法见下文 筛选条件语法
SQL:对筛选后的结果做聚合统计,语法见下文 SQL 统计语法。SQL 部分可省略,省略时仅返回命中的原始日志。

筛选条件语法

表达式结构

日志分析筛选条件表达式由筛选项运算符三部分构成​​,其格式如下图所示:



筛选项:${…} 形式的内置日志字段,例如 ${RequestHost}${EdgeResponseStatusCode}
运算符:判断筛选项与值之间的关系,例如 in>
值:字符串、数字或列表。字符串值需以单引号标注并置于方括号内,例如['POST'];数字值可直接书写,例如 >500
多个筛选条件之间的关系:多个筛选条件之间采用“且”关系,同一筛选条件包含多个值时,多个值之间采用“或”关系。例如,${ClientRegion} in ['SG','TH'] AND ${EdgeResponseStatusCode} in [404] 表示检索同时满足以下条件的日志数据:客户端国家/地区为新加坡或泰国,且边缘响应状态码为 404。

运算符

逻辑运算符

多个筛选条件可通过逻辑运算符组合:
运算符
说明
AND
左右两侧筛选条件均成立时才命中
OR
左右两侧筛选条件任一成立即命中
NOT
对右侧筛选条件取反
运算符优先级为 NOT > AND > OR。逻辑运算符大小写不敏感,and 与 AND 等价。

匹配运算符

名称
运算符
说明
示例
等于
in
筛选项取值在给定列表内
${RequestHost} in ['example.com', 'demo.com']
不等于
not ${…} in
筛选项取值不在给定列表内
not ${RequestMethod} in ['GET']
大于
>
筛选项数值大于给定值
${EdgeResponseTime} > 500
各字段支持的匹配运算符请参见 支持的筛选项

SQL 统计语法

在筛选条件后以管道符 | 拼接 SQL 语句,可对命中筛选条件的日志做聚合统计。SQL 采用 MySQL 风格语法,遵循以下约定:
日志字段需使用双引号引用,例如 "ClientIP"
无需编写 FROM 子句,统计对象为管道符左侧筛选后的日志数据。
统计 Top 100 客户端 IP 的请求量 为例,一条 SQL 可逐步搭建:
select "ClientIP", count(*) as cnt:选出客户端 IP 及其日志条数,count(*) 统计条数,as cnt 为结果列命名。
group by "ClientIP":按客户端 IP 分组,分别统计每个 IP 的条数。
order by cnt desc:按条数降序排序。
limit 100:只返回前 100 行。
拼接后的完整检索语句为:
${RequestHost} in ['example.com'] | select "ClientIP", count(*) as cnt group by "ClientIP" order by cnt desc limit 100

检索语句示例

1. 筛选指定域名下响应耗时大于 500ms 的请求:
${RequestHost} in ['example.com'] and ${EdgeResponseTime} > 500
2. 筛选指定域名下状态码为 404 或 500 的请求:
${RequestHost} in ['example.com'] and ${EdgeResponseStatusCode} in ['404', '500']
3. 在七层访问日志中,筛选触发指定规则且处置方式为拦截或观察的请求:
${SecurityRuleID} in ['2123456789'] and ${SecurityAction} in ['Deny', 'Monitor']
4. 在托管规则日志中,筛选请求路径命中托管规则且最终被拦截的请求:
${SecurityMatchingPosition} in ['Full request path'] and ${SecurityAction} in ['drop']
5. 统计指定域名下各状态码的请求数,按条数降序排列:
${RequestHost} in ['example.com'] | select "EdgeResponseStatusCode", count(*) as cnt group by "EdgeResponseStatusCode" order by cnt desc
6. 统计指定域名下访问量 Top 100 的客户端 IP 及其占比:
${RequestHost} in ['example.com'] | select "ClientIP", count(*) as cnt, round(count(*)*100.0/(select count(*)), 2) as pct group by "ClientIP" order by cnt desc limit 100
7. 统计指定域名下平均响应耗时与最大响应耗时:
${RequestHost} in ['example.com'] | select avg("EdgeResponseTime") as avg_time, max("EdgeResponseTime") as max_tim

支持筛选项

七层访问日志

日志类型为「七层访问日志」时,支持以下筛选条件。各字段的详细说明与取值请参见 七层访问日志

通用字段

筛选项名称
日志字段名称
数据类型
运算符
日志时间
LogTime
等于
请求 ID
RequestID
String
等于,不等于
内容标识符
ContentID
String
等于,不等于
请求完成时间
EdgeEndTime
等于,大于
边缘函数子请求
EdgeFunctionSubrequest
Integer
等于,不等于
边缘函数父请求 ID
ParentRequestID
String
等于,不等于

请求信息

筛选项名称
日志字段名称
数据类型
运算符
请求域名
RequestHost
String
等于
请求方式
RequestMethod
String
等于,不等于
请求时间
RequestTime
等于
请求 URL
RequestUrl
String
等于,不等于
请求 URL 参数
RequestUrlQueryString
String
等于,不等于
Referer
RequestReferer
String
等于,不等于
User-Agent
RequestUA
String
等于,不等于
HTTP 协议
RequestProtocol
String
等于,不等于
HTTP/HTTPS
RequestScheme
String
等于,不等于
TLS 版本
RequestSSLProtocol
String
等于,不等于
请求状态
RequestStatus
String
等于,不等于
请求范围
RequestRange
String
等于
请求长度(字节)
RequestBytes
Integer
等于,大于
请求正文长度(字节)
RequestBodyBytes
Integer
等于,大于
边缘节点端口
RemotePort
Integer
等于,不等于

客户端信息

筛选项名称
日志字段名称
数据类型
运算符
客户端 IP
ClientIP
String
等于,不等于
客户端国家/地区
ClientRegion
String
等于,不等于
客户端行政区(中国大陆)
ClientState
String
等于,不等于
客户端运营商
ClientISP
String
等于,不等于
设备类型
ClientDeviceType
String
等于,不等于
客户端端口
ClientPort
Integer
等于,不等于
客户端连接 ID
ClientConnectionID
String
等于,不等于

响应信息

筛选项名称
日志字段名称
数据类型
运算符
缓存状态
EdgeCacheStatus
String
等于,不等于
响应状态码
EdgeResponseStatusCode
Integer
等于,不等于
响应总长度(字节)
EdgeResponseBytes
Integer
等于,大于
响应正文长度(字节)
EdgeResponseBodyBytes
Integer
等于,大于
内部处理耗时(毫秒)
EdgeInternalTime
Integer
等于,大于
响应整体耗时(毫秒)
EdgeResponseTime
Integer
等于,大于

边缘服务端信息

筛选项名称
日志字段名称
数据类型
运算符
边缘服务器 ID
EdgeServerID
String
等于,不等于
边缘服务器 IP
EdgeServerIP
String
等于,不等于
边缘节点国家/地区
EdgeServerRegion
String
等于,不等于
边缘节点行政区(中国大陆)
EdgeServerRegionTopDivision
String
等于,不等于
边缘异常信息
EdgeException
String
等于,不等于

源站信息

筛选项名称
日志字段名称
数据类型
运算符
回源解析耗时(毫秒)
OriginDNSResponseDuration
Double
等于,大于
源站 IP
OriginIP
String
等于,不等于
回源请求头耗时(毫秒)
OriginRequestHeaderSendDuration
Double
等于,大于
回源响应头等待耗时(毫秒)
OriginResponseHeaderDuration
Double
等于,大于
源站响应状态码
OriginResponseStatusCode
Integer
等于,不等于
回源 TLS 版本
OriginSSLProtocol
String
等于,不等于
回源 TCP 握手耗时(毫秒)
OriginTCPHandshakeDuration
Double
等于,大于
回源 TLS 握手耗时(毫秒)
OriginTLSHandshakeDuration
Double
等于,大于

安全防护信息

筛选项名称
日志字段名称
数据类型
运算符
处置方式
SecurityAction
String
等于,不等于
规则 ID
SecurityRuleID
String
等于,不等于
规则类别
SecurityModule
String
等于,不等于
Bot 智能分析特征
BotCharacteristic
String
等于,不等于
网络攻击风险等级
BotClassAttacker
String
等于,不等于
恶意 Bot 风险等级
BotClassMaliciousBot
String
等于,不等于
网络代理风险等级
BotClassProxy
String
等于,不等于
扫描器风险等级
BotClassScanner
String
等于,不等于
账号接管攻击风险等级
BotClassAccountTakeOver
String
等于,不等于
Bot 标签
BotTag
String
等于,不等于
请求 JA3 指纹
JA3Hash
String
等于,不等于

托管规则日志

日志类型为「托管规则日志」时,支持以下筛选条件。各字段的详细说明与取值请参见 托管规则日志

请求信息

筛选项名称
日志字段名称
数据类型
运算符
站点
RequestHost
String
等于,不等于
请求 ID
RequestID
String
等于,不等于
请求时间
RequestTime
等于
请求方式
RequestMethod
String
等于,不等于
User-Agent
RequestUA
String
等于,不等于
请求 URI
RequestURI
String
等于,不等于
请求正文(前 10 KB)
RequestBody
String
等于,不等于

客户端信息

筛选项名称
日志字段名称
数据类型
运算符
客户端 IP
ClientIP
String
等于,不等于
客户端国家/地区
ClientCountry
String
等于,不等于

安全防护信息

筛选项名称
日志字段名称
数据类型
运算符
规则 ID
SecurityRuleID
String
等于,不等于
规则类别
SecurityModule
String
等于,不等于
处置方式
SecurityAction
String
等于,不等于
匹配字段
SecurityMatchingField
String
等于,不等于
匹配位置
SecurityMatchingPosition
String
等于,不等于