filebeat简介

x33g5p2x  于2021-03-14 发布在 ElasticSearch  
字(2.3k)|赞(0)|评价(0)|浏览(541)

参考:https://www.elastic.co/guide/en/beats/filebeat/index.html

Filebeat是一个轻量级的代理,用于转发和集中日志数据。Filebeat作为代理安装在服务器上,监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。

以下是Filebeat的工作原理:

启动Filebeat时,它会启动一个或多个输入(inputs),这些输入将查找您为日志数据指定的位置。对于Filebeat找到的每个日志,Filebeat启动一个收集器(harvester)。每个收集器为新内容读取单个日志,并将新日志数据发送到libbeat,libbeat聚合事件并将聚合数据发送到您为Filebeat配置的输出。Filebeat是一个Elastic Beat。它基于libbeat框架。

Filebeat隶属于Beats。目前Beats包含六种工具:

  • Packetbeat(搜集网络流量数据)
  • Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
  • Filebeat(搜集文件数据)
  • Winlogbeat(搜集 Windows 事件日志数据)
  • Auditbeat( 轻量型审计日志采集器)
  • Heartbeat(轻量级服务器健康采集器)

Filebeat工作原理

Filebeat由两个主要组件组成:输入inputs和收集器harvesters。这些组件一起工作以tail file并将事件数据发送到您指定的输出。

什么是harvesters?

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

关闭harvesters会产生以下后果:

  • 文件处理程序已关闭,如果在harvesters仍在读取文件时删除了文件,则释放底层资源。
  • 只有在scan_frequency经过时才会再次开始收集文件。
  • 如果在harvesters关闭时移动或移除文件,则不会继续收集文件。
  • 要控制harvesters何时关闭,请使用close_*配置选项。

什么是input?

输入负责管理harvesters并查找要读取的所有源。

如果输入类型为log,则输入将查找驱动器上与定义的glob路径匹配的所有文件,并为每个文件启动收集器。每个输入都在自己的Go例程中运行。

以下示例将Filebeat配置为从与指定的glob模式匹配的所有日志文件中获取行:

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

Filebeat目前支持多种input类型。每种输入类型都可以定义多次。该log输入检查每个文件看harvesters是否需要启动,一个人是否已经在运行,或文件是否可以忽略不计(见ignore_older)。如果自收割机关闭后文件的大小发生变化,则只会拾取新行。

Filebeat如何保持文件状态?

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

对于每个输入,Filebeat保持它找到的每个文件的状态。由于可以重命名或移动文件,因此文件名和路径不足以标识文件。对于每个文件,Filebeat存储唯一标识符以检测先前是否收获了文件。

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

Filebeat如何确保至少一次交付?

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

在已定义的输出被阻止且尚未确认所有事件的情况下,Filebeat将继续尝试发送事件,直到输出确认已收到事件。

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

注意

Filebeat的至少一次交付保证有一个限制,涉及日志轮换和旧文件的删除。如果日志文件写入磁盘并且旋转速度超过Filebeat可以处理的速度,或者在输出不可用时删除文件,则数据可能会丢失。在Linux上,由于inode重用,Filebeat也可以跳过行。有关inode重用问题的更多详细信息,请参阅 常见问题。

相关文章

微信公众号

最新文章

更多