由于cdn控制台没有miss排行,看到有日志分析检索,随手撸了一个
文章参考自官方文档,但无奈官方文档写的demo未联合说明怎么改,顺便mark下来做记录
使用场景:使用日志服务统计cdn访问不同状态码或命中情况
由于目前日志服务投递只能投递境内日志,境外域名访问情况无法获知
前提条件
- 开通日志服务
- CDN开启实时日志分析(需要申请)
- 配置cdn日志投递,参考文档
- 日志服务开通日志字段统计(需要提工单申请)
- 配置 url(访问的uri) 字段的字段统计,其他字段参考文档
检索语句
【筛选条件】| 【SQL语句】,需要注意 |
前后需要空格
hit:"miss" | select url as "t-url", count(url) as "count" group by url order by count desc limit 10
筛选条件
hit
字段只有命中和不命中两个状态(hit|miss)
hit:[miss|hit]
SQL语句
使用GROUP BY
聚合url和count两列,参考文档
GROUP BY [ 列名(KEY)| 别名 | 序号 ]
使用ORDER BY
根据count列降序,参考文档
ORDER BY [ 列名(KEY)| 别名 | 序号 ] DESC
使用 limit
压缩展示数,参考文档
LIMIT count
后续只需要添加到日志服务图表中即可保留其语句用作永久查询,不过顺便吐槽下,日志服务的图表真的不够好看
另外可以将过滤条件 hit 改到仪表盘进行过滤,可以让展示更加弹性(全部排行、未命中排行、命中排行等)
多个域名统计
出于某种不可描述的原因,我们将多个域名投递到单个cls,只使用url是区分不出是那个域名的。所以继续撸完整
- 配置多域名投递到同一个cls
- 开始日志服务
host
字段的字段统计
检索语句
根据上面单域名可得,多域名需要额外配置多一个字段host
hit:"miss" | select host as "t-host",url as "t-url", count(url) as count group by url,host order by count desc limit 10
通过 group by
聚合url
和host
两个字段,在图表中展示就会将不同host
的两个url
给区分开来