logrotate簡介:node
logrotate軟件是一個十分好使的日誌管理工具,它能夠自動對日誌進行截斷(或輪循)、壓縮以及刪除舊的日誌文件。用於非分隔日誌,刪除舊的日誌文件,並建立新的日誌文件,起到「轉儲做用」,能夠爲系統節省磁盤空間。正則表達式
配置路徑:分佈式
/etc目錄下,logrotate.conf是logrotate的配置文件,不須要作修改,日誌設置在logrotate.d目錄下,這裏個人系統中已經添加了ceph分佈式存儲與haproxy高可用的日誌配置。ide
logrotate.conf配置解釋:工具
weekly #默認每週執行一第二天志輪詢post
rotate 4 #默認保留4個日誌文件命令行
create #自動建立新的日誌文件,新的文件和原來的文件具備相同的權限日誌
dateext #切割後的日誌文件以當前日期爲結尾,如xxx.log-2018-2-28orm
include /etc/logrotate.d #將logrotate.d目錄裏的文件加載進來blog
/var/log/wtmp { #針對wtmp日誌設定的參數
monthly #每月切割一次,取代默認的一週
create 0664 root utmp #新建日誌權限爲0664,屬主爲root,屬組爲utmp
minsize 1M #文件大小超過一週後纔會切割
rotate 1 #只保留一個日誌
}
/var/log/btmp {
missingok #若是日誌丟失,不報錯繼續滾動下一個日誌
monthly #每月切割一次,取代默認的一週
create 0600 root utmp #新建日誌權限爲0664,屬主爲root,屬組爲utmp
rotate 1 #只保留一個日誌
}
logrotate經常使用參數:
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
咱們須要配置一個日誌管理的話,在logrotate.d路徑下建立文件便可,文件內容書寫格式與logrotate.conf一致,下面看幾個例子:
1.
2.
從這倆個例子能夠看出來,這裏面的參數在上面都是有解釋的,因此咱們在使用的時候只須要找到合適的參數寫入就OK了。
另外從第二個例子能夠看到,日誌文件的匹配其實是能夠正則表達式的,對於某一個路徑下的log日誌進行統一的管理,這能夠說是日誌管理使用的一個簡單使用了。
logrotate的查錯:
這是按照上面的方式寫好配置文檔,咱們如何可以肯定logrotate的設置是否生效了呢。看日誌是一個不能少的方式:
logrotate自身的日誌一般存放於/var/lib/logrotate/status目錄。若是處於排障目的,咱們想要logrotate記錄到任何指定的文件,咱們能夠指定像下面這樣從命令行指定。
# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file
其次運行logrotate:
logrotate能夠在任什麼時候候從命令行手動調用。
要調用爲/etc/lograte.d/下配置的全部日誌調用logrotate:
# logrotate /etc/logrotate.conf
要爲某個特定的配置調用logrotate:
# logrotate /etc/logrotate.d/log-file
還能夠演練:
排障過程當中的最佳選擇是使用‘-d’選項以預演方式運行logrotate。要進行驗證,不用實際輪循任何日誌文件,能夠模擬演練日誌輪循並顯示其輸出。
# logrotate -d /etc/logrotate.d/log-file