Filebeat是一个开源的文本日志收集器,采用go语言开发,它重构了logstash采集器源码,安装在日志产生服务器上来监视日志目录或者特定的日志文件,并把他们发送到logstash、elasticsearch以及kafka上。

Filebeat是代替logstash-forwarder的数据采集方案,原因是logstash运行在jvm上,对服务器的资源消耗比较大(Flume也是如此)。正因为Filebeat如此轻量级,因此不要奢望它能在日志收集过程中做更多清洗和转换的工作,它只负责一件事,就是高效可靠的传输日志数据,至于清洗和转换,可以在后续的过程中进行。



FileBeat两大组件

FileBeat两大组件: harvesters、inputs


harvesters


  • 一个harvester对应一个file,可有多个harvester。
  • harvester按行读取文件内容,然后发送给output
  • 正在被harvester处理的文件,如果中间被删除了,harvester将会释放资源。
  • ​不活动的文件在​​close_inactive​​​​到达时间时,​​harvester关闭句柄后,如果对应文件被删除,则不会再继续处理该文件。
  • 只有​​scan_frequency​​到达时间时,​​harvester才会重新启动。



inputs

filebeat.inputs:
- type: log
paths:
- /var/log/*.log
- /var/path2/*.log


  • 负责管理harvesters、查找哪些文件资源可以读取
  • 检查文件是否需要启动harvester、是否应该忽略文件(​​ignore_older​​)




组件


  • Prospector--探测--(探测有哪些文件可采集)
  • Harvest--收取--(具体采集文件数据)
  • libeat--汇集对外输送--(输出文件数据)
  • registry--记录收取进度--(记录采集和输出进度)