linux日誌管理

來源:互聯網
上載者:User

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(設定檔)

通過使用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

(*) : 表示“當前線上的所有人”,類似wall命令的意義

 

例如: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中都有定義

 

 

 

 

 

       

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.