大数据 ELK(二十):FileBeat 是如何工作的
FileBeat 是如何工作的
FileBeat 主要由 input 和 harvesters(收割机)组成。这两个组件协同工作,并将数据发送到指定的输出。
一、input 和 harvester
1、inputs(输入)
input 是负责管理 Harvesters 和查找所有要读取的文件的组件。如果输入类型是 log,input 组件会查找磁盘上与路径描述的所有文件,并为每个文件启动一个 Harvester,每个输入都独立地运行。
2、Harvesters(收割机)
Harvesters 负责读取单个文件的内容,它负责打开/关闭文件,并逐行读取每个文件的内容,并将读取到的内容发送给输出,每个文件都会启动一个 Harvester。但 Harvester 运行时,文件将处于打开状态。如果文件在读取时,被移除或者重命名,FileBeat 将继续读取该文件。
二、FileBeats 如何保持文件状态
FileBeat 保存每个文件的状态,并定时将状态信息保存在磁盘的「注册表」文件中,该状态记录 Harvester 读取的最后一次偏移量,并确保发送所有的日志数据。如果输出(Elasticsearch 或者 Logstash)无法访问,FileBeat 会记录成功发送的最后一行,并在输出(Elasticsearch 或者 Logstash)可用时,继续读取文件发送数据。在运行 FileBeat 时,每个 input 的状态信息也会保存在内存中,重新启动 FileBeat 时,会从「注册表」文件中读取数据来重新构建状态。
在/export/server/es/filebeat-7.6.1-linux-x86_64/data 目录中有一个 Registry 文件夹,里面有一个 data.json,该文件中记录了 Harvester 读取日志的 offset。
版权声明: 本文为 InfoQ 作者【Lansonli】的原创文章。
原文链接:【http://xie.infoq.cn/article/96c7a9ed41d097fcdbd1c836e】。文章转载请联系作者。
评论