系統日誌rsyslog基本概念

日誌檔(log)記錄著系統訊息、網路訊息及歷史事件,對於系統管理者來說是很重要的檔案,是系統除錯不可缺少的重要武器。

設定檔(/etc/rsyslog.conf)內定義著這些日誌檔的規則(Rules),這些規則是由Selectors所組成的Actions,參考以下表格。

註:Use a dash mark (-) as a prefix of the file path you specified if you want to omit syncing the desired log file after every syslog message is generated.(參考文章

本人拿其中兩條規則來解譯:
  1. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  2. 所有服務在Security Level 6 以上的訊息;除了mail訊息;除了登入認證訊息;除了自動排程訊息 都記錄在/var/log/messages  //;分號表示後者條件可以覆蓋前者條件,例如mail.info會被mail.none所覆蓋。那麼為何要排除mail、authpriv及cron的訊息呢?請參考表格,因為他們都已經另外有日誌檔。

  3. *.emerg *
  4. 只要有服務發生emerg的訊息(Security Level 0、最嚴重的等級),立刻通知在線上的使用者,讓使用者來通知管理員修復服務。
補充:若以*.debug方式記錄訊息,那麼資料量將非常龐大。

若不希望日誌檔內容過於龐大,可使用日誌輪替(logrotate),依照檔案大小或週期性的產生數個日誌檔。
日誌輪替主設定檔範例:/etc/logrotate.conf # rotate log files weekly
weekly  //每個禮拜輪替一次

# keep 4 weeks worth of backlogs
rotate 4  //保留四個日誌檔

# create new (empty) log files after rotating old ones
create  //原有日誌檔先被更名,再產生新的日誌檔。例如:vsftpd.log更名成vsftpd.log-20130101,再產生一個vsfptd.log的日誌檔。

# use date as a suffix of the rotated file
dateext  //被更名的日誌檔加上日期,例如vsftpd.log-20130101

# uncomment this if you want your log files compressed
compress  //被更名的日誌檔進行壓縮

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {  //記錄使用者login及logout時間,指令last會查詢此檔案。
monthly
create 0664 root utmp
minsize 1M  //若有註明檔案大小,則會忽略時間參數monthly
rotate 1
}

/var/log/btmp {  //記錄嘗試登入失敗的使用者名稱及時間,指令lastb會查詢此檔案。
missingok
monthly
create 0600 root utmp
rotate 1
}