2010年7月15日 星期四

使用 logrotate 來管理及備份日誌檔

做為一個系統的管理者,時時注意日誌檔是一個非常重要的工作。而日誌檔的備份工作也是個非常重要的,那麼在 FreeBSD 中有無自動備份日誌檔的軟體呢?

我們可以使用 /usr/local/sysutils/logrotate 來達到這個目的..

● logrotate 工作原理說明

1. logrotate 是配合 cron 來使用
2. 一般是以 daily (每日)來執行,可將定時執行的程序放在 /etc/periodic/daily/ 或是使用 crontab 來做
3. 在 logrotate 中我們可設定 daily weekly 或是 monthly 的時間間隔(可視日誌檔的大小及性質來設定)

4. 一般在 FreeBSD 中,有些日誌檔是自動備份的,如

'console.log
'cron
'maillog
'messages
'wtmp
.....

有些則不會自動備份及壓縮,其中最大的可能就是 httpd-access.log 這個檔案了。以下我們就以這個檔案做說明

● 安裝 logrotate

# cd /usr/ports/sysutils/logrotate/
# make install

安裝後會產生以下檔案

1. /usr/local/sbin/logrotate 這個執行檔
2. /var/lib/ 這個目錄,在這個目錄中執行 logrotate 後會產生一個 logrotate.status 的報告檔案
3. logrotate 的 man file,你可用 man logrotate 來看相關用法

● 語法設定

logrotate [-f] logrotate.conf

=> -f 一般是在測試時使用,代表 force 的意思
=> logrotate.conf 代表其設定檔,這個一定要設定,檔名可自取,我們可在 /usr/local/etc/ 下設定這個檔案

● logrotate.conf 的設定說明

我們可將 logrotate.conf 放在 /usr/local/etc/ 目錄下,檔名取為 logrotate.conf 以利管理

一個典型的 logrotate.conf 如下:

errors root
compress

/var/log/httpd-access.log {
copytruncate
create 644 root wheel
weekly
rotate 7
uncompress
size=1000k
}

說明:

1. errors => 有錯誤時會 mail 一封信給 root
2. compress => 代表要使用 gzip 來壓縮
3. /var/log/http-access.log { .... } 代表一組設定
4. 在 {...} 外的表示內定值,如 compress 代表要透過 gzip 壓縮,但在 /var/log/httpd-access.log {....} 中,我們使用了 uncomress 則表示不壓縮 httpd-access.log 的備份檔
5. copytruncate => 先將日誌檔 copy 到另一個檔案儲存再清空
6. create ... => 產生一個新的 httpd-access.log 檔,644 root wheel 是這個檔案的權限設定
7. weekly 表示每個星期執行一次,另外尚有 daily 及 monthly 可用
8. rotate => 表示備份檔的數目,如 7 則最多會產生 1-7 個備份檔
9. uncompress => 不壓縮備份檔
10. size=1000k => 代表檔案大於 1000k 時就備份,另外也可使用 m

● 測試

# logrotate -f /usr/local/etc/logrotate.conf

過一會,應該會產生以下檔案

1. 在 /var/log/ 下產生 httpd-access.log.1
2. 新的(空的) httpd-access.log
3. 在 /var/lib/ 下產生一個 logrotate.ststus 的記錄檔

● 定時啟動你的 logrotate

1. 假設我們使用 /etc/periodic/daily/ (每日定時執行的設定目錄)

# cd /etc/periodic/daily

2. 編輯一個定時啟動的檔案及設定為可執行,假設檔名為 101.logrotate

# vi 101.logrotate

=> 加入以下內容並存檔

/usr/local/sbin/logrotate /usr/local/etc/logrotate.conf

=> 設為可執行

# chmod +x 101.logrotate

如此,以後只要時間一到 logrotate 就會自動備份你的日誌檔了..

1 則留言:

  1. 2021 ford escape titanium hybrid - Tiara Robotics
    The 2020 Honda titanium edc CR-V0 can titanium ore accelerate its head titanium ti s6 acceleration via the titanium hair V1's power-assisted V1 to develop titanium 170 welder advanced applications for the Honda CR-V0.

    回覆刪除