博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
filebeat占用文件句柄磁盘满
阅读量:6027 次
发布时间:2019-06-20

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

filebeat作为日志采集客户端,相比较于java编写的fluent,有着低功耗的特性。但在一些极端情况下,忽视filebeat的一些特性配置,可能会带来灾难。之前发过一篇,今天再说下filebeat占用文件句柄、耗费主机磁盘甚至导致磁盘满的案例。

案例1: 某某通信日志系统建设

案例描述:通信公司A日志量很大,需要搭建一套自己的日志管理系统,方式是基于ELK做,日志采集agent使用filebeat(5.3.2)。系统数据规模是400+esc,日增2T。主机端部署了filebeat后,12小时内所有主机触发磁盘使用率告警。排查后发现,filebeat持有大量被deleted的文件句柄不释放,把filebeat进程停掉后磁盘告警恢复,被占用的deleted文件句柄被释放。故障现象见下图:

3adee7eaa8327eaff85ce3f61e35fd2348c897b3

排查过程:

1.检查filebeat日志,发现日志里打了大量的io timeout,表明日志传输受阻,可能日志的生产速度>>采集速度;

2.检查filebeat的registry文件,发现registry里累积了超过1000+没有传输完成的文件;

3.检查所采集文件的滚动策略,约10s钟滚动切换一次,test.log->test.20180816.log;

4.发现宿主机配置crontab每分钟清理所有已被滚动不再更新的日志如test.20180816.log;

结论:

filebeat所采集的日志量大切滚动迅速,filebeat未能及时发送所采集的日志,未传输完成的日志文件的句柄被filebeat长期持有直到传输完成,如此以来原有crontab清理日志的机制失效,加上宿主机的磁盘本来就不富裕,累积一定事件后触发磁盘使用率告警。

根因分析:

默认配置下filebeat对日志的采集是贪心的,只要发现了日志就会坚持把日志采集完,否则会永久持有文件句柄不会“放手”,即使文件被删除。

解决方案:

1. 优化filebeat的配置项, 涉及到的filebeat配置项如下:

### State options # Files for the modification data is older then clean_inactive the state from the registry is removed # By default this is disabled. #clean_inactive: 0 # Removes the state for file which cannot be found on disk anymore immediately #clean_removed: true # Close timeout closes the harvester after the predefined time. # This is independent if the harvester did finish reading the file or not. # By default this option is disabled. # Note: Potential data loss. Make sure to read and understand the docs for this option. #close_timeout: 0 # Defines if prospectors is enabled #enabled: true

(1)close_inactive: 1m

       没有新日志采集后多长时间关闭文件句柄,默认5分钟,设置成1分钟,加快文件句柄关闭;

(2)close_timeout: 3h

       传输了3h后荏没有传输完成的话就强行关闭文件句柄,这个配置项是解决以上案例问题的key point;

       注意了,开了这个配置项旨在避免以上案例的问题,但是有丢数据的风险哦。鱼与熊掌不可兼得也。

(3)clean_inactive: 72h

        这个配置项也应该配置上,默认值是0表示不清理,不清理的意思是采集过的文件描述在registry文件里永不清理,在运行一段时间后,registry会变大,可能会带来问题。

(4)ignore_older: 70h

        设置了clean_inactive后就需要设置ignore_older,且要保证ignore_older < clean_inactive

完美收官!下期再见!

转载地址:http://fxhqx.baihongyu.com/

你可能感兴趣的文章
beetl 和 shrio 结合
查看>>
相对/绝对路径,cd命令,mkdir/rmdir命令,rm命令
查看>>
tomcat中web.xml各配置项的意义
查看>>
Nodejs学习笔记(二):《node.js开发指南》代码中需要注意的几点
查看>>
Ztree异步加载自动展开节点
查看>>
反射操作公共成员变量
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>
学校宿舍的深夜之思考
查看>>
VB.NET 生成DBF文件
查看>>
编译安装nginx 1.9.15
查看>>
我的友情链接
查看>>
新的开始~~~
查看>>
字符串的扩展
查看>>
存储过程中调用webservice
查看>>
神奇语言 python 初识函数
查看>>
Windows安装Composer出现【Composer Security Warning】警告
查看>>
四 指针与数组 五 函数
查看>>
硬盘空间满了
查看>>
dutacm.club Water Problem(矩阵快速幂)
查看>>
深入JVM内核--GC算法和种类
查看>>