解决elasticsearch+kibana+filebeat日志无法解析的问题

以前利用elk搭建一套完整的日志分析系统,随着beat的发展,在有些地方,logstash逐渐退出人们的视野。
因为java撰写的logstash太吃内存,所以我们用filebeat替代它的工作。

解析日志有2种方法:

第一:采用filebeat本身自带的module

进入filebeat主目录下你会看到modules.d 和module两个目录,前者是filebeat所支持的module总览,后者是所用到的module的具体配置。
在这里我选择的是nginx的日志来给大家演示。
filebeat是6.5.4版本 nginx日志是初始的main格式

1、在modules.d/nginx.yml.disabled添加nginx日志文件路径如下
123.png
并将名字改为nginx.yml
2、在filebeat.yml修改如下配置
123.png

注意,不要重复收集同一个日志,也就是说不要再收集nginx日志,不然收割进程会发生冲突并报错。

3、建立初始环境
112.png

然后就可以启动filebeat了,如果成功,在kibana-discover就会产生如下图所示的效果:
113.png

如果在nginx.conf修改了日志文件的log_format


222.png

你需要在filebeat的主目录下module的nginx模块里修改
vim module/nginx/access/ingest/default.json


212.png

在grok的patterns里面修改你nginx日志log_format的正则匹配,在kibana的DevToos里面可以进行grok语法测试,如果日志里有[],需要加2个转义符,但是测试的时候加一个就可以了。
11.png

在修改完patterns之后,先把filebeat原先创建的pipeline删除,再重启filebeat。
DELETE _ingest/pipeline/filebeat-6.5.4-nginx-access-default


121.png

结果我就不执行给大家看了,就是一个true。

第二:在es中添加pipeline,并且在filebeat配置文件中指定输出到pipeline

1、就像第一种方法一样,先在kibana的Dev Tools/Grok Debugger里把日志的匹配格式写出来


3.png

需要注意,匹配语法时,中括号[]和双引号""都是需要转译符\的。
2、再在Console添加管道,如图,这里[]没使用转译符,可根据报错自行修改


1.png

3、添加日志测试,post的这条日志会创建一个test_pipeline的索引,可以去这个索引里面查看解析的结果,
2.png

此时代表成功解析日志
4、在filebeat为我们的日志指定pipeline


1.png

5、配置日志输出到es中指定的pipeline
2.png

6、去我们默认的filebeat索引查看日志
1.png

到此全部结束!
学习的道路,水滴石穿!

你可能感兴趣的:(解决elasticsearch+kibana+filebeat日志无法解析的问题)