今天突然收到服务器告警磁盘快满了,当时还是比较惊讶,因为服务日志我配置了大小和个数限制,镜像和系统日志我也设置了定时清理。
才运行两个月怎么这么快就要满了,然后马上登录了其中一台服务器排查,发现一些运行比较久的服务的容器占用了很大一部分容量,有一些服务容器甚至超过了10G。
最终确定罪魁祸首就是微服务的日志,这个是运行了两个多月的部分服务日志截图:
但是我记得我很早之前就对日志配置优化了。
开发默认配置是下图这样的,保留365天,每个文件不超过100MB。
因为本身我们有日志系统采集存储,所以服务器没必要保留那么久的日志。我配置中心的日志配置是:
logging: level: root: INFO file: max-size: 50MB max-history: 3
只保留3天的,每个文件50MB。
但是从现在日志文件数量来看,我的配置没有生效,因为当初配置以后也没有测试。
这个不得不吐槽一下SpringBoot的配置,很多配置不统一,不同的版本也有可能不一样,有的可能是驼峰格式,有的可能是'-'连接符。
但是这个logback的日志配置,网上找了好多文档,当然大部分都是复制粘贴的,但都说SpringBoot1.5-SpringBoot2.4是这样配置的。
于是我把max-size改成了10KB,再次测试,依然不生效。
最后让开发看了下logging相关的配置,根本就不支持logging.file的配置,level的配置是支持的。
但测试直接修改logback-spring.xml的maxFileSize为10KB就生效的。
出现这种情况的原因,可能是SpringBoot(1.5.22)版本太低,或者logback(1.1.11)依赖版本太低了,再或者可能根本就不是logging.file.xxx这样配置的。
但是没有找到相关的文档得以验证。
难道几十个微服务,我要每个服务去改logback-spring.xml文件吗?
最后综合考虑了下,只能在build之前,通过sed替换下logback-spring.xml的maxFileSize和maxHistory。
我也去看了下SpringBoot官网的日志配置,SpringBoot2.4以后又发生了变化,如下: