1. 程式人生 > 其它 >日誌管理rsyslogd與logrotate

日誌管理rsyslogd與logrotate

        日誌檔案

1. 日誌檔案是重要的系統資訊檔案,其中記錄了許多重要的系統事件,包括使用者的登入資訊、系統的啟動資訊、系統的安全資訊、郵件相關資訊、各種服務相關資訊等。

2. 日誌對於安全來說也很重要,它記錄了系統每天發生的各種事情,通過日誌來檢查錯誤發生的原因,或者受到攻擊時攻擊者留下的痕跡。

3. 可以這樣理解 日誌是用來記錄重大事件的工具。

√ /var/log/ 目錄就是系統日誌檔案的儲存位置:

√ 系統常用的日誌

日誌檔案

說明

/var/log/boot.log

系統啟動日誌

/var/log/cron

記錄與系統定時任務相關的日誌

/var/log/cups/

記錄列印資訊日誌

/var/log/dmesg

記錄了系統在開機時核心自檢的資訊。也可以使用dmesg命令直接檢視核心自檢資訊

/var/log/btmp

記錄錯誤登入的日誌。這個檔案是二進位制檔案,不能直接用Vi檢視,而要使用lastb命令檢視。

/var/log/lastlog

記錄系統中所有使用者最後一次的登入時間的日誌。這個檔案也是二進位制檔案,要使用lastlog命令檢視

/var/log/maillog

記錄郵件資訊的日誌

/var/log/messages

記錄系統重要資訊的日誌。這個日誌檔案會記錄Linux系統的絕大多數重要資訊。如果系統出現問題,首先要檢查的應該就是這個日誌檔案。

/var/log/secure

記錄驗證和授權方面的資訊,只要涉及賬戶和密碼的程式都會記錄,比如系統的登入、ssh的登入、su切換使用者、sudo授權,甚至田間使用者和修改密碼都會記錄在這個日誌檔案中

/var/log/wtmp

永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、關機事件。是二進位制檔案,需要使用last命令檢視

/var/run/utmp

(/var/run ->/run)

記錄當前已經登入使用者的資訊。這個檔案會隨著使用者的登入和登出而不斷變化,只記錄當前登入使用者的資訊。這個檔案要使用w、who、users等命令檢視。

√ 應用案例

使用root使用者通過xshell6登入,第一次使用錯誤的密碼,第二次使用正確的密碼登入成功,看看在日誌檔案/var/log/secure 裡的相關記錄。

        日誌管理服務rsyslogd

·CentOS7.6日誌服務系統是rsyslogd,CentOS6.x日誌服務是syslogd。rsyslogd功能更強大。rsyslogd的使用、日誌檔案的格式,和syslogd服務相容的。

√ 查詢Linux中的rysylogd服務是否啟動

ps aux | grep “rsyslog” | grep -v “grep”

√ 查詢rsyslogd服務的自啟動狀態

systemctl list-unit-files | grep rsyslog

日誌管理服務rsyslogd

√ 配置檔案:/etc/rsyslog.conf

編輯檔案時的格式為 *.* 存放日誌檔案

其中第一個 * 代表日誌型別,第二個 * 代表日誌級別

  1. 日誌型別分為:

auth ##pam產生的日誌

authpriv ##ssh、ftp等登入資訊的驗證資訊

corn ##定時任務相關

kern ##核心

lpr ##列印

mail ##郵件

mark(syslog)-rsyslog ##服務內部的資訊,時間標識

news ##新聞組

user ##使用者程式產生的相關資訊

uucp ##unix to nuix copy主機之間相關的通訊

local1-7 ##自定義的日誌裝置

  1. 日誌級別分為:

debug ##有除錯資訊的,日誌通訊最多

info ##一般資訊日誌,最常用

notice ##最具有重要性的普通條件的資訊

warning ##警告級別

err ##錯誤級別,組織某個功能或者模組不能正常工作的資訊。

crit ##嚴重級別,阻止整個系統或者整個軟體不能正常工作的資訊

alert ##警告,需要立刻修改的資訊

emerg ##核心崩潰等重要資訊

none ##什麼都不記錄

注意:從上到下,級別從低到高,記錄資訊越來越少。

√ 由日誌服務rsyslogd記錄的日誌檔案,日誌檔案的格式包含以下4類:

  事件產生的時間.

  產生事件的伺服器的主機名.

  產生事件的服務名或程式名.

  事件的具體資訊.

√ 日誌如何檢視例項:

檢視以下/var/log/secure日誌,這個日誌中記錄的是使用者驗證和授權方面的資訊。

√ 日誌管理服務應用例項

在/etc/rsyslog.conf 中新增一個日誌檔案/var/log/123.log,當有事件傳送時(比如sshd服務相關事件),該檔案會接收到資訊並儲存。演示重啟,登入的情況。

  1. 編輯/etc/rsyslog.conf
  1. 重啟,登入後檢視/var/log/123.log

日誌輪替

⚪基本介紹

日誌輪替就是把舊的日誌檔案移動並改名,同時建立新的空日誌檔案,當舊日誌檔案超出儲存的範圍之後,就會進行刪除。

⚪日誌輪替檔案命名

  1. centos7使用logrotate進行日誌輪替管理,想要改變日誌輪替檔名字,通過/etc/logrotate.conf配置檔案中的“dateext“引數:
  2. 如果配置檔案中有“dateext“引數,那麼日誌會用日期來作為日誌檔案的字尾,例如”secure-20210815“ 。這樣日誌檔名不會重疊,也就不需要日誌檔案的改名,只需要指定儲存日誌個數,刪除多餘的日誌檔案即可。
  3. 如果配置檔案中沒有“dateext“引數,日誌檔案就需要進行改名了。當第一此進行日誌輪替時,當前的”secure“日誌會自動命名為”secure.1“,然後新建”secure“日誌,用來儲存新的日誌。當第二次進行日誌輪替時,”secure.1“會自動改名為”secure.2“,當前的”secure”日誌會自動改名為”secure.1“,然後也會新建”secure”日誌,用來儲存新的日誌,以此類推。

⚪logrotate配置檔案

[root@localhost131 log]# vim /etc/logrotate.conf

 

# see "man logrotate" for details

# rotate log files weekly ,每週對日誌進行一次輪替

weekly

 

# keep 4 weeks worth of backlogs ,共儲存4份日誌檔案,當建立新的日誌檔案時,舊的會被刪除

rotate 4

 

# create new (empty) log files after rotating old ones ,建立新的空的日誌檔案,在日誌輪替後

create

 

# use date as a suffix of the rotated file ,使用日期作為日誌輪替的檔案的字尾

dateext

# uncomment this if you want your log files compressed ,日誌檔案是否壓縮。如果取消註釋,則日誌會在儲存的同時進行壓縮

#compress

 

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d #也可以把某個日誌檔案的輪替規則寫到這個目錄裡,這和寫在下面是一樣的。

#包含/etc/logrotate.d/目錄中所有子配置檔案。也就是說會把整個目錄中的所有子檔案讀取進來

#下面是單獨設定,優先順序更高

# no packages own wtmp and btmp -- we'll rotate them here

/var/log/wtmp {

    monthly #每月對日誌進行一次輪替

    create 0664 root utmp #建立新的日誌檔案,許可權是0664,所有者是root,所屬組是utmp組

        minsize 1M #日誌檔案最小輪替大小是1MB。也就是日誌一定要超過1MB才會輪替,否則就算事件到達一個月,也不進行日誌轉儲

    rotate 1 #保留一個日誌備份。也就是wtmp和wtmp.1日誌保留

}

 

/var/log/btmp {

    missingok #如果日誌不存在,則忽略該日誌的警告資訊

    monthly

    create 0600 root utmp

    rotate 1

}

 

# system-specific logs may be also be configured here.

  

⚪logrotate配置檔案

√ 引數說明

引數 引數說明

daily 日誌的輪替週期是每天

weekly 日誌的輪替週期是每週

monthly 日誌的輪替週期是每月

rotate 數字 保留的日誌檔案個數。0指沒有備份

compress 日誌輪替時,舊的日誌進行壓縮

create mode owner group 建立新日誌,同時指定新日誌的許可權與所有者和所屬組。

mail address 當日志輪替時,輸出內容通過郵件傳送到指定的郵件地址。

missingok 如果日誌不存在,則忽略該日誌的警告資訊。

notifempty 如果日誌為空檔案,則不進行日誌輪替

minsize 大小 日誌輪替的最小值。也就是日誌一定要達到這個最小值才會輪替,否則就算時間到達也不輪替。

size 大小 日誌只有大於指定大小才進行輪替,不按時間輪替。

dateext 使用日期作為日誌輪替檔案的字尾。

sharedscripts 此關鍵字之後的指令碼只執行一次。

prerotate/endscript 在日誌輪替之前執行指令碼命令。

postrotate/endscript 在日誌輪替之後執行指令碼命令。

⚪把自己的日誌加入日誌輪替

√ 第一種方法是直接在/etc/logrotate.conf 配置檔案中寫入該日誌的輪替策略。

√ 第二種方法是在/etc/logrotate.d/目錄中新建該日誌的輪替檔案,在該輪替檔案中寫入正確的輪替策略,因為該目錄中的檔案都會被“include“到這配置檔案中,所以也可以把日誌加入輪替。

√ 推薦使用第二種方法,因為系統中需要輪替的日誌非常多,如果全部寫入/etc/logrotate.conf 配置檔案,那麼這個檔案可管理性就會非常差,不利於檔案的維護。

√ 在/etc/logrotate.d/配置輪替檔案

vim /etc/logrotate.d/123

#對應/var/log/123.log

/var/log/123.log

{

missingo

daily

copytruncate

rotate7

notifempty

}

~         

⚪日誌輪替機制原理

日誌輪替之所以可以在指定的時間備份日誌,是依賴系統定時任務。在/etc/cron.daily/目錄,就會發現這個目錄是有logrotate檔案(可執行),logrotate通過這個檔案依賴定時任務執行的。