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--记录收取进度--(记录采集和输出进度)