1. 程式人生 > >Linux學習高階篇(六)

Linux學習高階篇(六)

1、日誌管理簡介

CentOS 6.x中日誌服務已經由rsyslogd取代了原先的syslogd服務。rsyslogd日誌服務更加先進,功能更多。但是不論該服務的使用,還是日誌檔案的格式其實都是和syslogd服務相相容的,所以學習起來基本和syslogd服務一致。
rsyslogd的新特點:
(1)基於TCP網路協議傳輸日誌資訊;
(2)更安全的網路傳輸方式;
(3)有日誌訊息的及時分析框架;
(4)後臺資料庫;
(5)配置檔案中可以寫簡單的邏輯判斷;
(6)與syslog配置檔案相相容。


檢視日誌服務是否啟動: [
[email protected]
~]# ps aux | grep rsyslogd

chkconfig --list | grep rsyslog #檢視服務是否自啟動


常見日誌的作用
日誌檔案 說 明
/var/log/cron 記錄了系統定時任務相關的日誌。
/var/log/cups/ 記錄列印資訊的日誌
/var/log/dmesg 記錄了系統在開機時核心自檢的資訊。也可以使用
dmesg命令直接檢視核心自檢資訊。
/var/log/btmp 記錄錯誤登入的日誌。這個檔案是二進位制檔案,不能
直接
vi檢視,而要使用lastb命令檢視,命令如下:
[[email protected] log]# lastb
root tty1 Tue Jun 4 22:38 - 22:38 (00:00)
#有人在6422:38使用root使用者,在本地終端1登入錯誤
/var/log/lastl
og
記錄系統中所有使用者最後一次的登入時間的日誌。這
個檔案也是二進位制檔案,不能直接
vi,而要使用lastlog
命令檢視
/var/log/mailog 記錄郵件資訊。
/var/log/message 記錄系統重要資訊的日誌。這個日誌檔案中會記錄Linux系統的絕大
多數重要資訊,如果系統出現問題時,首先要檢查的就應該是這個
日誌檔案。
/var/log/secure 記錄驗證和授權方面的資訊,只要涉及賬戶和密碼的程式都會記錄。
比如說系統的登入,
ssh的登入,su切換使用者,sudo授權,甚至新增
使用者和修改使用者密碼都會記錄在這個日誌檔案中。
/var/log/wtmp 永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、
關機事件。同樣這個檔案也是一個二進位制檔案,不能直接
vi,而需
要使用
last命令來檢視。
/var/run/utmp 記錄當前已經登入的使用者的資訊。這個檔案會隨著使用者的登入和注
銷而不斷變化,只記錄當前登入使用者的資訊。同樣這個檔案不能直
vi,而要使用wwhousers等命令來查詢。

2、rsyslogd日誌服務

2.1日誌檔案的格式 基本日誌格式包含以下四列:
(1)事件產生的時間;
(2)發生事件的伺服器的主機名;
(3)產生事件的服務名或程式名;
(4)事件的具體資訊。
2.2 /etc/rsyslog.conf配置檔案 authpriv.* /var/log/secure
#服務名稱[連線符號]日誌等級 日誌記錄位置
#認證相關服務.所有日誌等級 記錄在/var/log/secure日誌中
服務名稱
服務名稱 說 明
auth 安全和認證相關訊息(不推薦使用authpriv替代)
authpriv 安全和認證相關訊息(私有的)
cron 系統定時任務crontat產生的日誌
daemon 和各個守護程序相關的日誌
ftp ftp守護程序產生的日誌
kern 核心產生的日誌(不是使用者程序產生的)
local0-local7 為本地使用預留的服務
lpr 列印產生的日誌
mail 郵件收發資訊
news 與新聞伺服器相關的日誌
syslog syslogd服務產生的日誌資訊(雖然服務名
稱已經改為
rsyslogd,但是很多配置都還是沿
用了
syslogd的,這裡並沒有修改服務名)。
user 使用者等級類別的日誌資訊
uucp uucp子系統的日誌資訊,uucp是早期linux
統進行資料傳遞的協議,後來也常用在新聞
組服務中。

連線符號
連線符號可以識別為:
(1)“*”代表所有日誌等級,比如:“authpriv.*”代表authpriv認證資訊服務產生的日誌,所有的日誌等級都記錄
(2)“.”代表只要比後面的等級高的(包含該等級)日誌都記錄下來。比如:“cron.info”代表cron服務產生的日誌,只要日誌等級大於等於info級別,就記錄
(3)“.=”代表只記錄所需等級的日誌,其他等級的都不記錄。比如:“*.=emerg”代表人和日誌服務產生的日誌,只要等級是emerg等級就記錄。
(4)“.!”代表不等於,也就是除了該等級的日誌外,其他等級的日誌都記錄.

3、日誌輪替

3.1日誌檔案的命名規則 如果配置檔案中擁有“dateext”引數,那麼日誌會用日期來作為日誌檔案的字尾,例如“secure-20170605”。這樣的話日誌檔名不會重疊,所以也就不需要日誌檔案的改名,只需要儲存指定的日誌個數,刪除多餘的日誌檔案即可。

如果配置檔案中沒有“dateext”引數,那麼日誌檔案就需要進行改名了。當第一次進行日誌輪替時,當前的“secure”日誌會自動改名為“secure.1”,然後新建“secure”日誌,用來儲存新的日誌。當第二次進行日誌輪替時,“secure.1”會自動改名為“secure.2”,當前的“secure”日誌會自動改名為“secure.1”,然後也會新建“secure”日誌,用來儲存新的日誌,以此類推。

3.2logrotate配置檔案

參 數 參 數 說 明
daily 日誌的輪替週期是每天
weekly 日誌的輪替週期是每週
monthly 日誌的輪替週期是每月
rotate 數字 保留的日誌檔案的個數。0指沒有備份
compress 日誌輪替時,舊的日誌進行壓縮
create mode owner
group
建立新日誌,同時指定新日誌的許可權與所有者和
所屬組。如
create 0600 root utmp
mail address 當日志輪替時,輸出內容通過郵件傳送到指定的
郵件地址。如
mail [email protected]
missingok 如果日誌不存在,則忽略該日誌的警告資訊
notifempty 如果日誌為空檔案,則不進行日誌輪替
minsize 大小 日誌輪替的最小值。也就是日誌一定要達到這個
最小值才會輪替,否則就算時間達到也不輪替
size 大小 日誌只有大於指定大小才進行日誌輪替,而不是
按照時間輪替。如
size 100k
dateext 使用日期作為日誌輪替檔案的字尾。如secure-
20170605

3.3logrotate命令

[[email protected] ~]# logrotate [選項] 配置檔名
選項:
如果此命令沒有選項,則會按照配置檔案中的條件進行日誌輪替
-v:顯示日誌輪替過程。加了-v選項,會顯示日誌的輪替的過程
-f: 強制進行日誌輪替。不管日誌輪替的條件是否已經符合,強制配置檔案中所有的日誌進行輪替

例如:將apache日誌加入輪替
[[email protected] ~]# vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log {  //加入成功的日誌
daily
create
rotate 30
}