linux檢視系統異常日誌(linux檢視系統崩潰日誌)

1簡介

linux系統擁有非常強大的日誌功能,儲存著幾乎有所有操作記錄,包括核心和程式產生的各種錯誤資訊,警告資訊或其他提示資訊,對這些資訊管理員瞭解系統的執行狀態和分析問題非常有用。可以從日誌檔案中獲得自已想要的資訊。

1.1 日誌程序

預設日誌守護程序為syslog. 位於/usr/sbin/syslog 或/usr/sbin/syslogd或/usr/sbin/rsyslog.d.預設配置檔案為:/etc/syslog.conf ,/etc/rsyslog.conf,可以配置生成的日誌

檢視命令:ps -ef | grep syslog

root@onlinegame:/var/log# ps -ef | grep syslog

root 5659 1 0 2017 ? 00:23:22 /usr/sbin/rsyslogd

syslog服務可以根據日誌的型別、優先順序將日誌儲存到不同檔案中。

linux系統log日誌檔案預設路徑在/var/log中。

1.2 常用日誌型別

型別

說明

auth

使用者認證時產生的日誌,如login命令、su命令。

console

針對系統控制檯的訊息。

cron

系統定期執行計劃任務時產生的日誌。

daemon

某些守護程序產生的日誌。

kern

系統核心訊息。

mail

郵件日誌。

news

網路新聞傳輸協議(nntp)產生的訊息。

ntp

網路時間協議(ntp)產生的訊息。

user

使用者程序。

1.3 常用日誌優先順序

優先順序

說明

emerg

緊急情況,系統不可用(例如系統崩潰),一般會通知所有使用者。

alert

需要立即修復,例如系統資料庫損壞。

crit

危險情況,例如硬碟錯誤,可能會阻礙程式的部分功能。

err

一般錯誤訊息。

warning

警告。

notice

不是錯誤,但是可能需要處理。

info

通用性訊息,一般用來提供有用資訊。

debug

除錯程式產生的資訊。

none

沒有優先順序,不記錄任何日誌訊息。

1.2 常用的日誌

1. /var/log/messages: 包括整體系統普通訊息,其中也包含系統啟動期間的日誌。此外,還包括mail,cron,daemon,kern,auth等內容.

2. /var/log/syslog:它上messages日誌不同,它只記錄警告資訊,通常是系統出問題的資訊。

3. /var/log/user.log: 記錄所有等級使用者資訊的日誌.

4. /var/log/auth.log: 包含系統授權資訊,使用者登陸和使用許可權機制

5. /var/log/daemon.log: 包含各種系統後臺守護程序日誌資訊

6. /var/log/kern.log: 包含核心產生的日誌,有助於在定製核心時解決問題.

7. /var/log/boot.log: 記錄系統在引導過程中發生的事件,即linux系統開機自檢過程顯示的資訊

8. /var/log/lastlog: 記錄最後一次使用者成功登陸的時間,IP等資訊,lastlog檢視

9. /var/log/secure: linux系統安全日誌,記錄使用者和工作組變壞情況,使用者登陸認證情況

10. /var/log/btmp:記錄linux登陸失敗的使用者,時間和遠端IP

11. /var/log/wtmp:此日誌檔案永久記錄每個使用者登入,登出及系統的啟動,停機的事件,用last檢視

12. /var/log/utmp:記錄有關當前登入的每個使用者的資訊。如who,w,users,finger等需要訪問此檔案

2 日誌檔案簡介

2.1. /var/log/messages日誌

包含的資訊比較全面

1. 啟動時日誌

2. 玩家操作日誌等

格式:

日期時間 機器名命令描述資訊

root@onlinegame:/var/log$ vi messages

Dec 24 06:25:29 onlinegame rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="5659" x-info="http://www.rsyslog.com"] rsyslogd was HUPed

