日志系統(tǒng)對于一個系統(tǒng)來說是非常重要的,從日志文件我們可以獲取到系統(tǒng)的運行狀況,協(xié)助我們排查問題。
對于 CentOs 來說,日志系統(tǒng)主要包含2個服務(wù)與1個程序
syslogd:記錄系統(tǒng)與網(wǎng)絡(luò)服務(wù)的信息
klogd:記錄內(nèi)核產(chǎn)生的各項信息
logrotate:日志文件的輪替功能
說明:不同的 UNIX LIKE 對應(yīng)的服務(wù)可能不一樣
[root@localhost ~]# cat /etc/syslog.conf
#kern.* /dev/console
*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
*.emerg *
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
news.=crit /var/log/news/news.crit
news.=err /var/log/news/news.err
news.notice /var/log/news/news.notice
【服務(wù)類型】 【信息等級設(shè)置】【信息存儲方式】
*以 cron. /var/log/cron 為例**
cron 是服務(wù)類型
. 是信息等級設(shè)置
/var/log/cron 信息存儲方式
服務(wù)類別
服務(wù)類別 |
說明 |
auth (authpriv) |
主要與認(rèn)證有關(guān)的機制 |
cron |
就是例行性工作 cron/at 等產(chǎn)生信息記錄的地方; |
daemon |
與各個 daemon(服務(wù)進程) 有關(guān)的信息; |
kern |
內(nèi)核核 (kernel) 產(chǎn)生信息的地方 |
lpr |
與打印相關(guān)的信息 |
與郵件相關(guān)的信息 |
|
news |
與新聞組相關(guān)的信息 |
syslog |
syslogd 程序本身產(chǎn)生的信息 |
user, uucp, local0 ~ local7 |
與 Unix like 機器本身有關(guān)的一些信息。 |
日志信息等級
等級 |
等級名稱 |
說明 |
1 |
info |
僅是一些基本的信息說明而已; |
2 |
notice |
需要注意的信息; |
3 |
warning |
警示的信息, info, notice, warn 這三個信息都是在告知一些基本信息而已,應(yīng)該還不至于造成一些系統(tǒng)運行困擾; |
4 |
err |
一些重大的錯誤信息 |
5 |
crit |
比 error 還要嚴(yán)重的錯誤 |
6 |
alert |
警告警告,已經(jīng)很有問題的等級,比 crit 還要嚴(yán)重 |
7 |
emerg |
疼痛等級,意指系統(tǒng)已經(jīng)幾乎要死機的狀態(tài) |
. :代表比后面還要高的等級 (含該等級) 都被記錄下來的意思。如 mail .info
.=:代表所需要的等級就是后面接的等級而已
.!:代表不等于,除了該等級外的其他等級都記錄。
.*:代表說所有等級的信息都記錄
日志文件隨著時間會變得越來越多,此時就需要進行日志文件輪替。以控制日志文件規(guī)模.logrotate 就是做這個用的
/etc/logrotate.conf :記錄整體輪替配置信息
/etc/logrotate.d/* : 記錄各個服務(wù)類型的輪替配置信息
其實可以在/etc/logrotate.conf 中定義配置各種服務(wù)類型的日志輪替配置信息,為了方便管理將每個服務(wù)類型的日志輪替配置信息形成獨立文件存儲在/etc/logrotate.d/*
[root@localhost logrotate.d]# ll
-rw-r--r-- 1 root root 144 2012-02-23 acpid
-rw-r--r-- 1 root root 288 2007-11-12 conman
…….
-rw-r--r-- 1 root root 100 10-02 06:17 wpa_supplicant
-rw-r--r-- 1 root root 100 2012-07-26 yum
[root@localhost ~]# vim /etc/logrotate.conf
=>下面為默認(rèn)值。如不單獨配置將才有下面的默認(rèn)值
weekly <==默認(rèn)每周進行一次 rotate 的工作
rotate 4 <==默認(rèn)保留4個登錄文件
create <==以新創(chuàng)建文件繼續(xù)存儲日志文件
#compress <==被更動的登錄文件是否需要壓縮?如果登錄文件太大則可考慮此參數(shù)啟動
include /etc/logrotate.d
/var/log/wtmp { <==僅針對 /var/log/wtmp 所配置的參數(shù)
monthly <==每個月一次,取代每周!
minsize 1M <==文件容量一定要超過 1M 后才進行
create 0664 root utmp <==指定新建文件的權(quán)限與所屬帳號/群組
rotate 1 <==僅保留一個
}
當(dāng)?shù)谝淮螆?zhí)行輪替,原本日志文件 msg 被重命名為 msg1,同時創(chuàng)建新的 msg 以記錄新的日志信息,當(dāng)?shù)漠?dāng)?shù)诙螆?zhí)行輪替,日志文件 msg1 被重命名為 msg2, msg 重命名為 msg1,同時創(chuàng)建新的 msg 以記錄新的日志信息,依次類推,日志文件最多保存的數(shù)量為 rotate 這個屬性所指定的數(shù)值
正如前面看到的。日志輪替方式是寫在配置文件中的,這里只做簡單的說明
[root@localhost logrotate.d]# cat named
/var/log/named.log {
missingok
create 0644 named named
sharedscripts
postrotate
/sbin/service named reload 2> /dev/null > /dev/null || true
endscript
}
如上前面文件。Logrotate 輪替信息可以分為2部分
1. 內(nèi)部參數(shù)
2. 引用外部執(zhí)行
引用外部命令來進行額外的命令下達(dá),這個配置需與 sharedscripts .... endscript 配置合用才行。至于可用的環(huán)境為:
prerotate:在啟動 logrotate 之前進行的命令
postrotate:在做完 logrotate 之后啟動的命令
內(nèi)部參數(shù)
compress 通過 gzip 壓縮轉(zhuǎn)儲以后的日志
nocompress 不需要壓縮時,用這個參數(shù)
copytruncate 用于還在打開中的日志文件,把當(dāng)前日志備份并截斷
nocopytruncate 備份日志文件但是不截斷
create mode owner group 轉(zhuǎn)儲文件,使用指定的文件模式創(chuàng)建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用時,轉(zhuǎn)儲的日志文件到下一次轉(zhuǎn)儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉(zhuǎn)儲同時壓縮。
errors address 專儲時的錯誤信息發(fā)送到指定的 Email 地址
ifempty 即使是空文件也轉(zhuǎn)儲,這個是 logrotate 的缺省選項。
notifempty 如果是空文件的話,不轉(zhuǎn)儲
mail address 把轉(zhuǎn)儲的日志文件發(fā)送到指定的 E-mail 地址
nomail 轉(zhuǎn)儲時不發(fā)送日志文件
olddir directory 轉(zhuǎn)儲后的日志文件放入指定的目錄,必須和當(dāng)前日志文件在同一個文件系統(tǒng)
noolddir 轉(zhuǎn)儲后的日志文件和當(dāng)前日志文件放在同一個目錄下
prerotate/endscript 在轉(zhuǎn)儲以前需要執(zhí)行的命令可以放入這個對,這兩個關(guān)鍵字必須單獨成行
postrotate/endscript 在轉(zhuǎn)儲以后需要執(zhí)行的命令可以放入這個對,這兩個關(guān)鍵字必須單獨成行
daily 指定轉(zhuǎn)儲周期為每天
weekly 指定轉(zhuǎn)儲周期為每周
monthly 指定轉(zhuǎn)儲周期為每月
rotate count 指定日志文件刪除之前轉(zhuǎn)儲的次數(shù),0 指沒有備份,5 指保留5 個備份
tabootext [+] list 讓 logrotate 不轉(zhuǎn)儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 當(dāng)日志文件到達(dá)指定的大小時才轉(zhuǎn)儲,Size 可以指定 bytes (缺省)以及 K (sizek)或者M (sizem).
語法:logrotate [-vf] logfile
選項與參數(shù):
-v:顯示運行過程
-f:不論是否符合配置文件的數(shù)據(jù),強制每個日志文件都進行輪替操作
舉例
[root@localhost /]# logrotate -vf /etc/logrotate.conf
………………..
[root@localhost /]# ll /var/log/messages*
-rw------- 1 root root 50 03-28 14:00 /var/log/messages
-rw------- 1 root root 50 03-28 14:00 /var/log/messages.1
-rw------- 1 root root 50 03-28 13:59 /var/log/messages.2
-rw------- 1 root root 333879 03-28 10:44 /var/log/messages.3
-rw------- 1 root root 1289326 03-25 08:50 /var/log/messages.4