1. 程式人生 > >日誌輪循logrotate

日誌輪循logrotate

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