前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【日志服务CLS】Nginx 访问日志检索、分析示例

【日志服务CLS】Nginx 访问日志检索、分析示例

原创
作者头像
远哥制造
修改2021-05-24 10:36:13
7180
修改2021-05-24 10:36:13
举报
文章被收录于专栏:日志服务CLS日志服务CLS

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" 
remote_addr
remote_addr

同理的用法均可用于其他字段

代码语言: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状态码的日志

代码语言:javascript
复制
status:[400 TO 500}
范围
范围

4,键值模糊搜索

举个例子,检索UA中含有baidu的日志

代码语言:javascript
复制
http_user_agent : *baidu*
模糊搜索
模糊搜索

5,etc...

还有很多就不一一介绍了,同时上述操作符还可以叠加使用

举个例子,GET请求并且状态码大于400

代码语言:javascript
复制
request_method:GET AND status:>400
AND
AND

0x03.再看日志分析

分析语句由检索条件和 SQL 语句组成,两者通过竖线(|)分割

代码语言:javascript
复制
[检索条件] | [SQL 语句]

摘自文档中最简单的两个示例

代码语言:javascript
复制
无检索条件,计算访问次数 PV 值
* | select count(*) as pv
pv
pv
代码语言:javascript
复制
有检索条件,统计状态码为 404 的访问次数 PV 值
status:404 | select count(*) as pv
pv(404)
pv(404)

文档中还有更多的示例,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所带来的魅力之一了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01.前言
  • 0x02.再看日志检索
    • 1,键值检索
      • 2,键值大小搜索
        • 3,键值范围搜索
          • 4,键值模糊搜索
            • 5,etc...
              • 带宽曲线图
          • 0x03.再看日志分析
          • 0x04.后记
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档