为网站域名开启WAF日志采集后,您可以使用日志查询功能对采集到的日志数据进行实时查询与分析,并基于查询与分析结果生成统计图表、创建告警等。
前提条件
查询和分析日志
操作查询和分析结果
WAF日志服务为您提供日志分布直方图、原始日志和统计图表形式的展示查询分析结果,并支持设置告警、快速查询等操作。
- 日志分布直方图
日志分布直方图主要展示查询到的日志在时间上的分布。
- 鼠标指向绿色数据块时,可以查看该数据块代表的时间范围和日志命中次数。
- 单击绿色数据块,可以查看更细时间粒度的日志分布,同时在原始日志页签中同步展示指定时间范围内的查询结果。
- 原始日志
您可以在原始日志页签中,查看日志查询结果。
- 快速分析
单击图标,选择显示Key或Key的别名,该别名可在创建索引时配置。例如host_name的别名为host,如果你选择显示别名,则在快速分析列表中显示host。说明 当某字段没有别名时,您选择显示别名,在快速分析列表中仍显示字段名(Key)。
更多信息,请参见快速分析。
- 查看日志详情
- 单击表格,查看表格形式的日志。
- 单击原始,查看原始形式的日志。
- 单击图标,复制日志。
- 单击图标,查看tag详情。
- 单击换行,关闭或开启换行显示日志。
- 单击时间,开启按时间顺序显示日志。
- 单击图标,可以将日志下载到本地计算机,支持直接下载、通过Cloud Shell下载、通过命令行工具下载等方式。更多信息,请参见下载日志。
- 单击图标,配置Tag设置、列设置、JSON设置、事件配置。
- 快速分析
- 统计图表
您可以在统计图表页签,查看可视化的查询分析结果。您必须在语句输入框中输入SQL92分析语句,才可以在统计图表页签查看对应的统计图表。
- 切换图表类型:选择不同的图表类型来查看分析结果。关于不同图表类型的介绍,请参见图表设置。
- 预览图表:切换图表类型后,查看图表预览效果。
单击添加到仪表盘,可以将当前图表添加到仪表盘。单击下载日志,可以将日志下载到本地计算机,支持直接下载、通过Cloud Shell下载、通过命令行工具下载等方式。具体操作,请参见下载日志。
- 修改统计图表配置
操作 说明 通用配置 对统计图表进行全局配置。例如选择颜色方案后,整个统计图表的颜色都基于该颜色方案进行展示。 字段配置 对单个查询分析的结果或单个查询分析结果中的单列数据进行个性化的可视化设置。例如选择某个查询分析后,再选择颜色方案,则该查询分析结果相关的图形颜色基于该颜色方案进行展示。 设置交互事件 对单个查询分析的结果或单个查询分析结果中的单列数据进行交互设置,加深数据分析的维度。
- 日志聚类
在日志聚类页签,单击开启日志聚类,可实现在采集日志时将相似度高的日志聚合。更多信息,请参见日志聚类。
创建告警
您可以基于当前查询与分析语句创建告警。创建告警后,日志服务将定期检查查询与分析结果,并在检查结果满足预设条件时,向您发送告警通知,实现实时的服务状态监控。
在查询分析页面上,选择设置告警。
,可为查询分析结果设置告警。更多信息,请参见查询与分析案例
- 以15分钟为步长,分析在整点时刻由不同WAF防护模块拦截的攻击请求的数量,展示时间(time)、WAF规则防护引擎拦截请求数(wafmodule)、IP黑名单及自定义防护策略(ACL访问控制)拦截请求数(aclmodule)、CC安全防护及自定义防护策略(CC攻击防护)拦截请求数(httpfloodmodule)。
* | SELECT time_series(__time__, '15m', '%H:%i', '0') as time, COUNT_if(final_plugin = 'waf') as "wafmodule", COUNT_if(final_plugin = 'acl') as "aclmodule", COUNT_if(final_plugin = 'cc') as "httpfloodmodule" GROUP by time ORDER by time
- 分析触发了WAF最终防护动作的防护模块类型(final_plugin)的分布情况,展示命中次数(times)、被请求域名(host)和最终防护模块(final_plugin)。
* | SELECT count(*) as times, host, final_plugin GROUP by host, final_plugin ORDER by times desc
- 以15分钟为步长,分析整点时刻的QPS,展示时间(time)和QPS(QPS)。
* | SELECT time_series(__time__, '15m', '%H:%i', '0') as time, count(*) / 900 as QPS GROUP by time ORDER by time
- 分析受CC攻击次数最多的域名,展示CC攻击拦截次数(times)和被访问域名(host)。
* and acl_action :block | SELECT count(*) as times, host GROUP by host ORDER by times desc
- 以秒为步长,分析网站请求日志的详情,展示时间(time)、被访问域名(host)、被访问路径(request_path)、请求方法(request_method)、WAF响应客户端请求的HTTP状态码(status)、源站响应WAF回源请求的HTTP状态码(upstream_status)、查询字符串(querystring)。
* | SELECT date_format(date_trunc('second', __time__), '%H:%i:%s') as time, host, request_path, request_method, status, upstream_status, querystring LIMIT 10
- 查询网站(your_domain_name)遭受的最近10条攻击请求记录,展示请求发起时间(time)、真实客户端IP(real_client_ip)和客户端类型(http_user_agent)。
matched_host: your_domain_name and final_action: block | SELECT time, real_client_ip, http_user_agent ORDER by time desc LIMIT 10
- 分析网站(your_domain_name)遭受的攻击请求被WAF拦截后经过的天数(days_passed,保留1位小数)。
matched_host: your_domain_name and final_action: block | SELECT time, round((to_unixtime(now())-__time__) / 86400, 1) as "days_passed", real_client_ip, http_user_agent ORDER by time desc LIMIT 10
- 分析网站(your_domain_name)遭受的攻击请求次数按天的变化趋势。
date_trunc函数用于对当前时间进行按天对齐分组。关于该函数的更多信息,请参见日期和时间函数。matched_host: your_domain_name and final_action: block | SELECT date_trunc('day', __time__) as dt, count(1) as PV GROUP by dt ORDER by dt
- 分析网站(your_domain_name)遭受的攻击请求的来源国家(country)分布。
WAF日志中matched_host: your_domain_name and final_action: block | SELECT ip_to_country( if(real_client_ip = '-', remote_addr, real_client_ip) ) as country, count(1) as "攻击次数" GROUP by country
real_client_ip
字段表示真实客户端IP。如果由于用户通过代理服务器访问或请求头中IP字段有误等原因无法获取真实客户端IP(real_client_ip
取值为-
),也可以直接使用remote_addr
字段(表示直连客户端IP)作为真实客户端IP。 - 分析网站(your_domain_name)遭受的攻击请求的来源省份(province)分布。
ip_to_province函数用于获取真实客户端IP对应的省份信息。关于该函数的更多信息,请参见IP函数。matched_host: your_domain_name and final_action: block | SELECT ip_to_province( if(real_client_ip = '-', remote_addr, real_client_ip) ) as province, count(1) as "攻击次数" GROUP by province