2007年11月5日 星期一

系統日誌 messages 與 syslog.conf

在 Linux 中,有多種日誌檔案,包含各個 Server 的日誌檔,清楚的理解各個日誌檔的功能及作用是很有必要的,但眾多日誌檔中,最重要的莫過於系統的日誌檔,messages (red hat 系列),它記錄著系統的各種運行日誌,包含安全,認證,郵件,新聞等等。而 syslog.conf 檔則控制著 messages 記載行為。
以下擷取 messages 片段,來說明 messages 記錄方式
時間           主機名稱   程序名稱       事件描述
Nov 4 05:10:44 linuxdiary syslogd 1.4.1: restart.
以下擷取 syslog.conf 片段,來說明 syslog.conf 使用的語法
Facility(工具).Priority(優先等級)          Action(日誌檔)
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
Facility 是指系統常用的工具,可以逗號來增加多個 Facility,已知的 Facility 可由下表得知。
名稱 說明
user 由使用者程序產生的訊息,此訊息是程式預設的,故在檔案中,不包含於 facilities 的設定中。
kern 由 kernel 產生的訊息。
mail 郵件系統的訊息。
daemon 系統 daemon 所產生的訊息,但大部分的 daemon 有自己的日誌。
auth,authpriv 認證系統的訊息,login,su,getty 等。
news 指的是 USENET 新聞群組系統。
uucp 指的是UUCP(UNIX 間複製協議) 系統,已經很少再用 syslog 機制。
cron 指的是由 cron 與 at 兩支程式所產生的訊息。
local0-7
使用者自訂類型,通常為遠端伺服器,網路裝置。

Priority 是指每個工具發生何種事件時要記錄的優先等級。
優先等級 名稱 說明
0 emerg ( emergencies ) 系統損毀無法使用
1 alerts 必須立刻採取應對行動
2 crit ( critical ) 危急狀態
3 err ( errors ) 錯誤狀態
4 warn ( warnings ) 注意狀態
5 notice ( notifications ) 一般但重要的狀態
6 info ( informational ) 一般訊息
7 debug ( debugging ) 除錯訊息

Action 是指要記錄的地方或動作,以下是常見的寫法
Action說明
/var/log/message 記錄在 message 中
root傳訊息給該用戶
*所有用戶
@www.abc.com遠端主機
@192.168.101.1遠端主機

範例說明:
1.
*.info;mail.none;authpriv.none;cron.none        /var/log/messages  
這是 RedHat 與 Fedora 中常見的寫法,他們習慣將多種日誌放置於 /var/log/message 中,在範例中,*.info 表示去收集了所有已知且優先等級為 info 以上(即包含 notice,warn...等) 的 facility日誌 。要注意的是分號將幾個 facility 分開,且以 none 表明,不收集 mail、authpriv、cron 等程式產生的訊息。
2.
*.debug                                          /var/log/messages
如果想讓範例1 顯示的紀錄的方式更敏感,可使用範例2 的寫法,因為它將紀錄所有 Facility debug 以上各個優先等級的事件,等同於使用 (*.*),將更適合系統問題排除。
3.
 *.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
範例3 中提供更進階的寫法,如要用多行表示時,接續行的結尾必須加入斜線,表示下行的敘述是與本行連接的。=debug 其中 「= 」表示僅針對 debug 等級的訊息紀錄,而不是該等級以上的訊息都記錄;「-」減號代表訊息暫存於記憶體中,等到一定的量再回存於檔案中,可提高 syslog 的執行效率。
4.
 kern.info;kern.!err /var/adm/kernel
範例4 中出現 !,表示將 kern 中,優先等級高於或等於「info」,但「error」除外的訊息記錄至檔案 /var/adm/kernel 中。

沒有留言: