日誌輪循logrotate
阿新 • • 發佈:2018-06-18
HA 參數 ssi 軟件包 輪詢 iss 占滿 默認 日誌類 日誌輪循(輪轉):
logrotate 日誌輪轉,切割,備份,歸檔
1、避免日誌過大占滿/var/log的文件系統。
2、方便日誌查看。
3、 將丟棄系統中最舊的日誌文件,以節省空間
4、 logrotate本身不是系統守護進程,它是通過計劃任務crond每天執行
1、確認軟件包是否安裝
# rpm -q logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf 主配置文件
/etc/logrotate.d 主目錄
/usr/sbin/logrotate 二進制命令
2、了解配置文件
# cat /etc/logrotate.conf ---->主配置文件
# rotate log files weekly
weekly ---->以7天為一個周期(每周輪轉)
rotate 4 ---->每4周備份日誌文件(保留4份日誌文件)
create ---->當老的轉儲文件被歸檔後,創建一個新的空的轉儲文件重新記錄,權限和原來的轉儲文件權限一樣.
dateext ---->用日期來做輪轉之後的文件的後綴名
compress ---->指定不壓縮轉儲文件,如需壓縮去掉註釋就可以了.通過gzip壓縮
include /etc/logrotate.d #加載外部目錄
# no packages own wtmp and btmp -- we‘ll rotate them here
/var/log/wtmp {
monthly 表示此文件是每月輪轉,而不會用到上面的每周輪轉
create 0664 root utmp 輪轉之後創建新文件,權限是0664,屬於root用戶和utmp組
minsize 1M 文件大於1M,而且周期到了,才會輪轉
rotate 1 保留1分日誌文件,每1個月備份一次日誌文件
}
/var/log/btmp {
missingok 如果日誌文件不存在,不報錯
monthly
create 0600 root utmp
rotate 1
}
# vim /etc/logrotate.d/syslog ---->子配置文件(沒有指定的參數都會以默認方式)
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts 不管有多少個文件待輪轉,prerotate 和 postrotate 代碼只執行一次
postrotate 輪轉完後執行postrotate 和 endscript 之間的shell代碼
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true 這一句話表示輪轉後對rsyslog的pid進行刷新(但pid其實不變)
endscript
}
強制輪轉:# logrotate -f /etc/logrotate.conf
說明:先寫日誌再刷新PID;刷新之前寫的日誌文件是老的日誌文件。
先刷新PID再寫日誌;日誌就會寫到新的日誌文件裏。
常用的指令解釋,這些指令都可以在man logrotate 中找得到。
daily 指定轉儲周期為每天
monthly 指定轉儲周期為每月
weekly <-- 每周輪轉一次(monthly)
rotate 4 <-- 同一個文件最多輪轉4次,4次之後就刪除該文件
create 0664 root utmp <-- 輪轉之後創建新文件,權限是0664,屬於root用戶和utmp組
dateext <-- 用日期來做輪轉之後的文件的後綴名
compress <-- 用gzip對輪轉後的日誌進行壓縮
minsize 30K <-- 文件大於30K,而且周期到了,才會輪轉
size 30k <-- 文件必須大於30K才會輪轉,而且文件只要大於30K就會輪轉
不管周期是否已到
missingok <-- 如果日誌文件不存在,不報錯
notifempty <-- 如果日誌文件是空的,不輪轉
delaycompress <-- 下一次輪轉的時候才壓縮
sharedscripts <-- 不管有多少個文件待輪轉,prerotate 和 postrotate 代碼只執行一次
prerotate <-- 如果符合輪轉的條件
則在輪轉之前執行prerotate和endscript 之間的shell代碼
postrotate <-- 輪轉完後執行postrotate 和 endscript 之間的shell代碼
給日誌文件添加a 屬性,這樣就只能往文件尾部追加數據,而不能修改已有的數據,也不能刪除文件。
添加a屬性:
chattr +a filename
刪除a屬性:
chattr -a filename
查看隱藏屬性:
lsattr filename
練習1:將authpriv設備日誌記錄到/var/log/auth.log
練習2:改變應用程序sshd的日誌設備為local5, 並定義local5設備日誌記錄到/var/log/local5.local
練習3:
要求如下:
1. 記錄所有日誌類型的 info 級別以及大於 info 級別的信息,保存到/var/log/test,但是 mail
郵件信息,authpriv 驗證方面的信息和 cron 時間任務相關的信息除外
*.info;mail.none;authpriv.none;cron.none /var/log/test
2. /var/log/test 日誌輪詢方式為:
1> 每天輪詢一次;
2> 保留 4 個文件;
3> 以時間命名;
4> 創建與原日誌文件同名的新文件。
# cat /etc/logrotate.conf
/var/log/test {
daily
rotate 4
dateext
create 0600 root root
}
日誌輪循logrotate