Linux日誌分析和管理

2021-08-27 20:54:34 字數 3940 閱讀 9465

目錄

日誌的作用、分類、管理、輪轉和級別

rsyslog服務

journal守護程序

/var/log下相關的日誌檔案

日誌伺服器的建立

日誌的作用:

日誌檔案的分類:

日誌管理策略

日誌也並不是完全可靠的,高階的黑客在入侵系統後,會刪除相應的日誌記錄,因此需要做好日誌的管理工作:

日誌的輪轉和切割

隨著時間的推移,日誌檔案肯定會越來越大,而且這個趨勢是呈線性增長。所以,需要對之前的日誌檔案做一些處理。日誌輪轉和切割指的是實現對當前日誌歸檔,開始新的日誌,刪除早期的日誌。linux中,日誌輪轉和切割這個服務是由 logrotate 提供的。logrotate這個程式的目錄:/etc/cron.daily/logrotate  。logrotate 是作為 corn 的乙個每日任務,週期性執行的。它具備自動輪轉、壓縮、搬遷 和 郵件通知到日誌系統的多項功能。每乙個日誌檔案都可以按照每天、每週、每月週期性處理,或是增長到多大而觸發處理。

日誌訊息的級別

日誌訊息的級別

level等級

狀況0 emerg(緊急)

會導致主機系統不可用的情況

1 alert (警告)

必須馬上採取措施解決的情況

2 crit (嚴重)

比較嚴重的情況

3 err (錯誤)

執行出現錯誤

4 warning (提醒)

可能會影響系統功能的事件

5 notice (注意)

不會影響系統但值得注意

6 info (注意)

一般資訊

7 debug(除錯)

程式或系統除錯資訊等

rsyslog服務是由 rsyslogd 程式提供的。rsyslogd 程式負責收集和管理與系統有關的日誌

系統中的程式,在收集日誌的時候,都是呼叫syslog() 函式,這個函式的作用是傳送日誌訊息給系統的 logger,然後由logger 根據 rsyslogd 程式的配置檔案 /etc/rsyslog.conf 中的規則,將日誌訊息按照不同的格式寫入不同的檔案中。

syslog() 函式內部有不同的裝置,不同的程式有可能對應相同的裝置,也有可能對應不同的裝置。通過 man  3  syslog  可檢視syslog中的不同裝置和不同預警級別。程式所對應的裝置大部分不可修改,都已經編譯好。但是有的程式的配置檔案中允許修改裝置。比如sshd程式,在其配置檔案 /etc/ssh/sshd_config 中可修改裝置。local0 ~ local6 是自定義裝置。不建議修改程式所對應的預設裝置。程式所對應的裝置這個不是我們所關心的,是開發者已經配置好的。

rsyslogd 中有不同的規則,指定了不同的裝置的不同預警級別對應的不同檔案。logger 就是根據  rsyslogd 中的規則進行日誌寫入。rsyslogd 中的規則我們自己可以定義修改增加。所以如果我們關閉 rsyslogd 程式的話,logger就不知道該將日誌檔案寫入**,所以就會產生錯誤。 

一些程式所對應的裝置

程式 program

裝置 facility

/usr/sbin/sshd

log_authpriv

/usr/bin/su

log_authpriv

/usr/bin/login

log_authpriv

/usr/sbin/vsftpd

log_ftp

/usr/bin/at

log_cron

/usr/sbin/crond

log_cron

/usr/sbin/portfix

log_mail

rsyslogd的配置檔案 /etc/rsyslog.conf 中的一些規則

裝置 facility 和 級別

對應的檔案

*.info; mail.none; authpriv.none; cron.none (任何裝置的這些級別)

/var/log/messages

authpriv.*  (authpriv裝置的所有級別)

/var/log/secure

mail.* (mail裝置的所有級別)

-/var/log/maillog

cron.*  (cron裝置的所有級別)

/var/log/cron

*.emery (所有裝置的emery級別)

:omusrmsg:*   (列印到終端)

local0.*   ~  local6.*

自己可定義檔案

但是像我們很多自己的應用,不是由 rsyslogd程序收集和管理日誌,因為他們不呼叫 syslog()函式。比如apache、nginx、mysql、httpd 都有自己的日誌程序負責收集和管理日誌。

日誌檔案預設都是儲存在 /var/log/ 目錄下。

常見的日誌檔案目錄 名稱

路徑核心、公共訊息日誌、系統主日誌檔案

/var/log/messages

使用者登入日誌

/var/log/secure 

計畫任務日誌

/var/log/cron

跟yum安裝有關

/var/log/yum.log

系統引導日誌

/var/log/dmesg

郵件系統日誌,跟postfix有關

/var/log/maillog

當前登入的使用者,二進位制檔案,可用 last 檢視

/var/log/wtmp

最近登入的使用者 , 二進位制檔案  ,可用 lastb 檢視

/var/log/btmp

所有使用者的登入情況,二進位制檔案,可用 lastlog 檢視

/var/log/lastlog

這個是  /var/log/secure 裡的登入日誌 ,第一行說明root使用者登入xie登入成功。第二三行說明xie使用者想登入bob使用者然後認證失敗了,也就是密碼錯誤。第四行說明xie使用者退出登入了。

grep 'fail' /var/log/secure | awk '' | sort |uniq -c | sort -k1 -n -r | head -5     檢視登入失敗的那一行,然後列印出第11列(從後數), 然後排序,然後去除重複,然後按第一列排序 ,然後檢視前五個

在rhel7中,syslog 訊息除了由 rsyslog 服務處理外,還新加了乙個journal 監聽,日誌檔案在 /run/log/journal 目錄中。

systemd-journald 守護程序提供了乙個改進的日誌管理服務。在使用其它工具時,日誌往往被分散在整套系統當中,由不同的守護程序及程序負責處理,這意味著我們很難跨越多種應用程式對其內容進行解讀。而 systemd 嘗試提供一套集中化管理方案,從而統一打理全部核心及使用者級程序的日誌資訊,這也就是我們journal。這套系統能夠收集並管理日誌內容,它從核心中收集訊息:啟動過程的早期階段、標準輸出和守護程序的錯誤。當它們啟動和執行時,以及 syslog,它將這些訊息寫入到結構化的事件日誌。syslog訊息也由 systemd-journald **到 rsyslog 服務,然後按型別(或裝置)和優先順序對訊息進行排序,並將他們寫入到 /var/log/ 日誌目錄中的持久檔案中。

但是,我們的 /run/log/journal 目錄下的日誌資訊並不能直接檢視,該檔案是二進位制檔案,需要借助命令檢視

journal日誌的檢視

文章:建立日誌伺服器

Linux作業系統管理 日誌管理和分析

水平集 日誌管理 這部分包括一些開源技術,這些技術基本上是針對基於主機的日誌記載,日誌檔案轉儲和日誌檔案分析。很多任務具都是免費的 開源軟體,在很多主要的linux系統中都有整合,包括主流的rethat和novell。logrotate logrotate是在大量linux系統中非常流行的應用程式工...

Linux系統日誌管理 同步 採集 分析

首先,了解linux系統日誌的五種分類 var log messages 系統服務及日誌,包括服務的資訊,報錯等等 var log secure 系統認證資訊日誌 var log maillog 系統郵件服務資訊 var log cron 系統定時任務資訊 var log boot.log 系統啟動...

linux日誌分析

日誌檔案過大時,選取特定時間段日誌輸出 sed n 2017 09 19t15 43 2017 09 19t16 03 p log performancetest.log 將 log中2017 09 19t15 43 2017 09 19t16 03時間段的日誌輸出到performancetest....