linux日誌管理

2021-06-01 11:32:41 字數 3630 閱讀 5635

linux日誌管理

syslog是一種工業標準協議,可用於記錄裝置的日誌。這些日誌記錄了系統中發生的大大小小的事情。因此,它對於系統的安全性非常重要。它會將一些系統資訊記錄到登陸檔案中,常見的登陸檔案有以下幾種:

l  /var/log/secure:記錄登陸系統訪問的資料檔案,例如pop3,ssh,telnet,ftp等。

l  /var/log/wtmp:記錄登陸者的資訊資料,這是個data型別的檔案,需要使用last命令檢視。

l  /var/log/messages:這個檔案非常重要,只要是系統錯誤資訊都會記錄在這個檔案中。

l  /var/log/boot.log:記錄開機或一些服務啟動時所顯示的啟動或關閉資訊。

l  /var/log/maillog:記錄郵件訪問或往來的使用者記錄

l  /var/log/cron:記錄crontab例行性服務的內容

l  /var/log/httpd,/var/log/news,/var/log/mysqld.log,/var/log/samba,/var/log/procmail.log:分別是幾個網路服務的記錄檔案。

登陸檔案的記錄

在新版本的linux中,使用了rsyslog來取代原來的syslog。與rsyslog有關的兩個重要檔案為:/etc/init.d/rsyslog(守護程序)和/etc/rsyslog.conf(配置檔案)

服務名稱[.=!]資訊等級   資訊記錄的檔名或裝置或主機

1)服務名稱

服務名稱表示什麼服務產生的資訊。

kern : 核心

user : 使用者程式

damon : 系統守護程序

mail : 電子郵件系統

auth : 與安全許可權相關的命令

lpr : 印表機

news : 新聞組資訊

uucp : uucp程式

cron : 與例行性命令cron/at有關的資訊

wtmp : 使用者每次登陸進入和推出的永久記錄

authpriv : 授權資訊

2)連線符號[.=!]

(.):表示「比後面還要高的等級(含該等級)都記錄下來」。

(.=):表示所需要的等級就是等號後面的等級,其它的不要

(.!):表示不等於,即除了該等級之外的其它等級都需要記錄下來

3)資訊等級(從低到高)

none : 不記錄任何日誌資訊

debug : 除錯級資訊

info : 一般性資訊

notice : 出現不尋常的事情

warning : 警告資訊

err : 重大錯誤資訊

crit : 臨界資訊

alert : 緊急資訊

emerg : 最高的緊急狀態。

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

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

印表機或其它:例如/dev/lp0印表機準備

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

遠端主機:例如@192.168.1.100

例如:mail.info          /var/log/maillog

表示要將mail服務相關的,等級大於等於info之上的資訊,都記錄到/var/log/maillog檔案中。

登陸檔案的輪換

登陸檔案在時間長了以後會變得過於龐大,這樣一方面占用系統資源,另一方面也不利於我們檢視。為了解決這個問題,linux中引入了登陸檔案的輪換機制:logrotate。注意,rsyslog是使用守護程序的方式來啟動,但是logrotate卻是在規定的時間到來之後才進行登陸檔案的替換,所以logrotate是掛在cron下面進行的。/etc/cron.daily/logrotate記錄了每天要進行的登陸檔案替換行為。

與logrotate有關的兩個檔案為:/etc/logrotate.conf(配置檔案)h和logrotate.d(乙個存放需要替換的服務的目錄)

logrotate的主要功能是將舊的登陸檔案重新命名,然後重新建立乙個新的空檔案來記錄。

例如:messages.log是原來的登陸檔案,當達到替換條件時,系統會把它命名為messages.log.1,並建立乙個新的messages.log空檔案,當再次達到替換條件時,系統會將messages.log.1重新命名為messages.log.2,messages.log重新命名為messages.log.1,同時再建立乙個空的messages.log檔案,以此類推。

但是保留的登陸檔案有乙個數量限制,如果超過了這個限制,多餘的檔案就會刪除。

/etc/logrotate.conf的格式如下:

其中weekly表示每週對登陸檔案進行一次替換,rotate 4表示保留4個登陸檔案,create表示是否建立新的登陸檔案來記錄,compress表示是否要壓縮輪替之後的登陸檔案,如果不需要壓縮,就是用uncompress,include /etc/logrotate.d表示把該目錄內的檔案都讀進來進行輪替工作。

注意:這幾個都是預設值,表示如果logrotate.d目錄下的檔案如果沒有設定自己的引數,就會以這幾個引數為準。

下面的/var/log/wtmp和/var/log/btmp這兩段的格式和/etc/logrotate.d目錄下的檔案格式是一致的,表示對這些登陸檔案進行替換的設定。

如/var/log/wtmp這個登陸檔案的設定是,每個月對其進行一次替換,將檔案的許可權設定為644,擁有者為root,群組為utmp,且僅保留乙個輪替備份。

為了防止認為修改這些登陸檔案(有些黑客為了銷毀證據,所以刪除或者認為修改這些登陸檔案),可以使用隱藏屬性+a,來使其只能增加,不能修改。但是這裡又會遇到乙個問題,那就是如果設定了+a屬性,那麼當發生輪替時,登陸檔案是無法重新命名的。沒關係,還有別的方法。正確的logrotate的檔案寫法為:

l  將要處理的登陸檔名寫在前面,可以使用空格符分隔多個登陸檔案。

l  用{}包括所有的設定

在設定中,可以在輪替前和輪替後執行一些特殊的指令,這個需要與sharedscripts和endscript來配合使用:

pretotate : 在啟動logrotate之前執行的指令

postrotate :做完logrotate只有啟動的指令。

為了解決上面提到的問題,我們可以這樣寫乙個logrotate檔案,例如:

/var/log/admin.log{

monthly

size=10m #表示登陸檔案若大於10mb,則主動輪替,不需要考慮乙個月期限

rotate 5

nocompress

sharedscripts

prerotate

/usr/bin/chattr –a /var/log/admin.log#在輪替前先取消隱藏屬性,使起可以修改

endscript

sharedscripts

postrotate

/usr/bin/killall –hup rsyslogd

/usr/bin/chattr +a/var/log/admin.log#在輪替完成後重新加上+a隱藏屬性

endscript

注意:/etc/rsyslog.conf與/etc/logrotate.d/*檔案常常搭配使用,/etc/logrotate.d目錄中的檔案在/etc/rsyslog.conf中都有定義

Linux日誌管理

摘要 linux日誌的介紹和管理,包括日誌輪轉方式和日誌伺服器啟用 一 日誌及常用日誌檔案 1.日誌 記錄系統在什麼時候由哪些程序做了什麼行為時,發生了什麼事。1.解決系統方面錯誤 排錯 2.解決網路服務問題 3.過往事件記錄 常見事件記錄 2.常見日誌 var log boot.log 開機啟動資...

Linux日誌管理

一 日誌服務簡介 在linux系統中,日誌服務是由rsyslogd服務提供的,我們先來檢視這個日誌服務是否啟動和自啟動 我們可以看到這個服務是預設開機自啟動的 下面我們來看下常見的日誌檔案的作用 除了系統預設日誌外,採用rpm包方式安裝的系統服務也會預設把日誌記錄在 var log 目錄中,原始碼包...

linux日誌管理

systemd 統一管理所有 unit 的啟動日誌。帶來的好處就是,可以只用journalctl乙個命令,檢視所有日誌 核心日誌和應用日誌 日誌的配置檔案是 etc systemd journald.conf。journalctl功能強大,用法非常多。檢視所有日誌 預設情況下 只儲存本次啟動的日誌 ...