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