1. 程式人生 > 其它 >記一次日誌框架使用不當的事故

記一次日誌框架使用不當的事故

事故以及原因排查

上午運維的同事告訴我某個系統登入不進了。趕緊測試了一下,然後就連線到伺服器排查具體原因。
jps 一看 服務全部都掛了,根本沒有在執行的。
趕緊看日誌 ,發現有一個服務 logback 歸檔了大量的錯誤日誌。一個100M 一天300個 週末這兩天 到週一早上剛好把硬碟空間撐滿了。

df -h 檢視有一個掛載點確實滿了
然後 使用 du -h --max-depth = 1 檢視具體目錄,可以看到有一個目錄155G

大概知道了 肯定是大量的異常日誌引起的磁碟空間不足,導致虛擬機器執行異常,進而所有的服務全部中止。
然後,刪除一部分的日誌,將其他服務重啟,發現沒有問題,就暫時給運維答覆了。

問題解決

原因分析

之所以列印大量的異常日誌,是因為一個jar用於訂閱kafka叢集的資料 並持久化到本地資料庫,偶爾會有一點異常,問題不大,不過是一些SQL欄位的編碼問題。但是這次訂閱過來的資料 ,轉換成SQL語句時,發現在本地表結構中缺少一些相應欄位,也就是資料提供方又又又加欄位了。導致所有的SQL 全部執行異常,再加上資料還會重試。這就導致歸檔了大量的異常日誌。

解決辦法

這裡使用的是logback 日誌框架,在logback-spring.xml中新增,

指定最大值,那麼當日志文件超過10GB時,就會覆蓋原來的日誌檔案。
以下是測試 1MB 每個日誌檔案,總量 10MB,當超過10MB就會從1開始覆蓋。

接著就是給本地的表結構新增缺失欄位,重啟服務了。

有疑問,可以留言。