边缘安全加速平台 EO 如何使用日志分析检索语句

日志分析支持通过控制台可视化界面或检索语句对日志数据进行过滤与统计。这里说明检索语句的语法结构、支持的筛选项,以及在语句模式下拼接 SQL 完成统计分析的方法。

相关产品
边缘安全加速平台 EO 产品页,含版本规格、价格与购买入口。

筛选条件类型

日志分析的筛选条件分为三类:

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 Timestamp ISO8601 等于
请求 ID RequestID String 等于,不等于
内容标识符 ContentID String 等于,不等于
请求完成时间 EdgeEndTime Timestamp ISO8601 等于,大于
边缘函数子请求 EdgeFunctionSubrequest Integer 等于,不等于
边缘函数父请求 ID ParentRequestID String 等于,不等于

六、请求信息

筛选项名称 日志字段名称 数据类型 运算符
请求域名 RequestHost String 等于
请求方式 RequestMethod String 等于,不等于
请求时间 RequestTime Timestamp ISO8601 等于
请求 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 Timestamp ISO8601 等于
请求方式 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 等于,不等于
赞 (0)
上一篇 4天前
下一篇 4天前