FileBeat

序言

  Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计
目前Beats包含六种工具:

  • Packetbeat:网络数据(收集网络流量数据)
  • Metricbeat:指标(收集系统、进程和文件系统级别的CPU和内存使用情况等数据)
  • Filebeat:日志文件(收集文件数据)
  • Winlogbeat:windows事件日志(收集Windows事件日志数据)
  • Auditbeat:审计数据(收集审计日志)
  • Heartbeat:运行时间监控(收集系统运行时的数据)

参考资料:

  1. 一篇文章搞懂filebeat(ELK) - 一寸HUI - 博客园
  2. Filebeat:轻量型日志分析与 Elasticsearch | Elastic

Filebeat

  因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder。不过作者只是一个人,加入http://elastic.co公司以后,因为es公司本身还收购了另一个开源项目packetbeat,而这个项目专门就是用golang的,有整个团队,所以es公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat了。


Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

  Filebeat的工作方式如下:

  1. 启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。
  2. 对于Filebeat所找到的每个日志,Filebeat都会启动收集器
  3. 每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat
  4. libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出

流程图如下所示:

相关一些问题

处理流程

 filebeat结构:由两个组件构成,分别是inputs(输入)和harvesters(收集器)这些组件一起工作来跟踪文件并将事件数据发送到您指定的输出,

harvester负责读取单个文件的内容。harvester逐行读取每个文件,并将内容发送到输出

为每个文件启动一个harvester。
harvestyaoner负责打开和关闭文件,这意味着文件描述符在harvester运行时保持打开状态。如果在收集文件时删除或重命名文件,Filebeat将继续读取该文件。这样做的副作用是,磁盘上的空间一直保留到harvester关闭(即文件虽然被我们认为删除了,但是内容空间仍然在,且被harvester处理,直到结束cuiyaonan2000@163.com)。默认情况下,Filebeat保持文件打开,直到达到close_inactive

关闭harvester会产生的结果:

  • 文件处理程序关闭,如果harvester仍在读取文件时被删除,则释放底层资源。
  • 只有在scan_frequency结束之后,才会再次启动文件的收集。
  • 如果该文件在harvester关闭时被移动或删除,该文件的收集将不会继续

  一个input负责管理harvesters和寻找所有来源读取。如果input类型是log,则input将查找驱动器上与定义的路径匹配的所有文件,并为每个文件启动一个harvester。每个input在它自己的Go进程中运行,Filebeat当前支持多种输入类型。每个输入类型可以定义多次。日志输入检查每个文件,以查看是否需要启动harvester、是否已经在运行harvester或是否可以忽略该文件

Filebeat如何保证读取的文件不会重复和缺少

  Filebeat保留每个文件的状态,并经常将状态刷新到磁盘中的注册表文件中。

该状态用于记住harvester读取的最后一个偏移量,并确保发送所有日志行。如果无法访问输出(如Elasticsearch或Logstash),Filebeat将跟踪最后发送的行,并在输出再次可用时继续读取文件。当Filebeat运行时,每个输入的状态信息也保存在内存中。---------有点像offset

当Filebeat重新启动时,来自注册表文件的数据用于重建状态,Filebeat在最后一个已知位置继续每个harvester。对于每个输入,Filebeat都会保留它找到的每个文件的状态。

由于文件可以重命名或移动,文件名和路径不足以标识文件。对于每个文件,Filebeat存储唯一的标识符,以检测文件是否以前被捕获。---filebeat根据内容确保文件的唯一性????

filebeat保证至少一次数据消费(即有可能重复消费)

Filebeat保证事件将至少传递到配置的输出一次,并且不会丢失数据。

是因为它将每个事件的传递状态存储在注册表文件中。在已定义的输出被阻止且未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到输出确认已接收到事件为止。如果Filebeat在发送事件的过程中关闭,它不会等待输出确认所有事件后再关闭。当Filebeat重新启动时,将再次将Filebeat关闭前未确认的所有事件发送到输出。这样可以确保每个事件至少发送一次,但最终可能会有重复的事件发送到输出。通过设置shutdown_timeout选项,可以将Filebeat配置为在关机前等待特定时间

Launch filebeat

下载filebeat

官网地址:Download Filebeat • Lightweight Log Analysis | Elastic

注意要跟es版本要匹配否则连接es的时候就会失败比如:

提示ES版本太老了cuiyaonan2000@163.com.要下载个对应版本的filebeat

文件说明

解压后的文件目录如下所示:

  • filebeat.reference.yml 是当前版本最新,最全的一个配置文件用于,帮助我们设置
  • filebeat.ym 是正式运行的文件.
  • filebeat 执行命令

命令说明

  • ./filebeat test config  #用来测试配置文件是否正确,默认监察filebeat.yml文件 
  • ./filebeat test config -c ./filebeat.yml    #指定检查配置文件
  • ./filebeat -c ./filebeat.yml  -e &   #指定配置文件启动filebeat

Input ---log

简单设置下从日志文件读取信息

  • type: 设置input的类型为log
  • enable:  开启该配置
  • paths:  要读取日志文件的位置,可以是数组

Output---elasticsearch

  1. hosts:  elasticsearch的地址
  2. useraname:  es的用户
  3. password: es的密码

Output---console

output.console:
  codec.json:
    pretty: true
    escape_html: false

Input---Logstash

连接Kibana

继续修改filebeat.ym文件,让filebeat可以连接kibana,并进行一些设置 

  • setup.dashboards.enabled: true # 启用kibana仪表板
  • ssl.verification_mode: none  #在filebeat配置文件中增加如下配置,这将使 winlogbeat 忽略证书验证错误

如此这般filebeat做了两件事

增加索引模式

增加很多的可视化库-都是filebeat的

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值