天天看點

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

最近線上系統跑的業務量有點上量,雖然系統性能是穩定的,但是卻有另外一個問題,那就是日志檔案越來越大,占用的磁盤空間就越來越大,這樣經常會收到告警資訊,不得不手動去清理這些日志檔案,這樣手動維護的服務是件很糟糕的事情,不過有這樣一個工具,能夠釋放你的雙手,讓你不再為日志檔案越來月膨脹進行苦惱,那就是logrotate!

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

許多Linux的發行版都會預設裝有logrotate日志管理工具,如果沒有可以通過指令yum -y install logrotate crontabs進行安裝,安裝完成後會有一個主配置檔案logrotate.conf和一個配置目錄logrotate.d,這樣的結構是不似曾相識呀,對,就是和nginx的配置檔案相似,來看一看它的目錄結構:

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

我們輸入man logrotate檢視一些幫助資訊,其中有一些示例如下:

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

首先要解釋一下這些配置資訊:

1、monthly:日志檔案将按月輪循。其它可用值為'daily','weekly'或者'yearly'。

2、rotate 5:一次将存儲5個歸檔日志。對于第六個歸檔,時間最久的歸檔将被删除。

3、compress:在輪循任務完成後,已輪循的歸檔将使用gzip進行壓縮。

4、delaycompress:總是與compress選項一起用,delaycompress選項訓示logrotate不要将最近的歸檔壓縮,壓縮将在下一次輪循周期進行。這在你或任何軟體仍然需要讀取最新歸檔時很有用。

5、missingok:在日志輪循期間,任何錯誤将被忽略,例如“檔案無法找到”之類的錯誤。

6、notifempty:如果日志檔案為空,輪循不會進行。

7、create 644 root root:以指定的權限建立全新的日志檔案,同時logrotate也會重命名原始日志檔案。

8、postrotate/endscript:在所有其它指令完成後,postrotate和endscript裡面指定的指令将被執行。在這種情況下,rsyslogd 程序将立即再次讀取其配置并繼續運作。

9、size:指定檔案達到多少m時進行切割

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

知道了logrotate的配置檔案裡面的配置資訊,下面就來動手試一試吧!

首先建立一個空的日志檔案:

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

把這個日志檔案用logrotate管理起來,在/etc/logrotate.d/檔案夾下配置管理檔案:

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

現在配置就是檔案大于5m時進行切割,通過指令給test.log增加大小:head -c 10M < /dev/urandom > /var/log/testlog/test.log

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

通過指令logrotate -vf /etc/logrotate.d/test 手動執行一下剛才配置的切割規則,看生效了沒有:

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案
linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案

這樣,這個日志檔案就根據我們配置的規則,被logrotate管理起來了,不過以上的例子都是小小的測試一下,更多的功能和配置,請輸入man logrotate進行參照和測試!

linux 日志按大小切割_日志切割工具logrotate,幫你管理你的日志檔案