今天突然收到服務器告警磁盤快滿了,當時還是比較驚訝,因為服務日志我配置了大小和個數(shù)限制,鏡像和系統(tǒng)日志我也設置了定時清理。
才運行兩個月怎么這么快就要滿了,然后馬上登錄了其中一臺服務器排查,發(fā)現(xiàn)一些運行比較久的服務的容器占用了很大一部分容量,有一些服務容器甚至超過了10G。
最終確定罪魁禍首就是微服務的日志,這個是運行了兩個多月的部分服務日志截圖:
但是我記得我很早之前就對日志配置優(yōu)化了。
開發(fā)默認配置是下圖這樣的,保留365天,每個文件不超過100MB。
因為本身我們有日志系統(tǒng)采集存儲,所以服務器沒必要保留那么久的日志。我配置中心的日志配置是:
logging: level: root: INFO file: max-size: 50MB max-history: 3
只保留3天的,每個文件50MB。
但是從現(xiàn)在日志文件數(shù)量來看,我的配置沒有生效,因為當初配置以后也沒有測試。
這個不得不吐槽一下SpringBoot的配置,很多配置不統(tǒng)一,不同的版本也有可能不一樣,有的可能是駝峰格式,有的可能是'-'連接符。
但是這個logback的日志配置,網(wǎng)上找了好多文檔,當然大部分都是復制粘貼的,但都說SpringBoot1.5-SpringBoot2.4是這樣配置的。
于是我把max-size改成了10KB,再次測試,依然不生效。
最后讓開發(fā)看了下logging相關的配置,根本就不支持logging.file的配置,level的配置是支持的。
但測試直接修改logback-spring.xml的maxFileSize為10KB就生效的。
出現(xiàn)這種情況的原因,可能是SpringBoot(1.5.22)版本太低,或者logback(1.1.11)依賴版本太低了,再或者可能根本就不是logging.file.xxx這樣配置的。
但是沒有找到相關的文檔得以驗證。
難道幾十個微服務,我要每個服務去改logback-spring.xml文件嗎?
最后綜合考慮了下,只能在build之前,通過sed替換下logback-spring.xml的maxFileSize和maxHistory。
我也去看了下SpringBoot官網(wǎng)的日志配置,SpringBoot2.4以后又發(fā)生了變化,如下: