1. 程式人生 > >Linux系統故障分析與排查--日誌分析

Linux系統故障分析與排查--日誌分析

獲得 cat cron stl 文本格式 etc 服務的啟動 網絡 調試

  處理Linux系統出現的各種故障時,故障的癥狀是最先發現的,而導致這以故障的原因才是最終排除故障的關鍵。熟悉Linux系統的日誌管理,了解常見故障的分析與解決辦法,將有助於管理員快速定位故障點,“對癥下藥”及時解決各種系統問題。

一、主要日誌文件包括以下三種類型:
a.內核及系統日誌:這種日誌數據由系統服務syslog統一管理,根據其主配置文件"/etc/syslog.conf"中的設置決定將內核消息及各種系統程序消息記錄到什麽位置。系統中有相當一部分程序會把自己的日誌文件交由syslog管理,因而這些程序使用的日誌記錄也具有相似的格式。
b.用戶日誌:這種日誌數據用於記錄Linux系統用戶登錄及退出系統的相關信息,包括用戶名、登錄的終端、登錄時間、來源主機、正在使用的進程操作等。


c.程序日誌:有些應用程序運會選擇自己來獨立管理一份日誌文件(而不是交給syslog服務管理),用於記錄本程序運行過程中的各種事件信息。由於這些程序只負責管理自己的日誌文件,因此不同的程序所使用的日誌記錄格式可能會存在極大差異。


#列表查看"/var/log"目錄中的各種日誌文件及子目錄。

對於Linux系統中的一些常見日誌文件,有必要熟悉其相應的用途,這樣才能在需要的時候更快地找到問題所在,及時解決各種故障。如:
1. >/var/log/messages:記錄Linux內核消息及各種應用程序的公共日誌信息,包括啟動、IO錯誤、網絡錯誤、程序故障等。對於未使用獨立日誌文件的應用程序或服務,一般都可以從該文件獲得相關的事件記錄信息。


2. >/var/log/cron:記錄crond計劃任務產生的事件消息。
3. >/varlog/dmesg:記錄Linux系統在引導過程中的各種事件信息。
4. >/var/log/maillog:記錄進入或發出系統的電子郵件活動。
5. >/var/log/lastlog:最近幾次成功登錄事件和最後一次不成功登錄事件。
6. >/var/log/rpmpkgs:記錄系統中安裝各rpm包列表信息。
7. >/var/log/secure:記錄用戶登錄認證過程中的事件信息。
8. >/var/log/wtmp:記錄每個用戶登錄、註銷及系統啟動和停機事件。
9. >/var/log/utmp:記錄當前登錄的每個用戶的詳細信息


二、日誌文件分析
熟悉了系統中的主要日誌,我們就針對日誌文件的分析方法做了解。分析日誌文件的目地在於通過瀏覽日誌查找關鍵信息,對系統服務進行調試,判斷發生故障的原因等。這裏主要說三類日誌文件的基本格式和分析方法。
對於大多數文本格式的日誌格式(如內核及系統日誌、大多數的程序日誌),只要使用tail、more、less、cat等文本處理工具就可以查看日誌內容。而對於一些二進制格式的日誌文件(eg:用戶日誌),則需要使用相應的查詢命令。
1.內核及系統日誌:
內核及系統日誌功能主要由默認安裝的syslogd-1.4.1-39.2軟件包提供,該軟件包安裝了klogd、syslogd兩個程序,並通過syslog服務進行控制,分別用於記錄系統內核的消息和各種應用程序的消息。syslog服務所使用的配置文件為"/etc/syslog.conf"。
通常情況下,內核及大多數系統消息都被記錄到公共日誌文件"/var/log/messages"中,而其他一些程序消息被記錄到不同的文件中,日誌消息還能夠記錄到特定的存儲設備中,或者直接向用戶發送。
###查看日誌配置文件"/etc/syslog.conf‘中的內容

2.用戶日誌
在wtmp、utmp、lastlog等日誌文件中,保存了系統用戶登錄,退出等相關事件的事件消息。但是這些文件都是二進制的數據文件,不能直接使用tail、less等文本查看工具進程瀏覽,需要使用who、w、users、last和ac等用戶查詢命令來獲取日誌信息。
這裏就不再演示。
3.程序日誌
在Linux系統中,還有相當一部分應用程序並沒有使用syslog服務來管理日誌。而是由程序自己維護日誌記錄。例如,httpd網站服務程序使用兩個日誌文件access_log和error_log,一般存放在"/var/log/httpd“目錄中,分別記錄客戶訪問事件,錯誤事件,而FTP服務程序可以將與文件上傳,下載事件相關的消息記錄在xferlog文件中。由於不同應用程序的日誌記錄格式差別較大,並沒有嚴格使用統一的格式,這裏不詳解!
特例:服務器日誌分布管理策略:
鑒於日誌數據資料的重要性,對於系統運行過程中產生的各種日誌文件,必須采用有針對性的管理策略,以確保日誌數據的準確性、安全性和真實性。一般來說,可以從以下幾個方面進行考慮。
>:日誌備份和歸檔:日誌文件也是重要的數據資料,同樣需要進行備份和歸檔。
>:延長日誌保存期限:在存儲空間富裕的情況下,日誌數據保留的時間應盡可能長。
>:控制日誌訪問權限:日誌數據中可能會包含各類敏感信息,如:賬號、口令等。所以需要嚴格控制其訪問權限。
>:集中管理日誌:使用集中的日誌服務器管理各服務器發送的日誌記錄等。其好處在於方便對日誌的收集、整理和分析,杜絕意外的丟失、惡意篡改或刪除等。
eg:服務器A(IP地址為173.17.17.3/24),用於集中保存日誌記錄。
將客戶機B(IP地址為173.17.17.11/24)中crond服務產生的日誌記錄,統一保存到服務器A中的“/var/log/cron”文件中。
● 設置日誌服務器A
在日誌服務器A中,需要編輯syslog日誌服務的啟動參數配置文件"/etc/sysconfig/syslog",將SYSLOGD_OPTIONS變量的內容改為“-r -x -m 0”即可。其中"-r"選項表示允許接受其他主機發送過來的日誌記錄,"-x"選項表示不進程DNS域名解析,"-m"表示記錄日誌的時間標記間隔(設為0禁用該功能),這些信息可以通過查看syslogd程序的man手冊頁獲得
*:修改日誌服務器A的“/etc/sysconfig/syslog”文件,添加集中管理配置參數“-r”,並重啟syslog服務。
1. vi /etc/sysconfig/syslog //修改SYSLOGD_OPTIONS行SYSLOGD_OPTIONS="-r -x -m 0"
2. service syslog restart

● 設置客戶機B
在客戶機B中,需要修改"/etc/syslog.conf"配置文件,設置將cron計劃任務的日誌消息寫入到服務器A的"/var/log/cron"文件中。指定寫入日誌的主機地址時,[email protected]
*:修改客戶機B的"/etc/syslog.conf"文件,找到cron日誌的配置行,[email protected],並重啟syslog服務。
1. vi /etc/syslog.conf
2. cron.* @173.17.17.3
3. service syslog restart

● 驗證日誌集中管理功能
在客戶機B中執行"crontab -e"命令,隨便編寫一條計劃任務信息並保存退出,然後查看本機中的"/var/log/cron"日誌文件,將發現沒有任何新的記錄。

Linux系統故障分析與排查--日誌分析