天天看點

認識和分析日志檔案

什麼是日志檔案

記錄系統活動資訊的幾個檔案,比如:何時 何地 來源IP 何人 什麼服務名 做了什麼操作,換句話說,就是記錄系統什麼時候由什麼程序做了什麼樣的行為,發生了什麼事件。

linux常見的日志檔案名

/var/log/cron  

記錄crontab的日志

/var/log/dmesg 

記錄系統在開機的時候核心檢測過程産生的各種資訊。

/var/log/lastlog

記錄系統上所有帳号最後一次登入系統的相關資訊

/var/log/maillog或者/var/log/mail/*

記錄郵件來往資訊,其實主要記錄sendmail  smtp協定提供 與 dovecot pop3提供 所産生的資訊,stmp是發信使用 pop3是收件使用

/var/log/messages

這個檔案記錄幾乎系統發生的錯誤資訊或者重要資訊都會記錄在這個日志檔案中,如果系統發生錯誤,這個系統日志史一定要查閱的檔案之一。

/var/log/secure

隻要涉及到需要輸入帳号和密碼的軟體,不管登入是否正确錯誤,都會被記錄在這個日志檔案中。包括系統的login程式,圖形界面所登入使用的gdm程式,su,sudo等,還有聯網的ssh,telnet等。

/var/log/wtmo,/var/log/faillog

這兩個檔案記錄正确登入系統的賬戶資訊和錯誤登入時所使用的帳号資訊。

/var/log/httpd/*,/var/log/news/*,/var/log/samba/*

不同的網絡服務會使用他們自己的日志檔案來記載他們産生的各項資訊。

日志檔案所需的相關服務daemon與程序

syslogd:主要登入系統與網絡等服務的資訊;

klogd:主要登入核心産生的各項資訊;

logrotate:主要在進行登入檔案的輪替功能。

syslogd:記錄日志檔案的服務

首先我們要看下我們的linux伺服器中syslogd有沒有啟動是否有沒有開機啟動

ps -aux | grep syslog

root      4929  0.0  0.0   1728   612 ?        Ss   19:47   0:00 syslogd -m 0

 chkconfig --list syslog

syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off

syslog的配置檔案:/etc/syslog.conf

基本上, syslog 針對各種服務與資訊記錄在某些檔案的配置檔就是 /etc/syslog.conf, 這個檔案規定了『(1)什麼服務 (2)的什麼等級資訊 (3)需要被記錄在哪裡(裝置或檔案)』

我們以mail服務為例子:

服務名稱

syslog 本身有規範一些服務,你可以透過這些服務來儲存系統的資訊。syslog 認識的服務主要有底下這些: (可使用 man 3 syslog 查詢到相關的資訊)

服務類别

說明

auth (authpriv)

主要與認證有關的機制,例如 login, ssh, su 等需要帳号/密碼的咚咚;

cron

就是例行性工作排程 cron/at 等産生資訊記錄的地方;

daemon

與各個 daemon 有關的資訊;

kern

就是核心 (kernel) 産生資訊的地方;

lpr

亦即是列印相關的資訊啊!

mail

隻要與郵件收發有關的資訊紀錄都屬於這個;

news

與新聞群組伺服器有關的東西;

syslog

就是 syslogd 這支程式本身産生的資訊啊!

user, uucp, local0 ~ local7

與 Unix like 機器本身有關的一些資訊。

資訊等級

同一個服務所産生的資訊也是有差别的,有啟動時僅通知系統而已的一般資訊 (information), 有出現還不至於影響到正常運作的警告資訊 (warn) ,還有系統硬體發生嚴重錯誤時,所産生的重大問題資訊 (error 等等); 資訊到底有多少種嚴重的等級呢?基本上,syslog 将資訊分為七個主要的等級,依序是這樣的(由不重要排列到重要資訊等級):

等級

等級名稱

1

info

僅是一些基本的資訊說明而已;

2

notice

比 info 還需要被注意到的一些資訊内容;

3

warning

(warn)

警示的資訊,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個資訊都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾;

4

err 

(error)

一些重大的錯誤資訊,例如配置檔的某些配置值造成該服務服法啟動的資訊說明, 通常藉由 err 的錯誤告知,應該可以了解到該服務無法啟動的問題呢!

5

crit

比 error 還要嚴重的錯誤資訊,這個 crit 是臨界點 (critical) 的縮寫,這個錯誤已經很嚴重了喔!

6

alert

警告警告,已經很有問題的等級,比 crit 還要嚴重!

7

emerg 

(panic)

疼痛等級,意指系統已經幾乎要當機的狀态! 很嚴重的錯誤資訊了。通常大概隻有硬體出問題,導緻整個核心無法順利運作,就會出現這樣的等級的資訊吧!

特别留意一下在資訊等級之前還有 [.=!] 的連結符号喔!他代表的意思是這樣的:

. :代表『比後面還要高的等級 (含該等級) 都被記錄下來』的意思,例如: mail.info 代表隻要是 mail 的資訊,而且該資訊等級高於 info (含 info 本身)時,就會被記錄下來的意思。

.=:代表所需要的等級就是後面接的等級而已, 其他的不要!

.!:代表不等於, 亦即是除了該等級外的其他等級都記錄。

一般來說,我們比較常使用的是『.』這個連結符号

資訊記錄的檔名或裝置或主機

再來則是這個資訊要放置在哪裡的紀錄了。通常我們使用的都是記錄的檔案啦!但是也可以輸出到裝置呦! 例如列印機之類的!也可以記錄到不同的主機上頭去呢!底下就是一些常見的放置處:

檔案的絕對路徑:通常就是放在 /var/log 裡頭的檔案啦!

列印機或其他:例如 /dev/lp0 這個列印機裝置

使用者名稱:顯示給使用者羅!

遠端主機:例如 @www.vbird.tsai 當然啦,要對方主機也能支援才行!

*:代表『目前線上上的所有人』,類似 wall 這個指令的意義!

syslog.conf 文法例子

例題:

如果我要将我的 mail 相關的資料給他寫入 /var/log/maillog 當中,那麼在 /etc/syslog.conf 的文法如何設計?

答:

基本的寫法是這樣的:

mail.info   /var/log/maillog

注意到上面喔,當我們的等級使用 info 時,那麼『任何大於 info 等級(含 info 這個等級)之上的資訊,都會被寫入到後面接的檔案之中!』這樣可以了解嗎?也就是說,我們可以将所有 mail 的登入資訊都紀錄在 /var/log/maillog 裡面的意思啦!

我要将新聞群組資料 (news) 及例行性工作排程 (cron) 的資訊都寫入到一個稱為 /var/log/cronnews 的檔案中,但是這兩個程式的警告資訊則額外的記錄在 /var/log/cronnews.warn 中,那該如何配置我的 syslog.conf 呢?

很簡單啦!既然是兩個程式,那麼隻好以分号來隔開了,此外,由於第二個指定檔案中,我隻要記錄警告資訊,是以配置上需要指定『.=』這個符号,是以文法成為了:

news.*;cron.*     /var/log/cronnews news.=warn;cron.=warn /var/log/cronnews.warn

上面那個『.=』就是在指定等級的意思啦!由於指定了等級,是以,隻有這個等級的資訊才會被紀錄在這個檔案裡面呢!此外你也必須要注意,news 與 cron 的警告資訊也會寫入 /var/log/cronnews 内喔!

我的 messages 這個檔案需要記錄所有的資訊,但是就是不想要記錄 cron, mail 及 news 的資訊,那麼應該怎麼寫才好?

可以有兩種寫法,分别是:

*.*;news,cron,mail.none      /var/log/messages *.*;news.none;cron.none;mail.none /var/log/messages

使用『,』分隔時,那麼等級隻要接在最後一個即可,如果是以『;』來分的話,那麼就需要将服務與等級都寫上去羅!這樣會配置了吧!  

自行添加登入檔案檔案功能

日志的安全性設定

本文轉自歲月丶傾城部落格51CTO部落格,原文連結http://blog.51cto.com/alca0126/1538878如需轉載請自行聯系原作者

laihuadongcto

繼續閱讀