本文基于FileBeat5.6,6.0+配置可能有点差异
前言
接着上文Logstash,上文中我们通过Logstash收集解析日志,对于我们测试开发环境来讲没问题,因为所有应用都在一台32G的主机上,但是对于线上的机器,每个应用都在各自服务器,Logstash占用资源比较大,每台服务器都起一个Logstash是十分浪费性能的,所以我们需要使用轻量级的日志收集器Filebeat,Logstash单独部署在一台服务器用于解析日志。
我们可以看下我们开发环境Filebeat和Logstash的资源占用情况
内存占用相差接近40倍,Filebeat不会占用服务器很多资源,也就不怎么会影响到部署的应用的性能了。
FileBeat安装
因为我的logstash是5.6.10版本,所以filebeat也使用这个版本
上面这个命令主要关注磁盘挂载的配置,因为我在rancher上面配置,这个命令我不保证完全正确
-v /app/logs:/app/logs 映射日志目录-v /etc/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml 映射filebeat配置文件-v /app/data/filebeat:/usr/share/filebeat/data 映射filebeat存储,记录文件读取的文件在这里
下面贴上filebeat.yml
我们把之前logstash中收集日志以及处理日志换行的逻辑放到filebeat中来,output设置发送到logstash,为了方便调试,可以把console的配置打开
同时增加了一个自定义字段env: dev-1,用于查询时筛选各个环境的日志,对于每个项目的filebeats配置,这个env需要修改
Logstash修改
Logstash需要对pipeline配置文件做修改
去除从文件读取日志的配置,input增加beats模块,专门接收beats传送的数据,启动logstash的时候需要用-p命令吧5044端口开放出来
filebeat会额外增加一些字段,我们需要重新进行处理,比如之前我们通过logstash的path字段取项目名称,在使用了filebeat后,我们从filebeat的source字段提取
从filebeat过来的env变量会嵌套在fields属性下面,我们用mutate的add_field进行转换
数据
讲这么多,也不直观,直接看下demo数据,你就能更加直观看到数据怎么被处理的
filebeat发到logstash的数据
logstash处理后的数据
主要做的工作是,解析filebeat传过来数据,并且删除一些无用的字段,最后这份有用的数据会落到ES中去。
总结
熟悉了logstash之后,在搭建filebeat就相对简单了,主要解析工作还是在logstash中,filebeat就是一个搬运工。除了filebeats,还有其他各种beats,能收集各种日志。需要时候的时候再看文档就行。目前我只做业务日志的收集。
有什么具体细节就看官方文档(https://www.elastic.co/guide/en/beats/filebeat/current/index.html)
最后
看到这里的观众,关注吧,关于技术的一切我都有可能分享
领取专属 10元无门槛券
私享最新 技术干货