0x01.前言
看到小编鼓励作者写连载,趁着截稿日期延长并且还有Apple Watch
大奖的诱惑就又有动力再肝一篇出来了 2333……
0x02.再看日志检索
想要检索自然需要提前知道都有哪些字段,这里针对所有的键依次进行说明
No. | 字段名称 | 字段含义 |
---|---|---|
1 | remote_addr | 客户端 IP 地址 |
2 | remote_user | 客户端名称 |
3 | time_local | 服务器本地时间 |
4 | request_method | HTTP 请求方法 |
5 | request_url | URL 地址 |
6 | status | HTTP 请求状态码 |
7 | body_bytes_sent | 发送给客户端的字节数 |
8 | http_referer | 访问来源的页面链接地址 |
9 | http_user_agent | 客户端浏览器信息 |
10 | http_x_forwarded_for | 当前端有代理服务器时,追踪记录客户端真实 IP 地址的配置 |
11 | LogParseFailure | 解析失败日志的键 |
了解完全部字段后废话不多说,接下来直接去控制台进行操作
1,键值检索
举个例子,指定客户端地址
代码语言:javascript复制remote_addr : "101.89.43.238"
同理的用法均可用于其他字段
代码语言:javascript复制remote_user : "-"
代码语言:javascript复制time_local : "22/May/2021:20:41:56"
代码语言:javascript复制request_method : "GET"
代码语言:javascript复制request_uri : "/"
代码语言:javascript复制status : 200
代码语言:javascript复制body_bytes_sent : 348
代码语言:javascript复制http_referer : "-"
代码语言:javascript复制http_user_agent : "DNSPod-Monitor/2.0"
代码语言:javascript复制http_x_forwarded_for : "-"
2,键值大小搜索
举个例子,状态码大于 400
代码语言:javascript复制status :>400
相似的操作符还有
代码语言:javascript复制:> 大于某个数值
代码语言:javascript复制:< 小于某个数值
代码语言:javascript复制:>= 大于等于某个数值
代码语言:javascript复制:<= 小于等于某个数值
3,键值范围搜索
举个例子,检索4XX
状态码的日志
status:[400 TO 500}
4,键值模糊搜索
举个例子,检索UA
中含有baidu
的日志
http_user_agent : *baidu*
5,etc...
还有很多就不一一介绍了,同时上述操作符还可以叠加使用
举个例子,GET
请求并且状态码大于400
request_method:GET AND status:>400
0x03.再看日志分析
代码语言:javascript复制分析语句由检索条件和 SQL 语句组成,两者通过竖线(|)分割
[检索条件] | [SQL 语句]
摘自文档中最简单的两个示例
代码语言:javascript复制无检索条件,计算访问次数 PV 值
* | select count(*) as pv
代码语言:javascript复制有检索条件,统计状态码为 404 的访问次数 PV 值
status:404 | select count(*) as pv
文档中还有更多的示例,Nginx 访问日志分析案例
尝试第一个 SQL 分析示例,但是没有成功检索
带宽曲线图
代码语言:javascript复制* | select HISTOGRAM(CAST(msec*1000 AS TIMESTAMP), INTERVAL 1 MINUTE) AS dt, round(SUM(body_bytes_sent)*8/1000.0, 2) AS "带宽(Kb/min)" group by dt order by dt limit 50
这里需要调查需要如何修改才能正确查询
0x04.后记
可见不论检索还是分析都非常强大,可以说满足99%
的查询需求了
不管是能想到的还是想不到的查询语句它都能提供,这也是底层Lucene
所带来的魅力之一了