问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Filebeat占用文件句柄

发布网友 发布时间:2022-10-10 20:23

我来回答

1个回答

热心网友 时间:2023-10-09 10:34

平台使用整套的ELK日志框架:服务写本地文件日志,由Filebeat监控本地日志,并写入ES。
本地Filebeat配置如下:

问题:文件句柄占用,导致磁盘无法释放。重启Filebeat后可清理掉占用的磁盘。

收到问题后,感觉是一个很常见的问题,就直接百度了一下,果然是一下就有很多的线索。结合一些帖子,对现有服务器做了排查,如下:

这里有两个问题:

可设置:
close_older:1h
force_close_files:false
由于目前服务日志滚动的频率不是很高,文件更名后,1h左右不会被删除。所以可以尝试使用close_older配置在文件删除之前释放句柄。

=====================
2019/7/17更新:
调研后发现,close_older的默认值就是1h,所以该方案不会让原本的问题变得更好。

虽然问题可能会被解决,但对Filebeat还不够理解,并且上述提出的两个问题,没有很好的解答。因此,我继续对Filebeat做进一步的学习和实验。

资料链接: https://www.jianshu.com/p/6282b04fe06a
Filebeat主要组件:prospector和harvester,如图:

filebeat保持文件状态:

filebeat保证至少一次交付:
每次交付会有状态,对端需要ACK确认。

注意:
Filebeat的至少一次交付保证包括日志轮换和删除旧文件的*。如果将日志文件写入磁盘并且写入速度超过Filebeat可以处理的速度,或者在输出不可用时删除了文件,则可能会丢失数据。
在Linux上,Filebeat也可能因inode重用而跳过行。有关inode重用问题的更多详细信息,请参阅filebeat常见问题解答。(后续遇到的话,继续研究,本次略过)

首先看一下close_renamed的解释:
close_renamed
Only use this option if you understand that data loss is a potential side effect.
When this option is enabled, Filebeat closes the file handler when a file is renamed. This happens, for example, when rotating files. By default, the harvester stays open and keeps reading the file because the file handler does not depend on the file name. If the close_renamedoption is enabled and the file is renamed or moved in such a way that it’s no longer matched by the file patterns specified for the , the file will not be picked up again. Filebeat will not finish reading the file.
WINDOWS: If your Windows log rotation system shows errors because it can’t rotate the files, you should enable this option.
经过测试后发现,采用filebeat监听一个文本文件,通过mv将文件更改,close_renamed是管用的,但通过rm删除文件,close_renamed是不管用的。

结论:未重现生产环境的现象。

阶段性结论:升级生产环境filebeat版本后,检查问题是否解决。

后续研究:

close_inactive
启用此选项时,如果文件在指定的持续时间内没有更新,Filebeat会关闭文件句柄。如果关闭的文件再次发生变化,则会启动一台新的harvester,并在scan_frequency过去后采集最新的更改。建议将close_inactive设置为大于日志文件两次更新间隔时间的最大值。例如,如果日志文件每隔几秒更新一次,则可以安全地将close_inactive设置为1m。如果有更新频率非常不同的日志文件,则可以使用具有不同值的多个prospectors配置。将close_inactive设置为较低的值意味着文件句柄会更快关闭。但是,这具有副作用,即如果harvester关闭,则不会实时发送新的日志行。关闭文件的时间戳不取决于文件的修改时间,关闭文件的时间戳为修改文件的时间+close_inactive。例如,如果close_inactive设置为5分钟,那么在收割机读取文件的最后一行之后,5分钟的倒计时开始。您可以使用时间字符串,如2h(2小时)和5m(5分钟)。默认值是5m。

scan_frequency
指定扫描指定路径目录下是否有新的文件产生。例如,指定1以尽可能频繁地扫描目录,而不会导致Filebeat过于频繁地扫描。我们不建议将此值设置为<1秒。
如果您需要近实时发送日志行,请勿使用非常低的scan_frequency,但应调整close_inactive,以便文件处理程序保持打开状态并持续轮询您的文件。
默认设置是10秒。
注意区分backoff

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大学中大德指什么 驾考各科通过率是多少 驾考全部一次过的比例 驾考宝典科目一通过率多少 驾考宝典通过率怎么算的 .js 文件和 .mjs 文件的区别 .js是什么文 苹果13在哪切换4G网络 苹果13怎么把5g换成4g?苹果13设置4g网络方法介绍 iphone13如何更改网络信号 iphone13手机5G设置成4G教程 结合springboot搭建日志采集系统EFK 健康运动方式 运动健身建议 我想问问华为手机截屏在哪里设置 拿别人肖像做表情包犯法吗 一个手机号登录了两个,如何找到老?密码忘了 请问一下怎么把马赛克图片复原 一个手机号绑定了两个该怎么把原先的找回? 本人买新华保险十年一次交清3万请问2年能退多少本金 我一个手机号注册了2个微信,但是其中一个密码忘记了,怎么登陆? 我用一个号码,创造了两个,现在小号密码忘记了,怎么找回? TMA的全部 也发我吧qqssis@163.com 浅肥伤根什么意思。 三岁宝宝营养不良挑食会有什么后果呢?如何让宝宝不挑食呢? 车前草的吃法 车前草怎样吃 静态心率计算方法 一年级课外书有哪些推荐 关于一年级课外书有哪些推荐 如果考上研了,但是大四有挂科怎么办? 空调弗没有在哪里买呀 空调的氟不知在哪里可买到 洪桐被我国誉为什麼名称 快乐成长六年级作文 卖瓜犯法吗? 卖瓜犯法吗 李老汉卖瓜 膝盖一弯就疼怎么回事 2020年新能源好车一览,众多好车中,你最喜欢哪款? 华菱钢铁股票历史价?华菱钢铁股票趋势行情?华菱钢铁要跌到什么时候? 2020年冷门且重磅的新能源汽车盘点,哪几款比较值得关注? 华菱钢铁还有行情吗?华菱钢铁股最新价?华菱钢铁要跌多少钱? 沙滩的滩繁体字 孕晚期腿酸是要生了吗 怀孕37+5腰疼腿酸是宝宝入盆还是要生了? 二胎36周入盆后腰痛是快生了吗 卡萨帝银河系列如何使用遥控器设定光感护眠功能 微星P43主板蜂鸣器三声短响是什么意思 我家台式机开不了机了。 开机时蜂鸣器响三声,一长两短。 我家显卡是280X,买了不到一个月,电源线 谁被提名美国驻澳大使? 红军长征的意义是什么? 红军长征的意义是什么