我已經使用 logrotation 多年了,從來沒有想過太多它是一個問題,直到我在 stackoverflow 上遇到了一個問題(https://stackoverflow.com/questions/1508734/disable-java-log-rotation/)有人想要停用日誌輪替。
對我來說,有手動清理構建伺服器甚至生產伺服器的經驗,因為日誌沒有輪換,光碟用完,機器突然停止運行,這一切看起來都很瘋狂,但我突然想到,也許在之後情況並不那麼明顯全部。
那麼日誌輪轉有什麼好處呢?缺點是什麼(例如可能更難以調試/分析)?您發現哪些工具對於處理輪換日誌檔案很有用?我猜是 Splunk,但是還有什麼呢?
答案1
我認為日誌輪換的好處是顯而易見的:
- 您可以輕鬆管理較小的日誌文件,而不是一個巨大的日誌文件。
- 如果您根據容量限制進行適當配置,則不會突然耗盡磁碟空間。 (
size
選項) - 可以壓縮較舊的日誌文件,使日誌文件的大小變得更小,從而節省更多的磁碟空間。 (
compress
選項)。 - 您可以以特定方式/時間輪換文件。例如,每個日誌檔案僅包含與特定日期相關的資訊。如果您知道日期,這將使搜尋變得更容易。當您不知道日期時,您可以只搜尋所有文件或其中的子集。 (
daily
,monthly
, ETC)。 - 您會自動刪除非常舊的檔案。例如,您最多可以保留 30 個檔案。 (
rotate 30
)。 - 您可以添加您喜歡的擴展名,例如輪換日期。 (
dateext
)。 - 您可以在輪換之前/之後執行特定腳本。 (
prerotate
,postrotate
)。
編輯:我向清單中添加了更多項目,並在適用時包含了選項。欲了解更多詳情,man logrotate
可洽詢。
答案2
好處:
- 如果日誌檔案很大,可以壓縮或刪除舊資料以避免佔滿磁碟
- 如果您知道某件事發生的時間,那麼 grep 一天的日誌檔案比單一永久日誌檔案更快
缺點:
- 如果要處理整個歷史記錄,則必須指定多個檔案名稱
- 有些程式不支援旋轉,如果您使用 logrotate 這樣的實用程式來旋轉它,則需要注意一些邊緣情況(例如,您必須使用截斷選項,我認為這意味著您可能會丟失少量資料)
答案3
如果您考慮一下日誌的用途,其好處就會變得更加明顯。撇開其他人和你自己提到的顯而易見的觀點不談。對我來說,最大的好處是我可以控制日誌如何輸入離線分析工具。
我有各種各樣的自製腳本用於分析日誌 - 但是,據我所知,splunk 和各種 webloog 分析工具是唯一可用的現成「標準」工具。 (不包括像fail2ban這樣的即時日誌檔案分析器)。