我是靠谱客的博主 冷酷鞋垫,这篇文章主要介绍filebeat收集json格式的nginx程序日志(二)filebeat收集json格式的nginx日志,现在分享给大家,希望可以做个参考。

filebeat收集json格式的nginx日志

1.为什么要收集json格式的日志类型

由于nginx普通日志收集过来的日志内容都是存在一个字段中的值,我们想单独对日志中的某一项进行查询统计,比如我只想查看某个IP请求了我那些页面,一共访问了多少次,在普通的日志中是无法过滤的,不是很满意

如下图,可以明显的看出,收集过来的日志信息都是在一块的,不能够根据某一项内容进行查询

在这里插入图片描述

因此就需要让filebeat收集json格式日志内容,把日志内容分成不同的字段,也就是Key/value,这样我们就可以根据一个字段去统计这个字段的相关内容了

我们期望日志收集过来是这个样子的

复制代码
1
2
3
4
5
6
7
8
9
10
11
$remote_addr:192.168.81.210 $remote_user:- [$time_local]:[15/Jan/2021:15:03:39 +0800] $request:GET /yem HTTP/1.1" $status:404 $body_bytes_sent:3650 $http_referer: - $http_user_agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" $http_x_forwarded_for:-

中文格式更是我们期望的

复制代码
1
2
3
4
5
6
7
8
9
10
11
客户端地址:192.168.81.210 访问时间:[15/Jan/2021:15:03:39 +0800] 请求的页面:GET /yem HTTP/1.1" 状态码:404 传输流量:3650 跳转来源: - 客户端程序:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" 客户端外网地址:- 请求响应时间:- 后端地址:-

2.配置nginx支持json格式的日志输出

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.修改主配置文件 [root@logsj ~]# vim /etc/nginx/nginx.conf http { log_format main '{"客户端内网地址":"$remote_addr",' '"时间":"$time_iso8601",' '"URL":"$request",' '"状态码":$status,' '"传输流量":$body_bytes_sent,' '"跳转来源":"$http_referer",' '"浏览器":"$http_user_agent",' '"客户端外网地址":"$http_x_forwarded_for",' '"请求响应时间":$request_time,' '"后端地址":"$upstream_addr"}'; } 2.重启 [root@logsj ~]# nginx -t [root@logsj ~]# systemctl reload nginx

日志已经输出为json格式

在这里插入图片描述

3.配置filebeat解析json格式的日志

一定要改filebeat配置文件,使其支持json格式的日志解析,否则写入es索引库的时候还是一串字符串,无法识别每个字段的值

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.在配置文件增加json格式解析配置 [root@logsj ~]# vim /etc/filebeat/filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - /var/log/nginx/error.log json.keys_under_root: true json.overwrite_keys: true output.elasticsearch: hosts: ["192.168.81.210:9200"] 2.重启filebeat [root@logsj ~]# systemctl restart filebeat.service

4.清空之前收集的旧格式数据

一定要清空es之前收集的传统日志格式的数据,还要把nginx日志情况,如果有多台nginx服务器,则改完json格式的日志后,一定要把日志清空,否则将会在kibana中显示两种日志格式

4.1.停掉filebeat

停掉filebeat,不再收集日志

复制代码
1
2
[root@logsj ~]# systemctl stop filebeat.service

4.2.删除es日志索引库

kibana展示的数据都是从es库拿过来的,如果es库不删除重建的,也会是两种格式的数据

在这里插入图片描述

4.3.删除kibana的日志索引库

kibana上对应es的日志索引库也需要删除,否则新日志进来后,由于是json格式,很多字段会提示感叹号

点击Managerment—索引模式—索引库—删除

在这里插入图片描述

5.配置filebeat指定索引库名称

filebeat每次自动创建的索引都是filebeat-xxx,对应我们生产环境来说不太友好,我们可以自定义索引名称

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1.修改配置文件 [root@logsj ~]# vim /etc/filebeat/filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - /var/log/nginx/error.log fields: #类似于标签 index: nginx json.keys_under_root: true json.overwrite_keys: true output.elasticsearch: hosts: ["192.168.81.210:9200"] indices: #定义索引名 - index: "elk-nginx-%{+yyyy.MM.dd}" when.equals: #与那个标签关联 fields: index: "nginx" 2.重启 [root@logsj ~]# systemctl restart filebeat

在这里插入图片描述

6.kibana创建日志索引库

全部删除完成后就可以启动filebeat并在kibana上创建索引库,展示json格式的日志了

刚才es上的索引库已经建立了,下面去kibana上建立同名的索引进行关联调用,也类似于软连接的效果

点击Managerment—创建索引—索引名称使用通配符形式,与es上的索引进行关联

填写索引名elk-nginx-*之后会列出es上elk-nginx开头的索引库并进行关联

在这里插入图片描述

字段选择@timestamp

在这里插入图片描述

创建完成

在这里插入图片描述

查看json格式收集来的日志数据,已经将每一项内容变成了一个字段值便于查询
在这里插入图片描述

7.使用kibana统计json格式的日志

7.1.统计客户端地址为192.168.81.210访问了多少次页面

7.1.1.找到客户端内网地址的字段点击添加

找到下面的客户端内网地址的字段点击ADD即可添加
在这里插入图片描述

7.1.2.添加一个筛选器筛选指定的客户端地址

在这里插入图片描述

7.1.3.查看数据

点击完保存后即可查询,右上角可以看到总数,中间可以看到具体的日志信息

在这里插入图片描述

7.2.统计客户端地址为192.168.81.210访问/jiangxl页面多少次

7.1.添加筛选条件

1)客户端地址为192.168.81.210

筛选的时候选择客户端内网地址字段,在写上匹配的值

在这里插入图片描述

2)请求的页面为/jiangxl

筛选URL字段值为/jiangxl HTTP/1.1

7.2.查看统计数据

两个筛选器都勾选后即可字段筛选出统计数据,右上角为总数,中间为具体日志内容
在这里插入图片描述

最后

以上就是冷酷鞋垫最近收集整理的关于filebeat收集json格式的nginx程序日志(二)filebeat收集json格式的nginx日志的全部内容,更多相关filebeat收集json格式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部