也无风雨也无qing

filebeat导致磁盘空间不足

1.一次生产的小问题,应用上线没多久就收到磁盘空间不足的告警,排查发现是日志的磁盘,停了filebeat进程,空间立刻就降下来了。

2.这是filebeat的一个典型问题,对于每个采集的文件,filebeat都会启动一个harvest来提供读取和监控变化,并写到位移(注册)文件;如果这期间文件被删除,filebeat是不会释放该文件句柄的,从而导致磁盘空间持续增长,尤其是日质量大的时候。

3.首先和开发确定日志轮转策略及规律:

策略:logback中的FixedWindowRollingPolicy

规律:日志的文件数量保持为20个,每个文件大小最多为100M。其中最后一个文件xxx.20.log会删除。

通过资料查询,了接到该策略的逻辑是这样的:首先会生成foo.log,当其到达100M后,会重命名为foo.1.log,然后再创建一个新的foo.log;当再次轮转的时候,仍然是新创建一个新的foo.log,将旧的foo.log 重命名为foo.1.log,将第一个foo.1.log重命名成foo.2.log....以此类推,直到最后第foo.20.log。再次轮转前面都会变成foo.N+1.log,存在的foo.20.log将删除。

官方解释:

源码:

两种方式均不难理解其逻辑。

4.确定问题后该想解决办法了,filebeat的配置文件参数close_inactive控制着句柄释放时间,最终商讨后,定为close_inactive: 5m 。这个主要看应用日志量大小,如果极短的时间内,日志已经轮转到xx.20.log 。并且还在疯狂的轮转,删除,那么5分钟内还是可能会引发文件系统资源问题。 

 

posted on 2020-12-08 16:17  也无风雨也无qing  阅读(586)  评论(0编辑  收藏  举报

导航