首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker ELK实践之Filebeat

本文基于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)

最后

看到这里的观众,关注吧,关于技术的一切我都有可能分享

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G0XEBB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券