ELK - Filebeat - How to work

Filebeat 主要由两个组成部分:输入和采集器。

由两个主要部分组成:输入和采集器(harvester)。

采集器负责读取单个文件的内容。采集器逐行读取每个文件,并将内容发送到输出。每个文件启动一个收获器。采集器负责打开和关闭文件,这意味着文件描述符在采集器运行时保持打开。如果在获取文件时删除或重命名文件,Filebeat将继续读取该文件。这样做的副作用是磁盘上的空间被保留到采集器关闭为止。默认情况下,Filebeat保持文件打开,直到达到close_inactive。

关闭采集器具有以下后果:

关闭文件处理程序,如果文件在采集器仍在读取文件时被删除,则释放底层资源。

只有在经过 scan_frequency 之后,才会再次开始文件的获取。

如果在采集器关闭时移动或删除文件,则不会继续收获文件。

若要控制采集器何时关闭,请使用close_*配置选项。

Filebeat保存每个文件的状态,并经常将状态刷新到注册表文件中的磁盘。状态用于记住采集器正在读取的最后一个偏移量,并确保发送所有日志行。如果无法获得诸如Elasticsearch或Logstash之类的输出,Filebeat将跟踪发送的最后一行,并在输出再次可用时继续读取文件。当Filebeat运行时,每个输入的状态信息也保存在内存中。当重新启动Filebeat时,来自注册表文件的数据用于重建状态,Filebeat在最后一个已知位置继续每个采集器。

对于每个输入,Filebeat保存它找到的每个文件的状态。因为文件可以重命名或移动,所以文件名和路径不足以识别文件。对于每个文件,Filebeat存储惟一的标识符以检测之前是否捕获了文件。

如果用例涉及每天创建大量的新文件,那么您可能会发现注册表文件变得太大。参见注册表文件太大?编辑有关可设置以解决此问题的配置选项的详细信息。

Filebeat保证事件将至少传递一次到配置的输出,并且不会丢失数据。Filebeat能够实现此行为,因为它将每个事件的传递状态存储在注册表文件中。

在定义的输出被阻塞并且没有确认所有事件的情况下,Filebeat将继续尝试发送事件,直到输出确认它已经接收到事件。

如果Filebeat在发送事件的过程中关闭,那么它并不等待输出在关闭之前确认所有事件。任何发送到输出的事件,但在Filebeat关闭之前未被确认,在重新启动Filebeat时再次发送。这确保了每个事件至少发送一次,但是最终可能会向输出发送重复的事件。可以通过设置shutdown_timeout 选项将Filebeat配置为在关闭之前等待特定时间量。

注册表文件:

/var/lib/filebeat/registry

/var/lib/filebeat/registry
[{"source":"/root/test_elk/test_elk.log","offset":363117,"timestamp":"2018-12-27T06:32:10.537394407-05:00","ttl":-1,"type":"log","meta":null,"FileStateOS":{"inode":67634871,"device":64768}},{
"source":"/usr/local/pgsql/data/log/postgresql-Tue.log","offset":0,"timestamp":"2018-12-24T01:52:12.84988597-05:00","ttl":-2,"type":"log","meta":null,"FileStateOS":{"inode":201437323,"device"
:64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Wed.log","offset":0,"timestamp":"2018-12-24T01:52:12.851907169-05:00","ttl":-2,"type":"log","meta":null,"FileStateOS":{"inode":2014292
54,"device":64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Fri.log","offset":2342,"timestamp":"2018-12-24T01:52:12.853882905-05:00","ttl":-2,"type":"log","meta":null,"FileStateOS":{"
inode":201326671,"device":64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Mon.log","offset":0,"timestamp":"2018-12-24T01:52:12.855910755-05:00","ttl":-2,"type":"log","meta":null,"File
StateOS":{"inode":201437322,"device":64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Sat.log","offset":0,"timestamp":"2018-12-24T01:52:12.858020137-05:00","ttl":-2,"type":"log","meta"
:null,"FileStateOS":{"inode":201337791,"device":64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Sun.log","offset":551,"timestamp":"2018-12-24T01:52:12.860152001-05:00","ttl":-2,"type"
:"log","meta":null,"FileStateOS":{"inode":201437321,"device":64770}},{"source":"/usr/local/pgsql/data/log/postgresql-Thu.log","offset":19761,"timestamp":"2018-12-24T01:52:12.862365227-05:00",
"ttl":-2,"type":"log","meta":null,"FileStateOS":{"inode":201326665,"device":64770}}]

猜你喜欢

转载自blog.csdn.net/chuckchen1222/article/details/85302088