第九章 系統故障分析與排查 (筆記)

log:日誌,記錄
rescue:救援
secure:安全
average:平均

stamp:標籤
count:計數
startup:啓動

mismatch:不匹配
environment:環境
maintenance:維護

日誌分析及管理

不同的日誌文件記載了不同類型的信息,例如linux內核信息、用戶登錄記錄、程序錯誤等。

主要日誌文件

內核及系統日誌:這種日誌數據由系統服務syslog統一管理,根據其主配置文件“/etc/syslog.conf”中的設置決定將內核消息及各種系統程序消息記錄到什麼位置。系統中有相當一部分程序會把自己的日誌文件交由syslog管理,因而這些程序使用的日誌記錄也具有相似的格式。

用戶日誌:這種日誌數據用於記錄linux系統用戶登錄及退出系統的相關信息,包括用戶名、登錄的終端、登錄時間、來源主機、正在使用的進程操作等。

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

linux系統本身和大部分服務器程序的日誌文件默認情況下都放置在目錄“/var/log/”中。一部分程序共用一個日誌文件,一部分程序使用單個日誌文件,而有些大型服務器程序由於日誌文件不止一個,所以會在“/var/log”目錄中建立相應的子目錄來存放日誌文件,這樣既保證了日誌文件目錄的結果清晰,又可以快速地定位日誌文件。有相當一部分日誌文件只有root用戶纔有權限讀取,這保證了相關日誌信息的安全性。

常見的日誌文件。
/var/log/messages:記錄linux內核消息及各種應用程序的公共日誌信息,包括啓動、IO錯誤、網絡錯誤、程序故障等。對於未使用獨立日誌文件的應用程序或服務,一般都可以從該日誌文件中獲得相關的時間記錄信息。

/var/log/cron:記錄crond計劃任務產生的事件信息。

/var/log/dmesg:記錄linux系統在引導過程中的各種事件信息。

/var/log/maillog:記錄進入或發生系統的電子郵件活動。

/var/log/lastlog:最近幾次成功登錄事件和最後一次不成功登錄事件。

/var/log/rpmpkgs:記錄系統中安裝的各rpm 包列表信息。

/var/log/secure:記錄用戶登錄認證過程中的事件信息。

/var/log/wtmp:記錄當前登錄的每個用戶的詳細信息。

日誌文件分析

介紹三類日誌文件的基本格式和分析方法

使用tail 、more、less、cat等文本處理工具就可以查看日誌內容。對於二進制格式的日誌文件(如用戶日誌),需要使用相應的查詢命令。

1、內核及系統日誌

內核及系統日誌功能主要由默認安裝的sysklogd-1.4.1-39.2軟件包提供,該軟件包安裝了klogd、syslogd兩個程序,並通過syslog服務進行控制,分別用於記錄系統內核的消息和各種應用程序的消息。syslog服務所使用的配置文件爲“/etc/syslog.conf”。

通常情況下,內核及大多數系統消息都被記錄到公共日誌文件“/var/log/messages”中,而其他一些程序消息被記錄到不同的文件中。日誌消息還能夠記錄到特定的存儲設備中,或者直接向用戶發送。


140450908.jpg


從配置文件“/etc/syslog.conf”中可以看到,受syslogd服務管理的日誌文件都是linux系統最主要的日誌文件,它們記錄了linux系統中內核、用戶認證、郵件、計劃任務等最基本的系統消息。在linux內核中,根據日誌消息的重要程度不同,將其分爲不同的優先級別(數字級別越小,優先級別越高,消息越重要)。

0 EMERG (緊急):會導致主機系統不可用的情況。
1 ALERT (警告):必須馬上採取措施解決的問題。
2 CRIT (嚴重):比較嚴重的情況。
3 ERR (錯誤):運行出現錯誤。
4 WARNING (提醒):可能影響系統功能,需要提醒用戶的重要事件。
5 NOTICE (注意):不會影響正常功能,但是需要注意的事件。
6 INFO (信息):一般信息。
7 DEBUG (調試):程序或系統調試信息等。

2、用戶日誌

在wtmp、utmp、lastlog等日誌文件中,保存了系統用戶登錄、退出等相關事件的事件消息。這些文件都是二進制的數據文件,不能直接使用tail、less等文本查看工具進行瀏覽,需要使用who、w、users、last和ac等用戶查詢命令來獲取日誌信息。

1)

who命令用於查詢utmp文件並報告當前登錄的每個用戶信息。使用該命令,系統管理員可以查看當前系統存在哪些不合法用戶,從而對其進行審計和處理。who的默認輸出包括用戶名、終端類型、登錄日期及遠程主機。

2)

w命令用於查詢utmp文件並顯示當前系統中的每個用戶及其所運行的進程信息。

3)

users命令用單獨的一行打印出當前登錄的用戶,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示與其相同的次數。

4)

last命令用於查詢wtmp文件,顯示出自從該文件被創建以來登錄過的所有用戶記錄,最近登錄的用戶記錄將顯示在最前面。

last | head -5 (查看系統中最近的五次用戶登錄記錄)

5)

ac命令將查詢wtmp文件中的用戶登錄和退出情況,報告用戶連接的總時間(小時)。使用用戶名作爲參數,再結合“-d”選項可以按每天進行統計。未指定用戶名時,可以使用“-p”選項進行分別統計。

ac -d teacher

ac -p

3、程序日誌

在linux系統中,有相當一部分應用程序並沒有使用syslog服務來管理日誌,而是由程序自己維護日誌記錄。 如,httpd網站服務程序使用兩個日誌文件access_log 和 error_log,一般存放在“/var/log/httpd”目錄中,分別記錄客戶訪問事件、錯誤事件;而FTP服務程序可以將與文件上傳、下載事件相關的消息記錄在xferlog文件中。


總的來說,作爲一名合格的系統管理人員,應該提高警惕,隨時注意各種可疑狀況,定期並隨機地檢查各種系統日誌文件,包括一般信息日誌、網絡連接日誌、文件傳輸日誌以及用戶登錄日誌記錄等。在檢查這些日誌時,要注意是否有不合常理的時間或操作記錄。

用戶在非常規的時間登錄,或者用戶登錄系統的IP地址和以往的不一樣。
用戶登錄失敗的日誌記錄,尤其是那些一再連續嘗試進入失敗的日誌記錄。
非法使用或不正當使用超級用戶權限。
無故或者非法重新啓動各項網絡服務的記錄。
不正常的日誌記錄,比如日誌的殘缺不全,或者是諸如wtmp這樣的日誌文件無故地缺少了中間的記錄文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章