級別: 初級 |
電子商務架構師, IBM Developer Relations
2003 年 3 月
IBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。在本部分,我們追蹤、處理和輪循日志,以增強系統安全,收集信息。
成功地管理任何系統的關鍵之一,是要知道系統中正在發生什么事。Linux 中提供了異常日志,并且日志的細節是可配置的。
Linux 日志都以明文形式存儲,所以您不需要特殊的工具就可以搜索和閱讀它們。您還可以編寫腳本,來掃描這些日志,并基于它們的內容去自動執行某些功能。
Linux 日志存儲在 /var/log 目錄中。這里有幾個由系統維護的日志文件,但其他服務和程序也可能會把它們的日志放在這里。大多數日志只有 root 才可以讀,不過只需要修改文件的訪問權限就可以讓其他人可讀。
/var/log/messages
messages 日志是核心系統日志文件。它包含了系統啟動時的引導消息,以及系統運行時的其他狀態消息。IO 錯誤、網絡錯誤和其他系統錯誤都會記錄到這個文件中。其他信息,比如某個人的身份切換為 root,也在這里列出。如果服務正在運行,比如 DHCP 服務器,您可以在 messages 文件中觀察它的活動。通常,/var/log/messages 是您在做故障診斷時首先要查看的文件。
/var/log/XFree86.0.log
這個日志記錄的是 Xfree86 Xwindows 服務器最后一次執行的結果。如果您在啟動到圖形模式時遇到了問題,一般情況從這個文件中會找到失敗的原因。
其他日志
根據您的 Linux 發行版本以及您所運行的服務和應用程序的不同,/var/log 目錄下還會有其他日志文件。例如,可能會有與郵件服務器、資源共享、自動任務等相關的日志。
準備好了就開始輪循
您將看到,/var/log 目錄下有一些文件以一個數字結尾,這些是已輪循的歸檔文件。日志文件會變得特別大,特別笨重。Linux 提供了一個命令來輪循這些日志,以使您的當前日志信息不會淹沒在舊的無關信息之中。 logrotate
通常是定時自動運行的,但是也可以手工運行。當執行后,logrotate 將取得當前版本的日志文件,然后在這個文件名最后附加一個“.1”。其他更早輪循的文件為“.2”、“.3”,依次類推。文件名后的數字越大,日志就越老。
您可以通過編輯 /etc/logrotate.conf 文件來配置 logrotate
的自動行為。通過 man logrotate
來學習 logrotate
的全部細節。
日志工具
任何文本工具都可以用來處理日志文件。下面是一些特別有用的工具。
dmesg
使用 dmesg
命令可以快速查看最后一次系統引導的引導日志。通常它的內容會很多,所以您往往會希望將其通過管道傳輸到一個閱讀器。
|
上面的命令將以分頁的方式顯示引導信息。
tail
有時,當某些行為發生時,您會希望密切關注一個日志文件。 Tail
命令設計用于顯示文本文件的最后幾行。使用 -f
開關,當日志增加新的內容時, tail
將繼續顯示新的輸出。
tail -f /var/log/messages
上面的命令將顯示 /var/log/messages 文件的最后 10 行,然后繼續監控那個文件,并輸出新的行為。要停止 tail -f
命令,使用 Ctrl + C 來中止進程。
more More
的工作方式與 DOS 版本相同。您可以將它指向一個文件,或者通過它以管道輸出信息,以分頁的方式來查看信息。例如,以分頁方式顯示 Xfree86 啟動日志文件的內容:
more /var/log/XFree86.0.log
使用“q”或者 [Ctrl]-C 來停止查看文件。
less
Less 是另一個文本閱讀器,不過它還允許在文件中滾動瀏覽以及檢索信息。
less /var/log/messages
上面的命令將顯示 /var/log/messages 文件的內容。使用“q”來停止查看文件。使用“h”來獲得 less
的使用幫助。
logger
您可能會希望將自己的消息也記錄到日志文件。您可以只是將日志消息附加到恰當的文本文件,但是您必須得套用日志信息格式。同樣,如果日志系統被定制,您還將不得不修改您的代碼。l logger
命令使您可以將自己的消息發送到日志工具。在腳本中使用它來提供關于執行和錯誤的消息。
定制的日志
有兩個服務,或者稱之為后臺程序,在控制日志,分別是 klogd
和 syslogd
。 klogd
只處理內核消息, syslogd
處理其他系統消息,比如應用程序。您可以通過編輯 /et/syslog.conf 和 /etc/sysconfig/syslog 來配置它們的行為。完全定制日志超出了本文的范圍,不過在本文最后的 參考資料 列表中可以找到詳細的資料。您也可以查看 /etc/syslogd.conf 的 man 頁面來進一步學習。
本質上,軟件所產生的每一條消息都提供一些信息用于確定消息是從哪里來的以及這個消息是什么。/etc/syslog.conf 文件允許您來指定如何處理那種類型的消息。您可以將它轉儲到消息文件,也可以將它轉儲到一個定制的文件。您可以將它發送到遠程的主機,由遠程主機來根據其自己的 syslogd 配置來處理它。遠程日志是一個非常好的安全功能。通過將您的日志放置到遠程系統中,您可以防止有人通過改變日志文件來掩飾其蹤跡。
下面是取自 man /etc/syslog.conf
頁面中的一個定制日志的例子:
|
第一個規則將所有內核消息定向到 /var/adm/kernel 文件。
第二個語句將所有優先級為 crit 或者更高的內核消息定向到一個名為 finlandia 的遠程主機。這是有用的,因為如果主機崩潰以及磁盤錯誤無法恢復,您將無法讀取存儲的消息。如果那些消息同時在遠程主機上也存在,您就依然可以找出崩潰的原因。
第三個規則將這些消息定向到實際的控制臺,這樣,在這臺機器上工作的人也可以看到它們。
第四行告訴 syslogd 將所有優先級為 info 到 warning 的內核消息保存到 /var/adm/kernel-info 文件。所有優先級為 err 以及更高的消息不包括在內。
像這種定制日志的能力為 Linux 環境提供了極大的靈活性與可控制性。
Webmin 中的日志配置
Webmin 有一個用于操作日志文件的模塊。
顯示了所有配置的日志文件。點擊一個日志文件來編輯它的配置。
或者您可以點擊 View 來查看日志文件的內容。
在控制臺中查看日志文件 |
Webmin 模塊與 /etc/syslog.conf 文件相關聯,因此您對其中一個所做的修改會影響另一個。
您生活中的日志
Linux 中的日志文件對于系統的故障診斷和維護來說至關重要。Linux 日志記錄到文本文件,所以不需要專門的工具來查看這些文件。文本文件也容易用于定制腳本和程序。
日志被輪循,以避免變得過大,同時可以將當前信息與老的數據相分離。日志輪循是可配置的。
日志是高度可配置的,為了安全和備份,日志甚至可以存儲到單獨的系統中。您可以讓自己的腳本和程序產生系統日志消息,這些消息將被 syslogd 后臺進程識別出并進行處理。
- 您可以參閱本文在 developerWorks 全球站點上的 英文原文.
- 閱讀 Windows 到 Linux 之旅系列文章的其他部分( developerWorks, 2003 年 11 月)。
- syslog.conf 的 man 頁中有關于如何配置日志的極好的描述。要訪問它,請輸入命令
info syslog.conf
。
- syslogd 的 man 頁很好地概括描述了 syslogd 的工作原理,包括安全的問題。請輸入命令
info syslogd
。
- IBM developerWorks LPI certification 101 exam prep, Part 2: Basic administration 介紹了 shell 管道、重定向和本文處理命令。
- IBM developerWorks 教程“ LPI certification 101 exam prep, Part 4: Advanced administration”中也介紹了使用系統日志。
- IBM developerWorks 文章“ Addressing security issues in Linux”將幫您初步了解 Linux 安全。
- 在 IBM developerWorks 文章“ 理解 Linux 配置文件”中您將發現更多關于.config 文件的資料。
- “ Linux 用戶技術 FAQ” ( developerWorks, 2001 年 7 月) 也可以幫助您順利地從 Windows 過渡到 Linux。
- 要開始在 Linux 上使用 IBM 的軟件產品, 為您的 Linux 應用開發加油提速 將為您提供最好的參考資料。您可以找到關于 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多種應用軟件的安裝提示和參考資料。您還可以登錄獲得免費的 Linux Software Evaluation Kit,里面有試用軟件和培訓資料。
- 在 developerWorks Linux 專區可以找到更多 為 Linux 開發者準備的參考資料。
關于作者 Chris Walden 是位于德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構師,該公司為 IBM 商業伙伴提供教育、實現和咨詢。他致力于 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施服務器的各個領域,包括混合平臺用戶環境下的文件、打印以及其他應用服務等。Chris 有 10 年的計算機行業經驗,從現場支持到 Web 應用開發和顧問,各個領域他都曾涉足。您可以通過 cmwalden-at-us.ibm.com 與 Chris 聯系。 |