filebeat close_* 配置
发布日期:2022-04-22 13:46:54 浏览次数:10 分类:博客文章

本文共 3169 字,大约阅读时间需要 10 分钟。

filebeat概述


filebeat是中心化和转发日志文件的轻量级应用。在服务器上安装客户端来监控你所需要的文件或者日志事件,并且将他们转发给Elasticsearch或者Logstash来检索。

如何工作

当你启动filebeat后,他会启动一个或者多个输入去寻找你定义的文件路径里的文件。对于filebeat定位到的每一个日志文件,他都会启动一个harvester。每个harvester读取一个文件的新内容并将这些新日志数据发送给libbeat,libbeat会汇聚这些信息,并将它们发送给你所定义的Output角色。

Filebeat包含两个主要的组件,Input&harvester. 它们会一起工作去监控文件的更新并且将数据发送给指定好的output。

harvester

farvester负责读取一个文件的内容。它按行读取内容后,会将数据发送给Output。每个文件都会有一个harvester来读取内容。他也负责文件的打开和关闭,当harvester运行时,会持续保持文件的状态为Open。 当正在被harvester读取的文件被重命名或者删除的时候,filebeat仍然会继续读取文件内容,这就会导致磁盘空间一直被占用,直到harvester被关闭才会被释放。默认情况下,这个filebeat会一直保持文件为open状态,直到符合close_inactive设置的条件或时间。

关闭harvester会导致以下结果,

  • 如果文件被删除的时候harvester仍在读取文件,那么文件处理器被关闭后,文件相应的资源才会被释放。
  • 当scan_frenquency设置的时间到期的时候,文件才会被再次抓取。
  • 如果harvester被关闭之后,文件被移动或者删除,那么这个文件将不会被继续抓取数据。

scan_frenquency

设置filebeat多久查询一次指定路径中的新文件。比如,你指定了一个路径/var/log/*,这个目录内的文件将会被扫描,以你设置的频率值。最快的话设置1s就足够了,官方不建议设置1s以下。如果你想让日志文件近乎于实时发送的话,那么不要采用将scan_frenquency设置得非常小,而只需要调整close_inactivate的值来让文件处理器一直保持Open状态并且不断轮询你的文件。

默认值为10s。
个人理解:会按照定义好的频率去扫描文件的指针位置,如果有变化,则启动一个新的harvester,针对这个文件。

close_*

close_系列的设置主要用于在一定的时间或者标准下关闭harvester。关闭harvester意味着关闭文件处理器。如果一个文件在harvester关闭之后有内容更新,那这个文件只有在scan_frequency到达时间后才会再次被抓取。但是如果关闭期间,这个文件被删除或者移动了,filebeat将不会再处理这个文件,而且那些还没有被抓取的新内容将会丢失。当filebeat读取一个文件的时候,close_*系列的设置将会被同步调用,意味着如果filebeat因为输出阻塞(例如队列排满或者其他问题)而处于被阻塞状态时,这个文件将会一直保持被打开状态,直到filebeat再次尝试从文件读取内容。

close_inactive

当这个选项被设置时,如果一段时间内这个文件没有被harvester抓取数据,filebeat会关闭文件处理器。计时器会在harvester读取日志最后一行数据时启动,他不是根据文件的编辑时间作为时间基准的。如果关闭的文件有变化了,一个新的harvester将会开启并且当scan_frenquency计时到达的时候,文件里的更新将会被获取。

官方建议close_inactive应该设置为大于文件更新的频率。比如你的日志文件几秒钟更新一次,你可以安全地设置它为1m. 如果文件更新频率相差比较大,可以对他们分别做配置。
将这个值调低,意味着harvester也就是文件处理器会被更快的关闭,这会导致文件的新内容不会被实时更新。
关闭文件的时间戳不取决于文件的修改时间,相反,filebeat使用内部的时间戳,它基于文件最后被抓取的时间。比如如果close_inactive被设置为5m,倒计时器会开始于harvester读取文件最后一行的时候。
你可以配置成2h 或者 5m (2小时和5分钟). 默认为5分钟。

close_renamed

官方提醒使用这个选项需要理解数据丢失的潜在问题。

当被置位时,文件重命名时,Filebeat会关闭文件读取器。一般发生在文件轮询时。默认情况下,harvester能保持打开和一直读取文件不依赖于文件名称。如果被置位,当这个文件被重命名时候或者移动的时候,并且不再匹配指定的路径时候,这个文件将不会再被读取,filebeat不会完成读取文件。

在file_identity选项被设置为path时候,不要使用此选项。因为filebeat不能用path名称作为唯一标识来检测重命名,所以此选项无意义。

WINDOWS: 如果windows日志显示轮询系统错误因为它不能轮询文件,此时你应该启用此选项。

close_removed

当这个选项置位时,filebeat对移动的文件将关闭harvester。正常情况下,一个文件应该在close_inactive到时间后才能被移动。但是如果过早的移动文件并且没有设置此选项的话,filebeat会保持文件打开状态来确保harvester已经读取完成。如果这个设置导致文件因过早从磁盘中删除而没有完全被读取的话,禁用这个选项。

这个选项默认开启,如果要禁用这个选项的话,必须要先禁用掉 clean_removed选项。

WINDOWS: 如果windows日志显示轮询系统错误因为它不能轮询文件,此时你应该启用此选项。

close_eof

官方提醒使用这个选项需要理解数据丢失的潜在问题。

当这个选项置位时,当filebeat到达文件最末行时,会马上关闭这个文件。这个用于当文件只是一次性写入并且不经常更新。例如当你把每个单独日志文件都写入到一个新文件的场景下,这个选项就会发挥作用。 配置默认开启。

close_timeout

官方提醒使用这个选项需要理解数据丢失的潜在问题。并且另一个副作用是在timeout超时前,多行的日志事件可能不会被完全发送。

当这个选项启用时,Filebeat会给每个harvester一个预定义好的生命时长。在timeout时限到达时,不论它读取到哪里,都将会被终止。这个选项用于对一些你只想花费一个预定义好的时间在它身上的老文件处理上。当预定义时间超时时候,这个文件会被关闭,如果关闭后文件仍在更新中的话,Filebeat会再启动一个新的harvester,这则基于定义好的scan_frequency频率。接着这个close_timeout会再次被激活,超时后会关闭文件,如此反复。

这个选项在Output被阻塞的时候特别有用,_他会使filebeat保持文件处理器于打开状态,即使这个文件被从磁盘上删除。_设置这个值为5m会确保文件会被定期关闭,这样系统就会释放这些文件。

如果close_timeout = ignore_older,当harvester被关闭时文件被修改了,那文件不会被重新读取。这两个设置结合的话会导致一些数据丢失,并且完整的文件不会被发送。
当你使用这个参数用在多行数的日志文件时,harvester可能会被停在行数中间的某处,这意味着只有一部分的日志会被发送。如果harvester重新启动并且这个文件仍然存在,那么只有第二部分的日志会被发送。
默认是关闭的,也就是置0.

来源:

转载地址:https://www.cnblogs.com/felix-zong/p/14569888.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Filebeat+kafka+logstash 多路径日志收集
下一篇:File->FileBuffer->ImageBuffer

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月20日 18时27分43秒