rsyslog 利用的是 daemon 的方式來啟動, 有需求的時候立刻執行
logrotate 在規定的時間到了之後進行登錄檔的輪替, 是掛在 cron 底下進行!/etc/cron.daily/logrotate
rsyslog:
使用一個預設設定檔,於設定檔的尾端,以 include 的方式,將其他設定檔載入
/etc/rsyslog.conf →預設設定檔,(不在這個檔案調整)
/etc/rsyslog.d/*→各別設定檔,(在這目錄下調整),這目錄下的預設檔是 50-default.conf,且依套件不同而新增不同設定,設定檔裡檔案名稱前有-號表示紀錄不會馬上存入檔案中,若為重要紀錄檔前面可不加-。
/etc/rsyslog.d/設定檔格式
訊息的種類.嚴重性 動作
訊息種類
auth (authpriv) 與認證有關的機制
cron 例行性工作排程
daemon 與各個 daemon 有關的
kern 與核心 (kernel) 相關的
lpr 與列印相關的
mail 與郵件收發相關的
mark
news 與新聞群組服務相關的
security(same as auth)
syslog syslogd 本身的
user, uucp, local0 ~ local7 與 Unix like 機器本身有關的
訊息等級
訊息等級 代號 說明
1 info 一些基本的訊息說明
2 notice 比 info 還需要被注意到的一些資訊內容
3 warning (warn) 警示的訊息,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾
4 err (error) 一些重大的錯誤訊息
5 crit 比 error 還要嚴重的錯誤資訊
6 alert 警告,已經很有問題的等級,比 crit 還要嚴重
7 emerg (panic) 系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊。通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息
debug 錯誤偵測等級
none 不需登錄
符號說明
. 表示比指定的訊息等級高的(包含本身)都會記錄
.= 指記錄指定的訊息等級
.! 只有只定的訊息等級不記錄,其餘皆要
如果有多個種可用,隔開,或用*代表全部
多個種類嚴重性不全相目,但要相同動作,可用;隔開
動作:寫到記錄檔,可能方式
本機檔案 如:/var/log/mailog
終端機 如:/dev/console, /dev/pts/0
遠端電腦 如:@hostname
使用者列表
所有登入的使用者
logrotate
將舊的登錄檔案移動成舊檔, 並且重新建立一個新的空的檔案來記錄
設定檔
/etc/logrotate.conf 主要的參數檔案
/etc/logrotate.d/ 是一個目錄, 該目錄裡面的所有檔案都會被主動的讀入
在 /etc/logrotate.d/ 裡面的檔案中,如果沒有設定,則以/etc/logrotate.conf 這個檔案為預設值!
logrotate [-vf] logfile選項與參數:
-d:開啟除錯模式
-v:啟動顯示模式,會顯示 logrotate 運作的過程喔!
-f:不論是否符合設定檔的規定,強制每個登錄檔都進行 rotate 的動作!
-m: 寄信,告訴logrotate用什麼指令去寄出紀錄檔,預設/bin/mail -s
--usage 列出使用狀態
-s 狀態。告訴logrotate使用一個交換狀態的記錄檔,當我們使用不同的帳號來設定多樣的紀錄檔,這是有用的。預設狀態紀錄在:/var/lib/logrotate/status
執行 logrotate 看看整個流程
logrotate -v /etc/logrotate.conf
強制進行 logrotate 的動作
logrotate -vf /etc/logrotate.conf
//-----------------------------------
log 檔的語法
log 檔的絕對路徑 { 參數 }
weekly 或 monthly → rotate 的頻率
rotate 數值 → 保留幾個 log 檔
create → 建立新的 log 檔
minsize 數值M → 超過幾 M 才備份 rotate
compress → rotate 時進行壓縮
prerotate:在啟動 logrotate 之前進行的指令,例如修改登錄檔的屬性等動作;
postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -HUP) 某個服務!
prerotate 與 postrotate 對於已加上特殊屬性的檔案處理上面,是相當重要的執行程序!
//------------------------------------
/etc/logrotate.conf 檔案
# see "man logrotate" for details
# rotate log files weekly(每週產生新記錄)
weekly
# keep 4 weeks worth of backlogs(保留四週的備份期)
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
//記錄正確登入系統者的帳號資訊
/var/log/wtmp { //到哪個路徑去抓哪個 log 檔案;
missingok // 如果找不到這個 log 檔案,就忽略過去,繼續執行下一個 logrotate 工作;
monthly
create 0664 root utmp //建立一個新的 log 檔案,並且設定權限與擁有者。
rotate 1
}
logrotate 是設定在 crond 的服務之下的,所以如果 crond 沒跑起來,那 logrotate 也就不會動作囉,要確定 logrotate 是不是有加入到 crond 的排程中,可以去 /etc/crontab 這個檔案或者是到 /etc/cron.daily/ 這個目錄底下來看看是不是有 logrotate 這個程序。
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
//-------------------------------------------------------
/var/run/utmp 記錄著現在登入的用戶。
/var/log/wtmp 記錄所有的登入和登出。
/var/log/lastlog 記錄每個用戶最後的登入信息。
/var/log/btmp 記錄錯誤的登入嘗試。
沒有留言:
張貼留言