Linux系統(tǒng)日志及日志分析
1. Linux系統(tǒng)日志的配置大部分Linux發(fā)行版默認(rèn)的日志守護(hù)進(jìn)程為syslog,位于/etc/syslog或/etc/syslogd,默認(rèn)配置文件為。任何希望生成日志的程序都可以向syslog發(fā)
1. Linux系統(tǒng)日志的配置
大部分Linux發(fā)行版默認(rèn)的日志守護(hù)進(jìn)程為syslog,位于/etc/syslog或/etc/syslogd,默認(rèn)配置文件為。任何希望生成日志的程序都可以向syslog發(fā)送信息。而Fedora、Ubuntu、rhel6、centos6以上版本默認(rèn)的日志系統(tǒng)都是rsyslog,rsyslog是syslog的多線程增強(qiáng)版。
2. 日志類(lèi)型和優(yōu)先級(jí)
Linux系統(tǒng)內(nèi)核和許多程序會(huì)產(chǎn)生各種錯(cuò)誤信息、警告信息和其他的提示信息,這些信息對(duì)管理員了解系統(tǒng)的運(yùn)行狀態(tài)是非常有用的,所以應(yīng)該把它們寫(xiě)到日志文件中去。完成這個(gè)過(guò)程的程序就是syslog。syslog可以根據(jù)日志的類(lèi)別和優(yōu)先級(jí)將日志保存到不同的文件中。為了方便查閱,可以把內(nèi)核信息與其他信息分開(kāi),單獨(dú)保存到一個(gè)獨(dú)立的日志文件中。默認(rèn)配置下,日志文件通常都保存在“/var/log”目錄下。
3. 常見(jiàn)的日志類(lèi)型
下面是常見(jiàn)的日志類(lèi)型,但并不是所有的Linux發(fā)行版都包含這些類(lèi)型:
- messages:包含系統(tǒng)的重要信息。
- lpr.log:打印機(jī)相關(guān)的日志。
- mail.log:郵件相關(guān)的日志。
- ftp.log:FTP服務(wù)器相關(guān)的日志。
- auth.log:用于記錄認(rèn)證和授權(quán)相關(guān)的日志。
- netinfo.log:網(wǎng)絡(luò)信息日志。
- install.log:安裝相關(guān)的日志。
4. 日志配置文件
`()`是syslog的配置文件,會(huì)根據(jù)日志類(lèi)型和優(yōu)先級(jí)來(lái)決定將日志保存到何處。典型的文件格式如下所示:
```
*.err;; /dev/console
daemon, /var/log/messages
/var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @
root,amrood /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *.* @program_namemark
```
第一列為日志類(lèi)型和日志優(yōu)先級(jí)的組合,每個(gè)類(lèi)型和優(yōu)先級(jí)的組合稱(chēng)為一個(gè)選擇器;后面一列為保存日志的文件、服務(wù)器,或輸出日志的終端。syslog進(jìn)程根據(jù)選擇器決定如何操作日志。
5. 使用logger命令寫(xiě)入日志
logger是Shell命令,可以通過(guò)該命令使用syslog的系統(tǒng)日志模塊,還可以從命令行直接向系統(tǒng)日志文件寫(xiě)入一行信息。logger命令的語(yǔ)法為:
```
logger [options] [message...]
```
其中,-f filename表示將filename文件的內(nèi)容作為日志;-i選項(xiàng)表示每行都記錄logger進(jìn)程的ID;-p priority指定優(yōu)先級(jí);-t tag使用指定的標(biāo)簽標(biāo)記每一個(gè)記錄行;message要寫(xiě)入的日志內(nèi)容,多條日志以空格為分隔;如果沒(méi)有指定日志內(nèi)容,并且-f filename選項(xiàng)為空,那么會(huì)把標(biāo)準(zhǔn)輸入作為日志內(nèi)容。
6. 日志轉(zhuǎn)儲(chǔ)
日志轉(zhuǎn)儲(chǔ)也叫日志回卷或日志輪轉(zhuǎn)。Linux中的日志通常增長(zhǎng)很快,會(huì)占用大量硬盤(pán)空間,需要在日志文件達(dá)到指定大小時(shí)分開(kāi)存儲(chǔ)。syslog只負(fù)責(zé)接收日志并保存到相應(yīng)的文件,但不會(huì)對(duì)日志文件進(jìn)行管理,因此經(jīng)常會(huì)造成日志文件過(guò)大,尤其是WEB服務(wù)器,輕易就能超過(guò)1G,給檢索帶來(lái)困難。
7. logrotate工具進(jìn)行日志管理
大多數(shù)Linux發(fā)行版使用logrotate或newsyslog對(duì)日志進(jìn)行管理。logrotate程序不但可以壓縮日志文件,減少存儲(chǔ)空間,還可以將日志發(fā)送到指定E-mail,方便管理員及時(shí)查看日志。
例如,規(guī)定郵件日志/var/log/maillog超過(guò)1G時(shí)轉(zhuǎn)儲(chǔ),每周一次,那么每隔一周logrotate進(jìn)程就會(huì)檢查/var/log/maillog文件的大?。?/p>
- 如果沒(méi)有超過(guò)1G,不進(jìn)行任何操作。
- 如果在1G~2G之間,就會(huì)創(chuàng)建新文件/var/log/maillog.1,并將多出的1G日志轉(zhuǎn)移到該文件,以給/var/log/maillog文件瘦身。
- 如果在2G~3G之間,會(huì)繼續(xù)創(chuàng)建新文件/var/log/maillog.2,并將/var/log/maillog.1的內(nèi)容轉(zhuǎn)移到該文件,將/var/log/maillog的內(nèi)容轉(zhuǎn)移到/var/log/maillog.1,以保持/var/log/maillog文件不超過(guò)1G。
可以看到,每次轉(zhuǎn)存都會(huì)創(chuàng)建一個(gè)新文件(如果不存在),命名格式為日志文件名加一個(gè)數(shù)字(從1開(kāi)始自動(dòng)增長(zhǎng)或以當(dāng)前日期為后綴),以保持當(dāng)前日志文件和轉(zhuǎn)存后的日志文件不超過(guò)指定大小。