Dec 24 06:27:01 onlinegame rsyslogd0: action 'action 26' resumed (module 'builtin:ompipe') [try http://www.rsyslog.com/e/0 ]

Dec 25 09:22:45 onlinegame -bash: HISTORY: PID=19793 PPID=19792 SID=19793 USER=zhangke01 CMD=ll

Dec 25 09:23:13 onlinegame -bash: HISTORY: PID=19793 PPID=19792 SID=19793 USER=zhangke01 CMD=cd wo

2.2 /var/log/syslog日誌檔案

預設centos不生成,可以在/etc/rsyslog.conf配置讓系統生成日誌檔案。

syslog只記錄警告資訊,常常是系統出問題的資訊,所以要關注此檔案.

要讓系統生成該日誌檔案,在/etc/rsyslog.conf檔案中加上:*.warning /var/log/syslog 該日誌檔案能記錄當使用者登入時login記錄下的錯誤口令、Sendmail的問題、su命令執行失敗等資訊。

該日誌檔案記錄最近成功登入的事件和最後一次不成功的登入事件,由login生成。在每次使用者登入時被查詢,該檔案是二進位制檔案,需要使用lastlog命令檢視,根據UID排序顯示登入名、埠號和上次登入時間。如果某使用者從來沒有登入過,就顯示為"**Never logged in**"。該命令只能以root許可權執行。簡單地輸入lastlog命令後就會看到類似圖4的資訊:

luoying@onlinegame:/var/log$ vi syslog

Dec 31 17:29:47 onlinegame exim[18063]: write failed on panic log: length=104 result=-1 errno=28 (No space left on device)

Dec 31 17:59:48 onlinegame exim[20253]: 2017-12-31 17:59:47 failed to write to main log: length=47 result=-1 errno=28 (No space left on device)

Feb 6 17:46:26 onlinegame -bash: HISTORY: PID=3687 PPID=3686 SID=3687 USER=gugang CMD=python

Feb 6 17:49:23 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=cd ..

Feb 6 17:49:26 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=cd svn up

Feb 6 17:49:29 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=ls -l

Feb 6 17:49:34 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=svn up

Feb 6 17:49:38 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=cd ../engine/

Feb 6 17:49:41 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=sh stop_node.sh

Feb 6 17:49:42 onlinegame bash: HISTORY: PID=30491 PPID=30482 SID=30424 USER=root CMD=sh start_node.sh

2.3 /var/log/boot.log日誌

記錄系統在引導過程中發生的事件,即linux系統開機自檢過程顯示的資訊

[root@localhost log]# cat boot.log

[ OK ] Started Show Plymouth Boot Screen.

[ OK ] Reached target Paths.

[ OK ] Reached target Basic System.

Starting File System Check on /dev/disk/by-uuid/6d32...88652b684ca0...

systemd-fsck[301]: fsck: error 2 (No such file or directory) while executing fsck.ext2 for /dev/disk/by-uuid/6d32919a-e3d2-4e22-a5a5-88652b684ca0

[ OK ] Started File System Check on /dev/disk/by-uuid/6d329...5-88652b684ca0.

[ OK ] Started dracut initqueue hook.

Mounting /sysroot...

[ OK ] Mounted /sysroot.

[ OK ] Reached target Initrd Root File System.

Starting Reload Configuration from the Real Root...

[ OK ] Started Reload Configuration from the Real Root.

[ OK ] Reached target Initrd File Systems.

[ OK ] Reached target Initrd Default Target.

Welcome to CentOS Linux 7 (Core)!

[ OK ] Stopped Switch Root.

[ OK ] Stopped target Switch Root.

[ OK ] Stopped target Initrd File Systems.

2.4 /var/log/wtmp日誌檔案(使用者登陸)

該日誌檔案永久記錄每個使用者登入、登出及系統的啟動、停機的事件。

隨著系統正常執行時間的增加,該檔案的大小也會越來越大,增加的速度取決於系統使用者登入的次數。

該日誌檔案可以用來檢視使用者的登入記錄,last命令就通過訪問這個檔案獲得這些資訊,並以反序從後向前顯示使用者的登入記錄,last也能根據使用者、終端tty或時間顯示相應的記錄。

[root@localhost log]# last

root pts/1 192.168.1.1 Tue Feb 6 17:18 still logged in

root pts/0 192.168.1.1 Tue Feb 6 17:18 still logged in

root pts/1 192.168.1.1 Thu Feb 1 21:10 - 21:14 (00:04)

root pts/0 192.168.1.1 Thu Feb 1 14:21 - 21:47 (07:25)

root pts/1 192.168.1.1 Tue Jan 30 10:46 - 19:18 (08:31)

root pts/0 192.168.1.1 Tue Jan 30 09:32 - 19:18 (09:45)

luoying pts/0 192.168.1.5 Wed Jan 24 21:21 - 21:21 (00:00)

2.5 /var/log/utmp日誌檔案(使用者登陸)

該日誌檔案記錄有關當前登入的每個使用者的資訊。

因此這個檔案會隨著使用者登入和登出系統而不斷變化,它只保留當時聯機的使用者記錄,不會為使用者保留永久的記錄。

系統中需要查詢當前使用者狀態的程式,如who、w等就需要訪問這個檔案。該日誌檔案並不能包括所有精確的資訊,因為某些突發錯誤會終止使用者登入會話,而系統沒有及時更新 utmp記錄,因此該日誌檔案的記錄不是百分之百值得信賴的。

[root@localhost log]# who

(unknown) :0 2018-01-24 21:19 (:0)

root pts/0 2018-02-06 17:18 (192.168.1.1)

root pts/1 2018-02-06 17:18 (192.168.1.1)

[root@localhost log]# w

18:20:58 up 12 days, 21:03, 3 users, load average: 0.00, 0.01, 0.05

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 17:18 2.00s 0.38s 0.05s w

root pts/1 17:18 1:02m 0.05s 0.05s -bash

2.6 /var/log/lastlog日誌檔案(使用者登陸)

記錄最後一次使用者成功登陸的時間,IP等資訊,lastlog檢視

wtmp、utmp、lastlog都記錄了使用者的登陸情況,所有記錄包含了相同的時間戳。而且檔案是二進位制儲存的,不能用cat/vi直接檢視。而是使用相關的命令令檢視。

[root@localhost log]# lastlog

使用者名稱 埠 來自 最後登陸時間

root pts/1 192.168.1.1 二 2月 6 17:18:46 0800 2018

bin **從未登入過**

daemon **從未登入過**

sync **從未登入過**

shutdown **從未登入過**

halt **從未登入過**

mail **從未登入過**

games **從未登入過**

gdm :0 三 1月 24 21:19:08 0800 2018

tcpdump **從未登入過**

haha pts/0 192.168.1.5 三 1月 24 21:21:28 0800 2018

mysql pts/1 二 4月 11 15:15:05 0800 2017

test pts/0 192.168.1.1 四 12月28 20:20:05 0800 2017

2.7 /var/log/users.log日誌檔案(使用者操作日誌)

記錄所有等級使用者資訊的日誌.

root@onlinegame:/var/log$ vi users.log

Dec 25 10:01:26 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=ll

Dec 25 10:01:27 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=rm -rf bin

Dec 25 10:01:28 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=ls

Dec 25 10:01:29 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=cd ..

Dec 25 10:01:29 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=ll

Dec 25 10:01:32 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=cd ..

Dec 25 10:01:32 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=ll

Dec 25 10:01:39 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=sh pack.sh

Dec 25 10:02:11 onlinegame bash: HISTORY: PID=24187 PPID=24179 SID=24125 USER=root CMD=ll

2.8 /var/log/auth.log(授權資訊)

包含系統授權資訊,使用者登陸和使用許可權機制

root@onlinegame:/var/log$ vi auth.log

Feb 6 20:49:19 onlinegame sshd[11351]: Did not receive identification string from 192.168.44.161

Feb 6 20:50:01 onlinegame CRON[11387]: pam_unix(cron:session): session opened for user root by (uid=0)

Feb 6 20:50:01 onlinegame CRON[11386]: pam_unix(cron:session): session opened for user root by (uid=0)

Feb 6 20:50:01 onlinegame CRON[11388]: pam_unix(cron:session): session opened for user root by (uid=0)

Feb 6 20:50:01 onlinegame CRON[11389]: pam_unix(cron:session): session opened for user root by (uid=0)

Feb 6 20:50:01 onlinegame CRON[11386]: pam_unix(cron:session): session closed for user root

Feb 6 20:50:01 onlinegame CRON[11388]: pam_unix(cron:session): session closed for user root

Feb 6 20:50:01 onlinegame CRON[11389]: pam_unix(cron:session): session closed for user root

Feb 6 20:50:03 onlinegame CRON[11387]: pam_unix(cron:session): session closed for user root

2.9 /var/log/daemon.log(守護程序日誌)

包含各種系統後臺守護程序日誌資訊

root@onlinegame:/var/log$ vi daemon.log

Dec 25 09:52:18 onlinegame dbus[1781]: [system] Activating service name='org.freedesktop.login1' (using servicehelper)

Dec 25 09:52:19 onlinegame dbus[1781]: [system] Activating service name='org.freedesktop.systemd1' (using servicehelper)

Dec 25 09:52:19 onlinegame dbus[1781]: [system] Activated service 'org.freedesktop.systemd1' failed: Launch helper exited with unknown return code 1

Dec 25 09:52:19 onlinegame dbus[1781]: [system] Activated service 'org.freedesktop.login1' failed: Launch helper exited with unknown return code 1

2.10 /var/log/kern.log(核心日誌)

包含核心產生的日誌,有助於在定製核心時解決問題.

luoying@onlinegame:/var/log$ vi kern.log

Dec 25 20:06:59 onlinegame kernel: [19645166.590333] UDP: bad checksum. From 192.168.41.42:5353 to 224.0.0.251:5353 ulen 48

Dec 25 20:07:07 onlinegame kernel: [19645174.122019] UDP: bad checksum. From 192.168.41.42:137 to 192.168.43.255:137 ulen 58

Dec 28 15:29:52 onlinegame kernel: [19887739.280311] device eth0 entered promiscuous mode

Dec 28 15:30:04 onlinegame kernel: [19887751.777992] device eth0 left promiscuous mode

Dec 28 15:30:38 onlinegame kernel: [19887785.920414] device eth0 entered promiscuous mode

Dec 28 15:30:43 onlinegame kernel: [19887790.828312] device eth0 left promiscuous mode

Dec 28 15:30:48 onlinegame kernel: [19887795.052369] device eth0 entered promiscuous mode

2.11 /var/log/secure(系統安全日誌)

linux系統安全日誌,記錄使用者和工作組變壞情況,使用者登陸認證情況

[root@localhost log]# vim secure

Feb 6 17:18:23 localhost sshd[517]: Accepted password for root from 192.168.1.1 port 15063 ssh2

Feb 6 17:18:23 localhost sshd[517]: pam_unix(sshd:session): session opened for user root by (uid=0)

2.12 /var/log/btmp(登陸失敗日誌)

記錄linux登陸失敗的使用者,時間和遠端IP