以前利用elk搭建一套完整的日志分析系统,随着beat的发展,在有些地方,logstash逐渐退出人们的视野。
因为java撰写的logstash太吃内存,所以我们用filebeat替代它的工作。
解析日志有2种方法:
第一:采用filebeat本身自带的module
进入filebeat主目录下你会看到modules.d 和module两个目录,前者是filebeat所支持的module总览,后者是所用到的module的具体配置。
在这里我选择的是nginx的日志来给大家演示。
filebeat是6.5.4版本 nginx日志是初始的main格式
2、在filebeat.yml修改如下配置
123.png
注意,不要重复收集同一个日志,也就是说不要再收集nginx日志,不然收割进程会发生冲突并报错。
然后就可以启动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
到此全部结束!
学习的道路,水滴石穿!
网友评论