天天看點

linux自帶日志處理神器logrotate使用說明

作者:有雲轉晴

前言

在linux運維工作中,我們接觸最多的可能就是日志檔案了,但是有的日志檔案每天不會自動轉儲,時間一長log檔案就會變得很大,一來是非常占用磁盤空間,二來是想要檢視的時候非常消耗CPU資源,是以就需要将每天的log日志進行分割、壓縮、轉儲,就需要用到我們的logrotate工具

logrotate介紹

Linux系統預設安裝logrotate,預設配置檔案如下:

/etc/logrotate.conf:

主配置檔案,logrotate.d是一個目錄,該目錄裡的所有檔案都會被主動的讀入/etc/logrotate.conf中執行。

/etc/logrotate.d/:

用于存放不同程式自定義切配置設定置

logrotate 是一個 Bash 的 SHELL 腳本,可對日志檔案進行切分,并将切分後的日志放在統一目錄。

logrotate 要求 GNU bash、GNU gzip 和 GNU date。

logrotate 實用程式旨在簡化在生成大量日志檔案的系統上對日志檔案的管理。允許自動循環壓縮,删除和郵寄日志檔案。可以将 logrotate 設定為每小時、每天、每周、每月或當日志檔案達到一定大小時處理日志檔案。

logrotate使用

現在我有一個使用者是mrcpstream

會在此目錄/home/mrcpstream/cin/log生成mrcpasr.log日志檔案,我們就需要用logrotate來處理mrcpasr.log日志檔案

一、先建立一個腳本檔案robot

vim robot #建立一個robot腳本檔案名稱可以自定義           

具體内容如下:

/home/mrcpstream/cin/log/mrcpasr.log { #日志檔案的絕對路徑
create 0644 mrcpstream ms #指定建立的檔案的權限以及所屬使用者群組
compress #通過gzip壓縮轉儲之後的日志
copytruncate #用于還在打開中的日志檔案,把目前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丢失部分日志資料。
missingok #如果日志丢失,不報錯繼續滾動下一個日志
olddir /home/mrcpstream/cin/log/bak #将舊日志存放的位置
daily #指定轉儲周期為每天
rotate 365 # 指定日志檔案删除之前轉儲的次數,0 指沒有備份,365 指保留365 個備份
dateext #使用目前日期作為命名格式
}           

以上隻是部分的參數配置

還可以有如下配置

compress 通過gzip 壓縮轉儲以後的日志
nocompress 不做gzip壓縮處理
copytruncate 用于還在打開中的日志檔案,把目前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丢失部分日志資料。
nocopytruncate 備份日志檔案不過不截斷
create mode owner group 輪轉時指定建立新檔案的屬性,如create 0777 nobody nobody
nocreate 不建立新的日志檔案
delaycompress 和compress 一起使用時,轉儲的日志檔案到下一次轉儲時才壓縮
nodelaycompress 覆寫 delaycompress 選項,轉儲同時壓縮。
missingok 如果日志丢失,不報錯繼續滾動下一個日志
errors address 專儲時的錯誤資訊發送到指定的Email 位址
ifempty 即使日志檔案為空檔案也做輪轉,這個是logrotate的預設選項。
notifempty 當日志檔案為空時,不進行輪轉
mail address 把轉儲的日志檔案發送到指定的E-mail 位址
nomail 轉儲時不發送日志檔案
olddir directory 轉儲後的日志檔案放入指定的目錄,必須和目前日志檔案在同一個檔案系統
noolddir 轉儲後的日志檔案和目前日志檔案放在同一個目錄下
sharedscripts 運作postrotate腳本,作用是在所有日志都輪轉後統一執行一次腳本。如果沒有配置這個,那麼每個日志輪轉後都會執行一次腳本
prerotate 在logrotate轉儲之前需要執行的指令,例如修改檔案的屬性等動作;必須獨立成行
postrotate 在logrotate轉儲之後需要執行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
daily 指定轉儲周期為每天
weekly 指定轉儲周期為每周
monthly 指定轉儲周期為每月
rotate count 指定日志檔案删除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext 使用目前日期作為命名格式
dateformat .%s 配合dateext使用,緊跟在下一行出現,定義檔案切割後的檔案名,必須配合dateext使用,隻支援 %Y %m %d %s 這四個參數
size(或minsize) log-size 當日志檔案到達指定的大小時才轉儲,log-size能指定bytes(預設)及KB (sizek)或MB(sizem).
當日志檔案 >= log-size 的時候就轉儲。 以下為合法格式:(其他格式的機關大小寫沒有試過)
size = 5 或 size 5 (>= 5 個位元組就轉儲)
size = 100k 或 size 100k
size = 100M 或 size 100M           

二、将robot檔案放到/etc/logrotate.d/目錄

将robot放到/etc/logrotate.d/目錄

mv robot /etc/logrotate.d/           

再将robot檔案賦予644權限

chmod 644 /etc/logrotate.d/robot           

為了驗證是否可以,可以手動執行

logrotate -vf /etc/logrotate.d/robot #手動執行檢視是否成功           

三、驗證是否成功

可以進入/home/mrcpstream/cin/log/bak 檢視是否有壓縮檔案産生

linux自帶日志處理神器logrotate使用說明

繼續閱讀