鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件
最近升級(jí)日期:2009/09/14
| 當(dāng)你的 Linux 系統(tǒng)出現(xiàn)不明原因的問題時(shí),很多人都告訴你,你要查閱一下登錄文件才能夠知道系統(tǒng)出了什么問題了,所以說,了解登錄文件是很重要的事情呢。登錄文件可以記錄系統(tǒng)在什么時(shí)間、哪個(gè)主機(jī)、哪個(gè)服務(wù)、出現(xiàn)了什么信息等資訊,這些資訊也包括使用者識(shí)別數(shù)據(jù)、系統(tǒng)故障排除須知等資訊。如果你能夠善用這些登錄文件資訊的話,你的系統(tǒng)出現(xiàn)錯(cuò)誤時(shí),你將可以在第一時(shí)間發(fā)現(xiàn),而且也能夠從中找到解決的方案,而不是昏頭轉(zhuǎn)向的亂問人呢。此外,登錄文件所記錄的資訊量是非常大的,要人眼分析實(shí)在很困難。此時(shí)利用 shell script 或者是其他軟件提供的分析工具來處理復(fù)雜的登錄文件,可以幫助你很多很多喔! |
1. 什么是登錄文件:登錄文件的重要性, 常見檔名,服務(wù)與程序
2. syslogd :記錄登錄文件的服務(wù)
2.1 登錄文件內(nèi)容的一般格式
2.2 syslog 的配置檔: /etc/syslog.conf, 默認(rèn)的 syslog.conf 內(nèi)容
2.3 登錄文件的安全性配置
2.4 登錄文件服務(wù)器的配置
3. 登錄文件的輪替 (logrotate)
3.1 logrotate 的配置檔
3.2 實(shí)際測(cè)試 logrotate 的動(dòng)作
3.3 自訂登錄文件的輪替功能
4. 分析登錄文件
4.1 CentOS 默認(rèn)提供的 logwatch
4.2 鳥哥自己寫的登錄文件分析工具:
5. 本章習(xí)題練習(xí)
6. 針對(duì)本文的建議:http://phorum.vbird.org/viewtopic.php?t=23895
什么是登錄文件
『詳細(xì)而確實(shí)的分析以及備份系統(tǒng)的登錄文件』是一個(gè)系統(tǒng)管理員應(yīng)該要進(jìn)行的任務(wù)之一。那么什么是登錄文件呢?簡(jiǎn)單的說,就是記錄系統(tǒng)活動(dòng)資訊的幾個(gè)文件,例如:何時(shí)、何地 (來源 IP)、何人 (什么服務(wù)名稱)、做了什么動(dòng)作 (信息登錄羅)。換句話說就是:記錄系統(tǒng)在什么時(shí)候由哪個(gè)程序做了什么樣的行為時(shí),發(fā)生了何種的事件等等。
要知道的是,我們的 Linux 主機(jī)在背景之下有相當(dāng)多的 daemons 同時(shí)在工作著,這些工作中的程序總是會(huì)顯示一些信息,這些顯示的信息最終會(huì)被記載到登錄文件當(dāng)中啦。也就是說,記錄這些系統(tǒng)的重要信息就是登錄文件的工作啦!
登錄文件的重要性
為什么說登錄文件很重要,重要到系統(tǒng)管理員需要隨時(shí)注意他呢?我們可以這么說:
- 解決系統(tǒng)方面的錯(cuò)誤:
用 Linux 這么久了,你應(yīng)該偶而會(huì)發(fā)現(xiàn)系統(tǒng)可能會(huì)出現(xiàn)一些錯(cuò)誤,包括硬件捉不到或者是某些系統(tǒng)程序無法順利運(yùn)行的情況。此時(shí)你該如何是好?由於系統(tǒng)會(huì)將硬件偵測(cè)過程記錄在登錄文件內(nèi),你只要透過查詢登錄文件就能夠了解系統(tǒng)作了啥事!并且由第十七章我們也知道 SELinux 與登錄文件的關(guān)系更加的強(qiáng)烈!所以羅,查詢登錄文件可以克服一些系統(tǒng)問題啦!
- 解決網(wǎng)絡(luò)服務(wù)的問題:
你可能在做完了某些網(wǎng)絡(luò)服務(wù)的配置后,卻一直無法順利啟動(dòng)該服務(wù),此時(shí)該怎辦?去廟里面拜拜抽簽嗎?三太子大大可能無法告訴你要怎么處理呢!由於網(wǎng)絡(luò)服務(wù)的各種問題通常都會(huì)被寫入特別的登錄文件,其實(shí)你只要查詢登錄文件就會(huì)知道出了什么差錯(cuò),還不需要請(qǐng)示三太子大大啦!舉例來說,如果你無法啟動(dòng)郵件服務(wù)器 (sendmail),那么查詢一下 /var/log/maillog 通常可以得到不錯(cuò)的解答!
- 過往事件記錄簿:
這個(gè)東西相當(dāng)?shù)闹匾?#xff01;例如:你發(fā)現(xiàn) WWW 服務(wù) (apache 軟件) 在某個(gè)時(shí)刻流量特別大,你想要了解為什么時(shí),可以透過登錄文件去找出該時(shí)段是哪些 IP 在連線與查詢的網(wǎng)頁數(shù)據(jù)為何,就能夠知道原因。此外,萬一哪天你的系統(tǒng)被入侵,并且被利用來攻擊他人的主機(jī),由於被攻擊主機(jī)會(huì)記錄攻擊者,因此你的 IP 就會(huì)被對(duì)方記錄。這個(gè)時(shí)候你要如何告知對(duì)方你的主機(jī)是由於被入侵所導(dǎo)致的問題,并且協(xié)助對(duì)方繼續(xù)往惡意來源追查呢?呵呵!此時(shí)登錄文件可是相當(dāng)重要的呢!
| Tips: 所以我們常說『天助自助者』是真的啦!你可以透過 (1)察看螢?zāi)簧厦娴腻e(cuò)誤信息與(2)登錄文件的錯(cuò)誤資訊,幾乎可以解決大部分的 Linux 問題! |
Linux 常見的登錄文件檔名
登錄文件可以幫助我們了解很多系統(tǒng)重要的事件,包括登陸者的部分資訊,因此登錄文件的權(quán)限通常是配置為僅有 root 能夠讀取而已。而由於登錄文件可以記載系統(tǒng)這么多的詳細(xì)資訊,所以啦,一個(gè)有經(jīng)驗(yàn)的主機(jī)管理員會(huì)隨時(shí)隨地查閱一下自己的登錄文件,以隨時(shí)掌握系統(tǒng)的最新脈動(dòng)!那么常見的幾個(gè)登錄文件有哪些呢?一般而言,有下面幾個(gè):
- /var/log/cron:
還記得第十六章例行性工作排程吧?你的 crontab 排程有沒有實(shí)際被進(jìn)行?進(jìn)行過程有沒有發(fā)生錯(cuò)誤?你的 /etc/crontab 是否撰寫正確?在這個(gè)登錄文件內(nèi)查詢看看。
- /var/log/dmesg:
記錄系統(tǒng)在啟動(dòng)的時(shí)候核心偵測(cè)過程所產(chǎn)生的各項(xiàng)資訊。由於 CentOS 默認(rèn)將啟動(dòng)時(shí)核心的硬件偵測(cè)過程取消顯示,因此額外將數(shù)據(jù)記錄一份在這個(gè)文件中;
- /var/log/lastlog:
可以記錄系統(tǒng)上面所有的帳號(hào)最近一次登陸系統(tǒng)時(shí)的相關(guān)資訊。第十四章講到的 lastlog 命令就是利用這個(gè)文件的記錄資訊來顯示的。
- /var/log/maillog 或 /var/log/mail/*:
記錄郵件的往來資訊,其實(shí)主要是記錄 sendmail (SMTP 協(xié)議提供者) 與 dovecot (POP3 協(xié)議提供者) 所產(chǎn)生的信息啦。SMTP 是發(fā)信所使用的通訊協(xié)議, POP3 則是收信使用的通訊協(xié)議。 sendmail 與 dovecot 則分別是兩套達(dá)成通訊協(xié)議的軟件。
- /var/log/messages:
這個(gè)文件相當(dāng)?shù)闹匾?#xff0c;幾乎系統(tǒng)發(fā)生的錯(cuò)誤信息 (或者是重要的資訊) 都會(huì)記錄在這個(gè)文件中;如果系統(tǒng)發(fā)生莫名的錯(cuò)誤時(shí),這個(gè)文件是一定要查閱的登錄文件之一。
- /var/log/secure:
基本上,只要牽涉到『需要輸入帳號(hào)口令』的軟件,那么當(dāng)?shù)顷憰r(shí) (不管登陸正確或錯(cuò)誤) 都會(huì)被記錄在此文件中。包括系統(tǒng)的 login 程序、圖形介面登陸所使用的 gdm 程序、 su, sudo 等程序、還有網(wǎng)絡(luò)連線的 ssh, telnet 等程序,登陸資訊都會(huì)被記載在這里;
- /var/log/wtmp, /var/log/faillog:
這兩個(gè)文件可以記錄正確登陸系統(tǒng)者的帳號(hào)資訊 (wtmp) 與錯(cuò)誤登陸時(shí)所使用的帳號(hào)資訊 (faillog) !我們?cè)诘谑徽抡劦降?last 就是讀取 wtmp 來顯示的,這對(duì)於追蹤一般帳號(hào)者的使用行為很有幫助!
- /var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的網(wǎng)絡(luò)服務(wù)會(huì)使用它們自己的登錄文件來記載它們自己產(chǎn)生的各項(xiàng)信息!上述的目錄內(nèi)則是個(gè)別服務(wù)所制訂的登錄文件。
常見的登錄文件就是這幾個(gè),但是不同的 Linux distributions ,通常登錄文件的檔名不會(huì)相同 (除了 /var/log/messages 之外 )。所以說,你還是得要查閱你 Linux 主機(jī)上面的登錄文件配置數(shù)據(jù),才能知道你的登錄文件主要檔名喔!
登錄文件所需相關(guān)服務(wù) (daemon) 與程序
那么這些登錄文件是怎么產(chǎn)生的呢?基本上有兩種方式,一種是由軟件開發(fā)商自行定義寫入的登錄文件與相關(guān)格式,例如 WWW 軟件 apache 就是這樣處理的。另一種則是由 Linux distribution 提供的登錄文件管理服務(wù)來統(tǒng)一管理。你只要將信息丟給這個(gè)服務(wù)后,他就會(huì)自己分門別類的將各種信息放置到相關(guān)的登錄文件去!CentOS 提供 syslogd 這個(gè)服務(wù)來統(tǒng)一管理登錄文件喔!
除了這個(gè) syslogd 之外,我們的核心也需要額外的登錄服務(wù)來記錄核心產(chǎn)生的各項(xiàng)資訊,這個(gè)專門記錄核心資訊的登錄文件服務(wù)就是 klogd 啦。所以說,登錄文件所需的服務(wù)主要就是 syslogd與 klogd 這兩者。
不過要注意的是,如果你任憑登錄文件持續(xù)記錄的話,由於系統(tǒng)產(chǎn)生的資訊天天都有,那么你的登錄文件的容量將會(huì)長大到無法無天~如果你的登錄文件容量太大時(shí),可能會(huì)導(dǎo)致大文件讀寫效率不佳的問題 (因?yàn)橐獜拇诺x入內(nèi)存,越大的文件消耗內(nèi)存量越多)。所以羅,你需要對(duì)登錄文件備份與升級(jí)。那...需要手動(dòng)處理喔?當(dāng)然不需要,我們可以透過 logrotate (登錄文件輪替) 這玩意兒來自動(dòng)化處理登錄文件容量與升級(jí)的問題喔!
所謂的 logrotate 基本上,就是將舊的登錄文件更改名稱,然后創(chuàng)建一個(gè)空的登錄文件,如此一來,新的登錄文件將重新開始記錄,然后只要將舊的登錄文件留下一陣子,嗯!那就可以達(dá)到將登錄文件『輪轉(zhuǎn)』的目的啦!此外,如果舊的紀(jì)錄 (大概要保存幾個(gè)月吧!) 保存了一段時(shí)間沒有問題,那么就可以讓系統(tǒng)自動(dòng)的將他砍掉,免得占掉很多寶貴的磁盤空間說!
總結(jié)一下,針對(duì)登錄文件所需的功能,我們需要的服務(wù)與程序有:
- syslogd:主要登錄系統(tǒng)與網(wǎng)絡(luò)等服務(wù)的信息;
- klogd:主要登錄核心產(chǎn)生的各項(xiàng)資訊;
- logrotate:主要在進(jìn)行登錄文件的輪替功能。
由於我們著眼點(diǎn)在於想要了解系統(tǒng)上面軟件所產(chǎn)生的各項(xiàng)資訊,因此本章主要針對(duì) syslogd 與 logrotate 來介紹。接著下來我們來談一談怎么樣規(guī)劃這兩個(gè)玩意兒。就由 syslogd 這支程序先談起吧!畢竟得先有登錄文件,才可以進(jìn)行l(wèi)ogrotate 呀!您說是吧!
syslogd :記錄登錄文件的服務(wù)
剛剛提到說 Linux 的登錄文件主要是由 syslogd 在負(fù)責(zé),那么你的 Linux是否有啟動(dòng) syslogd 呢?而且是否有配置啟動(dòng)時(shí)啟動(dòng)呢?呵呵!檢查一下先:
| [root@www ~]# ps aux | grep syslog USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 4294 0.0 0.0 1716 568 ? Ss Mar31 0:00 syslogd -m 0 # 瞧!確實(shí)有啟動(dòng)的![root@www ~]# chkconfig --list syslog syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 默認(rèn)情況下,文字介面與圖形介面 (3, 5) 都有啟動(dòng)喔! |
看到 syslog 這個(gè)服務(wù)名稱了吧?所以知道他已經(jīng)在系統(tǒng)中工作羅!好了,既然本章主要是講登錄文件,那么你知道登錄文件的內(nèi)容是如何展現(xiàn)的?syslog 的配置檔在哪里?如何配置?如果你的 Linux 主機(jī)想要當(dāng)作整個(gè)局域網(wǎng)的登錄文件服務(wù)器時(shí),又該如何配置?底下就讓我們來玩玩這玩意!
登錄文件內(nèi)容的一般格式
一般來說,系統(tǒng)產(chǎn)生的信息經(jīng)過 syslog 而記錄下來的數(shù)據(jù)中,每條信息均會(huì)記錄底下的幾個(gè)重要數(shù)據(jù):
- 事件發(fā)生的日期與時(shí)間;
- 發(fā)生此事件的主機(jī)名稱;
- 啟動(dòng)此事件的服務(wù)名稱 (如 samba, xinetd 等) 或函式名稱 (如 libpam ..);
- 該信息的實(shí)際數(shù)據(jù)內(nèi)容。
當(dāng)然,這些資訊的『詳細(xì)度』是可以修改的,而且,這些資訊可以作為系統(tǒng)除錯(cuò)之用呢!我們拿登錄時(shí)一定會(huì)記載帳號(hào)資訊的 /var/log/secure 為例好了:
| [root@www ~]# cat /var/log/secure 1 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session opened for user root by (uid=0) 2 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session closed foruser root 3 Mar 16 16:01:51 www su: pam_unix(su-l:auth): authentication failure; logname=vbird uid=500 euid=0 tty=pts/1 ruser=vbird rhost= user=root 4 Mar 16 16:01:55 www su: pam_unix(su-l:session): session opened for user root by vbird(uid=500) 5 Mar 16 16:02:22 www su: pam_unix(su-l:session): session closed for user root |--日期/時(shí)間---|-H-|-----服務(wù)與相關(guān)函數(shù)-------|--信息說明------> |
我們拿第一筆數(shù)據(jù)來說明好了,該數(shù)據(jù)是說:『在三月14日 (Mar 14) 的下午 15:38 分,由 www 這部主機(jī)的 atd [PID 為 18701] 傳來的消息,這個(gè)消息是透過 pam_unix 這個(gè)模塊所提出的。信息內(nèi)容為 root (uid=0) 這個(gè)帳號(hào)已經(jīng)開啟 atd 的活動(dòng)了。』有夠清楚吧!那請(qǐng)您自行翻譯一下后面的 4 條信息內(nèi)容是什么喔!
其實(shí)還有很多的資訊值得查閱的呢!尤其是 /var/log/messages 的內(nèi)容。記得一個(gè)好的系統(tǒng)管理員,要常常去『巡視』登錄文件的內(nèi)容喔!尤其是發(fā)生底下幾種情況時(shí):
- 當(dāng)你覺得系統(tǒng)似乎不太正常時(shí);
- 某個(gè) daemon 老是無法正常啟動(dòng)時(shí);
- 某個(gè)使用者老是無法登陸時(shí);
- 某個(gè) daemon 運(yùn)行過程老是不順暢時(shí);
還有很多啦!反正覺得系統(tǒng)不太正常,就得要查詢查詢登錄文件就是了。
| Tips: 提供一個(gè)鳥哥常做的檢查方式。當(dāng)我老是無法成功的啟動(dòng)某個(gè)服務(wù)時(shí),我會(huì)在最后一次啟動(dòng)該服務(wù)后,立即檢查登錄文件,先 (1)找到現(xiàn)在時(shí)間所登錄的資訊『第一欄位』; (2)找到我想要查詢的那個(gè)服務(wù)『第三欄位』,(3)最后再仔細(xì)的查閱第四欄位的資訊,來藉以找到錯(cuò)誤點(diǎn)。 |
syslog 的配置檔:/etc/syslog.conf
什么?登錄文件還有配置檔?喔!不是啦~是 syslogd 這個(gè) daemon 的配置檔啦!我們現(xiàn)在知道 syslogd 可以負(fù)責(zé)主機(jī)產(chǎn)生的各個(gè)資訊的登錄,而這些資訊本身是有『嚴(yán)重等級(jí)』之分的,而且,這些數(shù)據(jù)最終要傳送到哪個(gè)文件去是可以修改的呢,所以我們才會(huì)在一開頭的地方講說,每個(gè) Linux distributions 放置的登錄文件檔名可能會(huì)有所差異啊!
基本上, syslog 針對(duì)各種服務(wù)與信息記錄在某些文件的配置檔就是 /etc/syslog.conf,這個(gè)文件規(guī)定了『(1)什么服務(wù) (2)的什么等級(jí)信息 (3)需要被記錄在哪里(裝置或文件)』這三個(gè)咚咚,所以配置的語法會(huì)是這樣:
| 服務(wù)名稱[.=!]信息等級(jí) 信息記錄的檔名或裝置或主機(jī) # 底下以 mail 這個(gè)服務(wù)產(chǎn)生的 info 等級(jí)為例: mail.info /var/log/maillog_info # 這一行說明:mail 服務(wù)產(chǎn)生的大於等於 info 等級(jí)的信息,都記錄到 # /var/log/maillog_info 文件中的意思。 |
我們將上面的數(shù)據(jù)簡(jiǎn)單的分為三部分來說明:
- 服務(wù)名稱
syslog 本身有規(guī)范一些服務(wù),你可以透過這些服務(wù)來儲(chǔ)存系統(tǒng)的信息。syslog 認(rèn)識(shí)的服務(wù)主要有底下這些:(可使用 man 3 syslog 查詢到相關(guān)的資訊)
| 服務(wù)類別 | 說明 |
| auth (authpriv) | 主要與認(rèn)證有關(guān)的機(jī)制,例如 login, ssh, su 等需要帳號(hào)/口令的咚咚; |
| cron | 就是例行性工作排程 cron/at 等產(chǎn)生信息記錄的地方; |
| daemon | 與各個(gè) daemon 有關(guān)的信息; |
| kern | 就是核心 (kernel) 產(chǎn)生信息的地方; |
| lpr | 亦即是列印相關(guān)的信息啊! |
| 只要與郵件收發(fā)有關(guān)的信息紀(jì)錄都屬於這個(gè); | |
| news | 與新聞群組服務(wù)器有關(guān)的東西; |
| syslog | 就是 syslogd 這支程序本身產(chǎn)生的資訊啊! |
| user, uucp, local0 ~ local7 | 與 Unix like 機(jī)器本身有關(guān)的一些信息。 |
上面談到的都是 syslog 自行制訂的服務(wù)名稱,軟件開發(fā)商可以透過呼叫上述的服務(wù)名稱來記錄他們的軟件。舉例來說, sendmail 與 postfix 及 dovecot 都是與郵件有關(guān)的軟件,這些軟件在設(shè)計(jì)登錄文件記錄時(shí),都會(huì)主動(dòng)呼叫 syslogd 內(nèi)的 mail 服務(wù)名稱 (LOG_MAIL),所以上述三個(gè)軟件 (sendmail, postfix, dovecot) 產(chǎn)生的信息在 syslog 看起來,就會(huì)『是 mail 』類型的服務(wù)了。我們可以將這個(gè)概念繪制如底下的圖示來理解:
圖 2.2.1、 syslog 所制訂的服務(wù)名稱與軟件呼叫的方式
另外,每種服務(wù)所產(chǎn)生的數(shù)據(jù)量其實(shí)差異是很大的,舉例來說, mail 的登錄文件信息多的要命,每一封信件進(jìn)入后, mail 至少需要記錄『寄信人的資訊;與收信者的信息』等等;而如果是用來做為工作站主機(jī)的,那么登陸者 (利用 login 登錄主機(jī)處理事情)的數(shù)量一定不少,那個(gè) authpriv 所管轄的內(nèi)容可就多的要命了。
為了讓不同的資訊放置到不同的文件當(dāng)中,好讓我們分門別類的進(jìn)行登錄文件的管理,所以羅,將各種類別的服務(wù)之登錄文件,記錄在不同的文件里面,就是我們 /etc/syslog.conf 所要作的規(guī)范了!
- 信息等級(jí)
同一個(gè)服務(wù)所產(chǎn)生的信息也是有差別的,有啟動(dòng)時(shí)僅通知系統(tǒng)而已的一般信息 (information),有出現(xiàn)還不至於影響到正常運(yùn)行的警告信息 (warn) ,還有系統(tǒng)硬件發(fā)生嚴(yán)重錯(cuò)誤時(shí),所產(chǎn)生的重大問題信息 (error 等等);信息到底有多少種嚴(yán)重的等級(jí)呢?基本上,syslog 將信息分為七個(gè)主要的等級(jí),依序是這樣的(由不重要排列到重要信息等級(jí)):
| 等級(jí) | 等級(jí)名稱 | 說明 |
| 1 | info | 僅是一些基本的信息說明而已; |
| 2 | notice | 比 info 還需要被注意到的一些資訊內(nèi)容; |
| 3 | warning (warn) | 警示的信息,可能有問題,但是還不至於影響到某個(gè) daemon 運(yùn)行的資訊;基本上,info, notice, warn 這三個(gè)信息都是在告知一些基本資訊而已,應(yīng)該還不至於造成一些系統(tǒng)運(yùn)行困擾; |
| 4 | err (error) | 一些重大的錯(cuò)誤信息,例如配置檔的某些配置值造成該服務(wù)服法啟動(dòng)的資訊說明,通常藉由 err 的錯(cuò)誤告知,應(yīng)該可以了解到該服務(wù)無法啟動(dòng)的問題呢! |
| 5 | crit | 比 error 還要嚴(yán)重的錯(cuò)誤資訊,這個(gè) crit 是臨界點(diǎn) (critical) 的縮寫,這個(gè)錯(cuò)誤已經(jīng)很嚴(yán)重了喔! |
| 6 | alert | 警告警告,已經(jīng)很有問題的等級(jí),比 crit 還要嚴(yán)重! |
| 7 | emerg (panic) | 疼痛等級(jí),意指系統(tǒng)已經(jīng)幾乎要死機(jī)的狀態(tài)!很嚴(yán)重的錯(cuò)誤資訊了。通常大概只有硬件出問題,導(dǎo)致整個(gè)核心無法順利運(yùn)行,就會(huì)出現(xiàn)這樣的等級(jí)的信息吧! |
除了這些有等級(jí)的信息外,還有兩個(gè)特殊的等級(jí),那就是 debug(錯(cuò)誤偵測(cè)等級(jí)) 與 none (不需登錄等級(jí)) 兩個(gè),當(dāng)我們想要作一些錯(cuò)誤偵測(cè),或者是忽略掉某些服務(wù)的資訊時(shí),就用這兩個(gè)咚咚吧!
特別留意一下在信息等級(jí)之前還有 [.=!] 的連結(jié)符號(hào)喔!他代表的意思是這樣的:
- . :代表『比后面還要高的等級(jí) (含該等級(jí))都被記錄下來』的意思,例如: mail.info 代表只要是 mail的資訊,而且該資訊等級(jí)高於 info (含 info 本身)時(shí),就會(huì)被記錄下來的意思。
- .=:代表所需要的等級(jí)就是后面接的等級(jí)而已,其他的不要!
- .!:代表不等於,亦即是除了該等級(jí)外的其他等級(jí)都記錄。
一般來說,我們比較常使用的是『.』這個(gè)連結(jié)符號(hào)啦!^_^
- 信息記錄的檔名或裝置或主機(jī)
再來則是這個(gè)信息要放置在哪里的紀(jì)錄了。通常我們使用的都是記錄的文件啦!但是也可以輸出到裝置呦!例如打印機(jī)之類的!也可以記錄到不同的主機(jī)上頭去呢!底下就是一些常見的放置處:
- 文件的絕對(duì)路徑:通常就是放在 /var/log 里頭的文件啦!
- 打印機(jī)或其他:例如 /dev/lp0 這個(gè)打印機(jī)裝置
- 使用者名稱:顯示給使用者羅!
- 遠(yuǎn)程主機(jī):例如 @www.vbird.tsai 當(dāng)然啦,要對(duì)方主機(jī)也能支持才行!
- *:代表『目前在線上的所有人』,類似 wall 這個(gè)命令的意義!
- syslog.conf 語法練習(xí)
基本上,整個(gè) syslog 的配置檔就只是這樣而已,底下我們來思考一些例題,好讓你可以更清楚的知道如何配置 syslogd 啊!
| 例題: 如果我要將我的 mail 相關(guān)的數(shù)據(jù)給他寫入 /var/log/maillog 當(dāng)中,那么在 /etc/syslog.conf 的語法如何設(shè)計(jì)? 答: 基本的寫法是這樣的: mail.info /var/log/maillog 注意到上面喔,當(dāng)我們的等級(jí)使用 info 時(shí),那么『任何大於 info 等級(jí)(含 info 這個(gè)等級(jí))之上的信息,都會(huì)被寫入到后面接的文件之中!』這樣可以了解嗎?也就是說,我們可以將所有 mail 的登錄資訊都紀(jì)錄在/var/log/maillog 里面的意思啦! |
| 例題: 我要將新聞群組數(shù)據(jù) (news) 及例行性工作排程 (cron) 的信息都寫入到一個(gè)稱為/var/log/cronnews 的文件中,但是這兩個(gè)程序的警告信息則額外的記錄在 /var/log/cronnews.warn 中,那該如何配置我的 syslog.conf 呢? 答: 很簡(jiǎn)單啦!既然是兩個(gè)程序,那么只好以分號(hào)來隔開了,此外,由於第二個(gè)指定文件中,我只要記錄警告信息,因此配置上需要指定『.=』這個(gè)符號(hào),所以語法成為了: news.*;cron.* /var/log/cronnews news.=warn;cron.=warn /var/log/cronnews.warn 上面那個(gè)『.=』就是在指定等級(jí)的意思啦!由於指定了等級(jí),因此,只有這個(gè)等級(jí)的信息才會(huì)被紀(jì)錄在這個(gè)文件里面呢!此外你也必須要注意,news 與 cron 的警告信息也會(huì)寫入 /var/log/cronnews 內(nèi)喔! |
| 例題: 我的 messages 這個(gè)文件需要記錄所有的資訊,但是就是不想要記錄 cron, mail 及 news 的資訊,那么應(yīng)該怎么寫才好? 答: 可以有兩種寫法,分別是: *.*;news,cron,mail.none /var/log/messages *.*;news.none;cron.none;mail.none /var/log/messages 使用『,』分隔時(shí),那么等級(jí)只要接在最后一個(gè)即可,如果是以『;』來分的話,那么就需要將服務(wù)與等級(jí)都寫上去羅!這樣會(huì)配置了吧! |
- CentOS 5.x 默認(rèn)的 syslog.conf 內(nèi)容
了解語法之后,我們來看一看 syslog 有哪些系統(tǒng)服務(wù)已經(jīng)在記錄了呢?就是瞧一瞧 /etc/syslog.conf 這個(gè)文件的默認(rèn)內(nèi)容羅!(注意!如果需要將該行做為注解時(shí),那么就加上 # 符號(hào)就可以啦)
| # 來自 CentOS 5.x 的相關(guān)數(shù)據(jù) [root@www ~]# vim /etc/syslog.conf 1 #kern.* /dev/console 2 *.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages 3 authpriv.* /var/log/secure 4 mail.* -/var/log/maillog 5 cron.* /var/log/cron 6 *.emerg * 7 uucp,news.crit /var/log/spooler 8 local7.* /var/log/boot.log 9 news.=crit /var/log/news/news.crit 10 news.=err /var/log/news/news.err 11 news.notice /var/log/news/news.notice |
上面總共僅有十一行配置值,每一行的意義是這樣的:
在上面的第四行關(guān)於 mail 的記錄中,在記錄的文件 /var/log/maillog 前面還有個(gè)減號(hào)『 - 』是干嘛用的?由於郵件所產(chǎn)生的信息比較多,因此我們希望郵件產(chǎn)生的信息先儲(chǔ)存在速度較快的內(nèi)存中 (buffer) ,等到數(shù)據(jù)量夠大了才一次性的將所有數(shù)據(jù)都填入磁碟內(nèi),這樣將有助於登錄文件的存取性能。只不過由於信息是緩存在內(nèi)存內(nèi),因此若不正常關(guān)機(jī)導(dǎo)致登錄資訊未回填到登錄文件中,可能會(huì)造成部分?jǐn)?shù)據(jù)的遺失。
此外,每個(gè) Linux distributions 的 syslog.conf 配置差異是頗大的,如果你想要找到相對(duì)應(yīng)的登錄資訊時(shí),可得要查閱一下 /etc/syslog.conf 這個(gè)文件才行!否則可能會(huì)發(fā)生分析到錯(cuò)誤的資訊喔!舉例來說,鳥哥有自己寫一支分析登錄文件的 script,這個(gè) script 是依據(jù) Red Hat 系統(tǒng)默認(rèn)的登錄文件所寫的,因此不同的 distributions 想要使用這支程序時(shí),就得要自行設(shè)計(jì)與修改一下 /etc/syslog.conf 才行喔!否則就可能會(huì)分析到錯(cuò)誤的資訊羅。那么如果你有自己的需要而得要修訂登錄文件時(shí),該如何進(jìn)行?
- 自行添加登錄文件文件功能
如果你有其他的需求,所以需要特殊的文件來幫你記錄時(shí),呵呵!別客氣,千萬給他記錄在/etc/syslog.conf 當(dāng)中,如此一來,你就可以重復(fù)的將許多的資訊記錄在不同的文件當(dāng)中,以方便你的管理呢!讓我們來作個(gè)練習(xí)題吧!如果你想要讓『所有的資訊』都額外寫入到 /var/log/admin.log 這個(gè)文件時(shí),你可以怎么作呢?先自己想一想,并且作一下,再來看看底下的作法啦!
| # 1. 先配置好所要?jiǎng)?chuàng)建的文件配置! [root@www ~]# vim /etc/syslog.conf # Add by VBird 2009/04/08 <==再次強(qiáng)調(diào),自己修改的時(shí)候加入一些說明 *.info /var/log/admin.log <==有用的是這行啦!# 2. 重新啟動(dòng) syslog 呢! [root@www ~]# /etc/init.d/syslog restart [root@www ~]# ll /var/log/admin.log -rw------- 1 root root 118 Apr 8 13:50 /var/log/admin.log # 瞧吧!創(chuàng)建了這個(gè)登錄文件出現(xiàn)羅! |
很簡(jiǎn)單吧!如此一來,所有的資訊都會(huì)寫入 /var/log/admin.log 里面了!
登錄文件的安全性配置
好了,由上一個(gè)小節(jié)里面我們知道了 syslog.conf 的配置,也知道了登錄文件內(nèi)容的重要性了,所以,如果幻想你是一個(gè)很厲害的黑客,想利用他人的計(jì)算機(jī)干壞事,然后又不想留下證據(jù),你會(huì)怎么作?對(duì)啦!就是離開的時(shí)候?qū)⑵ü刹粮蓛?#xff0c;將所有可能的信息都給他抹煞掉,所以第一個(gè)動(dòng)腦筋的地方就是登錄文件的清除工作啦~如果你的登錄文件不見了,那該怎辦?
| Tips: 哇!鳥哥教人家干壞事……喂!不要亂講話~俺的意思是,如果改天你發(fā)現(xiàn)你的登錄文件不翼而飛了,或者是發(fā)現(xiàn)你的登錄文件似乎不太對(duì)勁的時(shí)候,最常發(fā)現(xiàn)的就是網(wǎng)友常常會(huì)回報(bào)說,他的/var/log 這個(gè)目錄『不見了!』不要笑!這是真的事情!請(qǐng)記得,『趕快清查你的系統(tǒng)!』 |
傷腦筋呢!有沒有辦法防止登錄文件被刪除?或者是被 root 自己不小心變更呢?有呀!拔掉網(wǎng)絡(luò)線或電源線就好了……呵呵!別擔(dān)心,基本上,我們可以透過一個(gè)隱藏的屬性來配置你的登錄文件,成為『只可以添加數(shù)據(jù),但是不能被刪除』的狀態(tài),那么或許可以達(dá)到些許的保護(hù)!不過,如果你的root 帳號(hào)被破解了,那么底下的配置還是無法保護(hù)的,因?yàn)槟阋浀谩?root是可以在系統(tǒng)上面進(jìn)行任何事情的 』,因此,請(qǐng)將你的 root 這個(gè)帳號(hào)的口令配置的安全一些!千萬不要輕忽這個(gè)問題呢!
| Tips: 為什么登錄文件還要防止被自己 (root) 不小心所修改過呢?鳥哥在教 Linux 的課程時(shí),我的學(xué)生常常會(huì)舉手說:『老師,我的登錄文件不能記錄資訊了!糟糕!是不是被入侵了啊?』怪怪!明明是計(jì)算機(jī)教室的主機(jī),使用的是 Private IP 而且學(xué)校計(jì)中還有抵擋機(jī)制,不可能被攻擊吧?查詢了才知道原來同學(xué)很喜歡使用『 :wq 』來離開 vim 的環(huán)境,但是 syslog 的登錄文件只要『被編輯過』就無法繼續(xù)記錄!所以才會(huì)導(dǎo)致不能記錄的問題。此時(shí)你得要 (1)改變使用 vim 的習(xí)慣; (2)重新啟動(dòng) syslog 讓他再繼續(xù)提供服務(wù)才行喔! |
既然如此,那么我們就來處理一下隱藏屬性的東東吧!我們?cè)诘谄哒抡劦竭^ lsattr與 chattr這兩個(gè)東西啦!如果將一個(gè)文件以 chattr 配置 i 這個(gè)屬性時(shí),那么該文件連 root都不能殺掉!而且也不能新增數(shù)據(jù),嗯!真安全!但是,如此一來登錄文件的功能豈不是也就消失了?因?yàn)闆]有辦法寫入呀!所以羅,我們要使用的是a 這個(gè)屬性!你的登錄文件如果配置了這個(gè)屬性的話,那么他將只能被添加,而不能被刪除!嗯!這個(gè)項(xiàng)目就非常的符合我們登錄文件的需求啦!因此,你可以這樣的添加你的登錄文件的隱藏屬性。
| Tips: 請(qǐng)注意,底下的這個(gè) chattr 的配置狀態(tài):『僅適合已經(jīng)對(duì) Linux 系統(tǒng)很有概念的朋友』來配置,對(duì)於新手來說,建議你直接使用系統(tǒng)的默認(rèn)值就好了,免得到最后登錄文件無法寫入~那就比較糗一點(diǎn)! @_@ |
| [root@www ~]# chattr +a /var/log/messages [root@www ~]# lsattr /var/log/messages -----a------- /var/log/messages |
加入了這個(gè)屬性之后,你的 /var/log/messages 登錄文件從此就僅能被添加,而不能被刪除,直到root 以『 chattr -a /var/log/messages 』取消這個(gè) a 的參數(shù)之后,才能被刪除或移動(dòng)喔!
雖然,為了你登錄文件的資訊安全,這個(gè) chattr 的 +a 旗標(biāo)可以幫助你維護(hù)好這個(gè)文件,不過,如果你的系統(tǒng)已經(jīng)被取得 root 的權(quán)限,而既然 root 可以下達(dá) chattr -a 來取消這個(gè)旗標(biāo),所以羅,還是有風(fēng)險(xiǎn)的啦!此外,前面也稍微提到,新手最好還是先不要添加這個(gè)旗標(biāo),很容易由於自己的忘記,導(dǎo)致系統(tǒng)的重要信息無法記錄呢。
基本上,鳥哥認(rèn)為,這個(gè)旗標(biāo)最大的用處除了在保護(hù)你登錄文件的數(shù)據(jù)外,他還可以幫助你避免掉不小心寫入登錄文件的狀況喔。要注意的是,當(dāng)『你不小心 "手動(dòng)" 更動(dòng)過登錄文件后,例如那個(gè) /var/log/messages ,你不小心用 vi 開啟他,離開卻下達(dá) :wq 的參數(shù),呵呵!那么該文件未來將不會(huì)再繼續(xù)進(jìn)行登錄動(dòng)作! 』這個(gè)問題真的很常發(fā)生!由於你以 vi 儲(chǔ)存了登錄文件,則 syslogd 會(huì)誤判為該文件已被更動(dòng)過,將導(dǎo)致 syslogd 不再寫入該文件新的內(nèi)容~很傷腦筋的!
要讓該登錄文件可以繼續(xù)寫入,你只要重新啟動(dòng) syslog (/etc/init.d/syslog restart) 即可。不過,總是比較麻煩。所以啊,如果你針對(duì)登錄文件下達(dá) chattr +a 的參數(shù),嘿嘿!未來你就不需要害怕不小心更動(dòng)到該文件了!因?yàn)闊o法寫入嘛!除了可以新增之外~ ^_^
不過,也因?yàn)檫@個(gè) +a 的屬性讓該文件無法被刪除與修改,所以羅,當(dāng)我們進(jìn)行登錄文件輪替時(shí) (logrotate),將會(huì)無法移動(dòng)該登錄文件的檔名呢!所以會(huì)造成很大的困擾。這個(gè)困擾雖然可以使用 logrotate 的配置檔來解決,但是,還是先將登錄文件的 +a 旗標(biāo)拿掉吧!
| [root@www ~]# chattr -a /var/log/messages |
登錄文件服務(wù)器的配置
我們?cè)谥吧晕⑻岬降?#xff0c;在 syslog.conf 文件當(dāng)中,可以將登錄數(shù)據(jù)傳送到打印機(jī)或者是遠(yuǎn)程主機(jī)上面去。這樣做有什么意義呢?如果你將登錄資訊直接傳送到打印機(jī)上面的話,那么萬一不小心你的系統(tǒng)被 cracker 所入侵,他也將你的 /var/log/ 砍掉了,怎么辦?沒關(guān)系啊!反正你已經(jīng)將重要數(shù)據(jù)直接以打印機(jī)記錄起來了,嘿嘿!他是無法逃開的啦!^_^
再想像一個(gè)環(huán)境,你的辦公室內(nèi)有十部 Linux 主機(jī),每一部負(fù)責(zé)一個(gè)網(wǎng)絡(luò)服務(wù),你為了要了解每部主機(jī)的狀態(tài),因此,你常常需要登陸這十部主機(jī)去查閱你的登錄文件~哇!光用想的,每天要進(jìn)入十部主機(jī)去查數(shù)據(jù),想到就煩~沒關(guān)系~這個(gè)時(shí)候我們可以讓某一部主機(jī)當(dāng)成『登錄文件服務(wù)器』,用他來記錄所有的十部 linux 主機(jī)的資訊,嘿嘿!這樣我就直接進(jìn)入一部主機(jī)就可以了!省時(shí)又省事,真方便~
那要怎么達(dá)到這樣的功能呢?很簡(jiǎn)單啦,我們 CentOS 5.x 默認(rèn)的 syslog 本身就已經(jīng)具有這個(gè)登錄文件服務(wù)器的功能了,只是默認(rèn)并沒有啟動(dòng)該功能而已。你可以透過 man syslogd 去查詢一下相關(guān)的選項(xiàng)就能夠知道啦!既然是登錄文件服務(wù)器,那么我們的 Linux 主機(jī)當(dāng)然會(huì)啟動(dòng)一個(gè)端口來監(jiān)聽了,那個(gè)默認(rèn)的端口就是 UDP 的 514 喔!
圖 2.4.1、登錄文件服務(wù)器的架構(gòu)
如上圖所示,服務(wù)器會(huì)啟動(dòng)監(jiān)聽的端口,用戶端則將登錄文件再轉(zhuǎn)出一份送到服務(wù)器去。而既然是登錄文件『服務(wù)器』,所以當(dāng)然有服務(wù)器與用戶端 (client) 羅!這兩者的配置分別是這樣的:
| # 1. Server 端:修改 syslogd 的啟動(dòng)配置檔,通常在 /etc/sysconfig 內(nèi)! [root@www ~]# vim /etc/sysconfig/syslog # 找到底下這一行: SYSLOGD_OPTIONS="-m 0" # 改成底下這樣子! SYSLOGD_OPTIONS="-m 0 -r"# 2. 重新啟動(dòng)與觀察 syslogd 喔! [root@www ~]# /etc/init.d/syslog restart [root@www ~]# netstat -lunp | grep syslog Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:514 0.0.0.0:* 13981/syslogd # 嘿嘿!你的登錄文件主機(jī)已經(jīng)配置妥當(dāng)羅!很簡(jiǎn)單吧! |
透過這個(gè)簡(jiǎn)單的動(dòng)作,你的 Linux 主機(jī)已經(jīng)可以接收來自其他主機(jī)的登錄資訊了!當(dāng)然啦,你必須要知道網(wǎng)絡(luò)方面的相關(guān)基礎(chǔ),這里鳥哥只是先介紹,未來了解了網(wǎng)絡(luò)相關(guān)資訊后,再回頭來這里瞧一瞧先! ^_^
至於 client 端的配置就簡(jiǎn)單多了!只要指定某個(gè)資訊傳送到這部主機(jī)即可!舉例來說,我們的登錄文件服務(wù)器 IP 為 192.168.1.100 ,而 client 端希望所有的數(shù)據(jù)都送給主機(jī),所以,可以在 /etc/syslog.conf 里面新增這樣的一行:
| [root@www ~]# vim /etc/syslog.conf *.* @192.168.1.100 |
再重新啟動(dòng) syslog 后,立刻就搞定了!而未來主機(jī)上面的登錄文件當(dāng)中,每一行的『主機(jī)名稱』就會(huì)顯示來自不同主機(jī)的資訊了。很簡(jiǎn)單吧! ^_^。接下來,讓我們來談一談,那么如何針對(duì)登錄文件來進(jìn)行輪轉(zhuǎn) (rotate) 呢?
登錄文件的輪替(logrotate)
假設(shè)我們已經(jīng)將登錄數(shù)據(jù)寫入了記錄檔中了,也已經(jīng)利用 chattr 配置了 +a 這個(gè)屬性了,那么該如何進(jìn)行l(wèi)ogrotate 的工作呢?這里請(qǐng)?zhí)貏e留意的是:『syslog 利用的是 daemon 的方式來啟動(dòng)的,當(dāng)有需求的時(shí)候立刻就會(huì)被運(yùn)行的,但是 logrotate 卻是在規(guī)定的時(shí)間到了之后才來進(jìn)行登錄文件的輪替,所以這個(gè) logrotate 程序當(dāng)然就是掛在 cron 底下進(jìn)行的呦!』仔細(xì)看一下 /etc/cron.daily/ 里面的文件,嘿嘿~看到了吧! /etc/cron.daily/logrotate 就是記錄了每天要進(jìn)行的登錄文件輪替的行為啦! ^_^!底下我們就來談一談怎么樣設(shè)計(jì)這個(gè) logrotate 吧!
logrotate 的配置檔
既然 logrotate 主要是針對(duì)登錄文件來進(jìn)行輪替的動(dòng)作,所以羅,他當(dāng)然必須要記載『在什么狀態(tài)下才將登錄文件進(jìn)行輪替』的配置啊!那么 logrotate 這個(gè)程序的參數(shù)配置檔在哪里呢?呵呵!那就是:
- /etc/logrotate.conf
- /etc/logrotate.d/
那個(gè) logrotate.conf 才是主要的參數(shù)文件,至於 logrotate.d 是一個(gè)目錄,該目錄里面的所有文件都會(huì)被主動(dòng)的讀入 /etc/logrotate.conf 當(dāng)中來進(jìn)行!另外,在/etc/logrotate.d/ 里面的文件中,如果沒有規(guī)定到的一些細(xì)部配置,則以 /etc/logrotate.conf這個(gè)文件的規(guī)定來指定為默認(rèn)值!
好了,剛剛我們提到 logrotate 的主要功能就是將舊的登錄文件移動(dòng)成舊檔,并且重新創(chuàng)建一個(gè)新的空的文件來記錄,他的運(yùn)行結(jié)果有點(diǎn)類似底下的圖示:
圖 3.1.1、 登錄文件進(jìn)行 logrotate 的結(jié)果
由上面的圖示我們可以清楚的知道,當(dāng)?shù)谝淮芜\(yùn)行完 rotate 之后,原本的 messages 會(huì)變成 messages.1而且會(huì)制造一個(gè)空的 messages 給系統(tǒng)來儲(chǔ)存登錄文件。而第二次運(yùn)行之后,則 messages.1 會(huì)變成messages.2 而 messages 會(huì)變成 messages.1 ,又造成一個(gè)空的 messages 來儲(chǔ)存登錄文件!那么如果我們僅配置保留三個(gè)登錄文件而已的話,那么運(yùn)行第四次時(shí),則messages.3 這個(gè)文件就會(huì)被刪除,并由后面的較新的保存登錄文件所取代!基本的工作就是這樣啦!
那么多久進(jìn)行一次這樣的 logrotate 工作呢?這些都記錄在 logrotate.conf 里面,我們來看一下默認(rèn)的 logrotate 的內(nèi)容吧!
| [root@www ~]# vim /etc/logrotate.conf # 底下的配置是 "logrotate 的默認(rèn)配置值" ,如果個(gè)別的文件配置了其他的參數(shù), # 則將以個(gè)別的文件配置為主,若該文件沒有配置到的參數(shù)則以這個(gè)文件的內(nèi)容為默認(rèn)值!weekly <==默認(rèn)每個(gè)禮拜對(duì)登錄文件進(jìn)行一次 rotate 的工作 rotate 4 <==保留幾個(gè)登錄文件呢?默認(rèn)是保留四個(gè)! create <==由於登錄文件被更名,因此創(chuàng)建一個(gè)新的來繼續(xù)儲(chǔ)存之意! #compress <==被更動(dòng)的登錄文件是否需要壓縮?如果登錄文件太大則可考慮此參數(shù)啟動(dòng)include /etc/logrotate.d # 將 /etc/logrotate.d/ 這個(gè)目錄中的所有文件都讀進(jìn)來運(yùn)行 rotate 的工作!/var/log/wtmp { <==僅針對(duì) /var/log/wtmp 所配置的參數(shù)monthly <==每個(gè)月一次,取代每周!minsize 1M <==文件容量一定要超過 1M 后才進(jìn)行 rotate (略過時(shí)間參數(shù))create 0664 root utmp <==指定新建文件的權(quán)限與所屬帳號(hào)/群組rotate 1 <==僅保留一個(gè),亦即僅有 wtmp.1 保留而已。 } # 這個(gè) wtmp 可記錄登陸者與系統(tǒng)重新啟動(dòng)時(shí)的時(shí)間與來源主機(jī)及登陸期間的時(shí)間。 # 由於具有 minsize 的參數(shù),因此不見得每個(gè)月一定會(huì)進(jìn)行一次喔!要看文件容量。 # 由於僅保留一個(gè)登錄文件而已,不滿意的話可以將他改成 rotate 5 吧! |
由這個(gè)文件的配置我們可以知道 /etc/logrotate.d 其實(shí)就是由 /etc/logrotate.conf所規(guī)劃出來的目錄,所以,其實(shí)我們可以將所有的數(shù)據(jù)都給他寫入 /etc/logrotate.conf即可,但是這樣一來這個(gè)文件就實(shí)在是太復(fù)雜了,尤其是當(dāng)我們使用很多的服務(wù)在系統(tǒng)上面時(shí),每個(gè)服務(wù)都要去修改 /etc/logrotate.conf 的配置也似乎不太合理~所以,如果獨(dú)立出來一個(gè)目錄,那么每個(gè)以 RPM 打包方式所創(chuàng)建的服務(wù)的登錄文件輪替配置,就可以獨(dú)自成為一個(gè)文件,并且放置到 /etc/logrotate.d/ 當(dāng)中即可,真是方便又合理的做法啊! ^_^
一般來說,這個(gè) /etc/logrotate.conf 是『默認(rèn)的輪替狀態(tài)』而已,我們的各個(gè)服務(wù)都可以擁有自己的登錄文件輪替配置,你也可以自行修改成自己喜歡的樣式啊!例如,如果你的系統(tǒng)的空間夠大,并且擔(dān)心除錯(cuò)以及黑客的問題,那么可以:
- 將 rotate 4 改成 rotate 9 左右,以保存較多的備份文件;
- 大部分的登錄文件不需要 compress 羅!但是空間太小就需要 compress !尤其是很占磁盤空間的 httpd 更需要 compress 的!
好了,上面我們大致介紹了 /var/log/wtmp 這個(gè)文件的配置,現(xiàn)在你知道了 logrotate.conf 的配置語法是:
| 登錄文件的絕對(duì)路徑檔名 ... {個(gè)別的參數(shù)配置值,如 monthly, compress 等等 } |
底下我們?cè)僖?/etc/logrotate.d/syslog 這個(gè)輪替 syslog 服務(wù)的文件,來看看該如何配置他的 rotate 呢?
| [root@www ~]# vi /etc/logrotate.d/syslog /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler \ /var/log/boot.log /var/log/cron {sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || trueendscript } |
在上面的語法當(dāng)中,我們知道正確的 logrotate 的寫法為:
- 檔名:被處理的登錄文件絕對(duì)路徑檔名寫在前面,可以使用空白字節(jié)分隔多個(gè)登錄文件;
- 參數(shù):上述檔名進(jìn)行輪替的參數(shù)使用 { } 包括起來;
- 運(yùn)行腳本:可呼叫外部命令來進(jìn)行額外的命令下達(dá),這個(gè)配置需與 sharedscripts .... endscript 配置合用才行。至於可用的環(huán)境為:
- prerotate:在啟動(dòng) logrotate 之前進(jìn)行的命令,例如修改登錄文件的屬性等動(dòng)作;
- postrotate:在做完 logrotate 之后啟動(dòng)的命令,例如重新啟動(dòng)(kill -HUP) 某個(gè)服務(wù)!
- Prerotate 與 postrotate 對(duì)於已加上特殊屬性的文件處理上面,是相當(dāng)重要的運(yùn)行程序!
那么 /etc/logrotate.d/syslog 內(nèi)配置的六個(gè)文件的輪替功能就變成了:
- 該配置只對(duì) /var/log/ 內(nèi)的 messages, secure, maillog, spooler, boot.log, cron 有效;
- 登錄文件輪替每周一次、保留四個(gè)、且輪替下來的登錄文件不進(jìn)行壓縮(未更改默認(rèn)值);
- 輪替完畢后 (postrotate) 取得 syslog 的 PID 后,以 kill -HUP 重新啟動(dòng) syslogd
假設(shè)我們有針對(duì) /var/log/messages 這個(gè)文件添加 chattr +a 的屬性時(shí),依據(jù) logrotate 的工作原理,我們知道,這個(gè) /var/log/messages 將會(huì)被更名成為 /var/log/messages.1 才是。但是由於加上這個(gè) +a 的參數(shù)啊,所以更名是不可能成功的!那怎么辦呢?呵呵!就利用 prerotate 與 postrotate 來進(jìn)行登錄文件輪替前、后所需要作的動(dòng)作啊!果真如此時(shí),那么你可以這樣修改一下這個(gè)文件喔!
| [root@www ~]# vi /etc/logrotate.d/syslog /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler \ /var/log/boot.log /var/log/cron {sharedscriptsprerotate/usr/bin/chattr -a /var/log/messagesendscriptsharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true/usr/bin/chattr +a /var/log/messagesendscript } |
看到否?就是先給他去掉 a 這個(gè)屬性,讓登錄文件 /var/log/messages 可以進(jìn)行輪替的動(dòng)作,然后運(yùn)行了輪替之后,再給他加入這個(gè)屬性!請(qǐng)?zhí)貏e留意的是,那個(gè)/bin/kill -HUP ... 的意義,這一行的目的在於將系統(tǒng)的 syslogd重新以其參數(shù)檔 (syslog.conf) 的數(shù)據(jù)讀入一次!也可以想成是 reload 的意思啦!由於我們創(chuàng)建了一個(gè)新的空的紀(jì)錄檔,如果不運(yùn)行此一行來重新啟動(dòng)服務(wù)的話,那么記錄的時(shí)候?qū)?huì)發(fā)生錯(cuò)誤呦!(請(qǐng)回到第十七章讀一下kill 后面的 signal 的內(nèi)容說明)
實(shí)際測(cè)試 logrotate 的動(dòng)作
好了,配置完成之后,我們來測(cè)試看看這樣的配置是否可行呢?給他運(yùn)行底下的命令:
| [root@www ~]# logrotate [-vf] logfile 選項(xiàng)與參數(shù): -v :啟動(dòng)顯示模式,會(huì)顯示 logrotate 運(yùn)行的過程喔! -f :不論是否符合配置檔的數(shù)據(jù),強(qiáng)制每個(gè)登錄文件都進(jìn)行 rotate 的動(dòng)作!范例一:運(yùn)行一次 logrotate 看看整個(gè)流程為何? [root@www ~]# logrotate -v /etc/logrotate.conf reading config file /etc/logrotate.conf <==讀取主要配置檔 including /etc/logrotate.d <==呼叫外部的配置 reading config file acpid <==就是外部配置啊! ....(中間省略).... Handling 21 logs <==共有 21 個(gè)登錄文件被記錄 ....(中間省略).... rotating pattern: /var/log/messages /var/log/secure /var/log/maillog \ /var/log/spooler /var/log/boot.log /var/log/cron weekly (4 rotations) empty log files are rotated, old logs are removed considering log /var/log/messages <==開始處理 messageslog does not need rotating <==因?yàn)闀r(shí)間未到,不需要更動(dòng)! ....(底下省略)....范例二:強(qiáng)制進(jìn)行 logrotate 的動(dòng)作 [root@www ~]# logrotate -vf /etc/logrotate.conf ....(前面省略).... rotating log /var/log/messages, log->rotateCount is 4 renaming /var/log/messages.4 to /var/log/messages.5 (rotatecount 4, logstart 1, i 4), renaming /var/log/messages.3 to /var/log/messages.4 (rotatecount 4, logstart 1, i 3), renaming /var/log/messages.2 to /var/log/messages.3 (rotatecount 4, logstart 1, i 2), renaming /var/log/messages.1 to /var/log/messages.2 (rotatecount 4, logstart 1, i 1), renaming /var/log/messages.0 to /var/log/messages.1 (rotatecount 4, logstart 1, i 0), old log /var/log/messages.0 does not exist ....(底下省略).... # 看到否?整個(gè) rotate 的動(dòng)作就是這樣一步一步進(jìn)行的~[root@www ~]# ll /var/log/messages*; lsattr /var/log/messages -rw------- 1 root root 63 Apr 8 15:19 /var/log/messages -rw------- 1 root root 670 Apr 8 14:22 /var/log/messages.1 -rw------- 1 root root 24984 Apr 1 19:26 /var/log/messages.2 -rw------- 1 root root 1911 Mar 28 11:32 /var/log/messages.3 -rw------- 1 root root 25193 Mar 22 04:02 /var/log/messages.4 -----a------- /var/log/messages <==主動(dòng)加入 a 的隱藏屬性羅! |
上面那個(gè) -f 具有『強(qiáng)制運(yùn)行』的意思,如果一切的配置都沒有問題的話,那么理論上,你的/var/log 這個(gè)目錄就會(huì)起變化羅!而且應(yīng)該不會(huì)出現(xiàn)錯(cuò)誤信息才對(duì)!嘿嘿!這樣就OK 了!很棒不是嗎?!
由於 logrotate 的工作已經(jīng)加入 crontab 里頭了!所以現(xiàn)在每天系統(tǒng)都會(huì)自動(dòng)的給他查看logrotate 羅!不用擔(dān)心的啦!只是要注意一下那個(gè) /var/log/messages 里頭是否常常有類似底下的字眼:
Apr 8 15:19:47 www syslogd 1.4.1: restart (remote reception).這說明的是 syslogd 重新啟動(dòng)的時(shí)間啦 (就是因?yàn)?/etc/logrotate.d/syslog 的配置之緣故!)底下我們來進(jìn)行一些例題的練習(xí),讓你更詳細(xì)的了解 logrotate 的功用啊!
自訂登錄文件的輪替功能
假設(shè)前提是這樣的,前一小節(jié)當(dāng)中,假設(shè)你已經(jīng)創(chuàng)建了 /var/log/admin.log 這個(gè)文件,現(xiàn)在,你想要將該文件加上 +a 這個(gè)隱藏標(biāo)簽,而且配置底下的相關(guān)資訊:
- 登錄文件輪替一個(gè)月進(jìn)行一次;
- 該登錄文件若大於 10MB 時(shí),則主動(dòng)進(jìn)行輪替,不需要考慮一個(gè)月的期限;
- 保存五個(gè)備份文件;
- 備份文件需要壓縮
那你可以怎么樣配置呢?呵呵~很簡(jiǎn)單啊!看看底下的動(dòng)作吧!
| # 1. 先創(chuàng)建 +a 這個(gè)屬性啊! [root@www ~]# chattr +a /var/log/admin.log [root@www ~]# lsattr /var/log/admin.log -----a------- /var/log/admin.log [root@www ~]# mv /var/log/admin.log /var/log/admin.log.1 mv: cannot move `/var/log/admin.log' to `/var/log/admin.log.1': Operation not permitted # 這里確定了加入 a 的隱藏屬性!所以 root 無法移動(dòng)此登錄文件!# 2. 開始創(chuàng)建 logrotate 的配置檔,添加一個(gè)文件在 /etc/logrotate.d 內(nèi)就對(duì)了! [root@www ~]# vi /etc/logrotate.d/admin # This configuration is from VBird 2009/04/08 /var/log/admin.log {monthly <==每個(gè)月進(jìn)行一次size=10M <==文件容量大於 10M 則開始處置rotate 5 <==保留五個(gè)!compress <==進(jìn)行壓縮工作!sharedscriptsprerotate/usr/bin/chattr -a /var/log/admin.logendscriptsharedscriptspostrotate/usr/bin/killall -HUP syslogd/usr/bin/chattr +a /var/log/admin.logendscript }# 3. 測(cè)試一下 logrotate 相關(guān)功能的資訊顯示: [root@www ~]# logrotate -v /etc/logrotate.conf ....(前面省略).... rotating pattern: /var/log/admin.log 10485760 bytes (5 rotations) empty log files are rotated, old logs are removed considering log /var/log/admin.loglog does not need rotating not running prerotate script, since no logs will be rotated not running postrotate script, since no logs were rotated ....(底下省略).... # 因?yàn)檫€不足一個(gè)月,文件也沒有大於 10M,所以不需進(jìn)行輪替!# 4. 測(cè)試一下強(qiáng)制 logrotate 與相關(guān)功能的資訊顯示: [root@www ~]# logrotate -vf /etc/logrotate.d/admin reading config file /etc/logrotate.d/admin reading config info for /var/log/admin.logHandling 1 logsrotating pattern: /var/log/admin.log forced from command line (5 rotations) empty log files are rotated, old logs are removed considering log /var/log/admin.loglog needs rotating rotating log /var/log/admin.log, log->rotateCount is 5 renaming /var/log/admin.log.5.gz to /var/log/admin.log.6.gz (rotatecount 5, logstart 1, i 5), old log /var/log/admin.log.5.gz does not exist renaming /var/log/admin.log.4.gz to /var/log/admin.log.5.gz (rotatecount 5, logstart 1, i 4), old log /var/log/admin.log.4.gz does not exist renaming /var/log/admin.log.3.gz to /var/log/admin.log.4.gz (rotatecount 5, logstart 1, i 3), old log /var/log/admin.log.3.gz does not exist renaming /var/log/admin.log.2.gz to /var/log/admin.log.3.gz (rotatecount 5, logstart 1, i 2), old log /var/log/admin.log.2.gz does not exist renaming /var/log/admin.log.1.gz to /var/log/admin.log.2.gz (rotatecount 5, logstart 1, i 1), old log /var/log/admin.log.1.gz does not exist renaming /var/log/admin.log.0.gz to /var/log/admin.log.1.gz (rotatecount 5, logstart 1, i 0), old log /var/log/admin.log.0.gz does not exist log /var/log/admin.log.6.gz doesn't exist -- won't try to dispose of it running prerotate script renaming /var/log/admin.log to /var/log/admin.log.1 running postrotate script compressing log with: /bin/gzip[root@www ~]# lsattr /var/log/admin.log* -----a------- /var/log/admin.log ------------- /var/log/admin.log.1.gz <==有壓縮過喔! |
看到了嗎?透過這個(gè)方式,我們可以創(chuàng)建起屬於自己的 logrotate 配置文件,很簡(jiǎn)便吧!尤其是要注意的, /etc/syslog.conf 與 /etc/logrotate.d/* 文件常常要搭配起來,例如剛剛我們提到的兩個(gè)案例中所創(chuàng)建的 /var/log/admin.log就是一個(gè)很好的例子~創(chuàng)建后,還要使用 logrotate 來輪替啊! ^_^
分析登錄文件
登錄文件的分析是很重要的!你可以自行以 vi 進(jìn)入登錄文件去查閱相關(guān)的資訊。而系統(tǒng)也提供一些軟件可以讓你從登錄文件中取得數(shù)據(jù),例如之前談過的 last, lastlog, dmesg 等等命令。不過,這些數(shù)據(jù)畢竟都非常的分散,如果你想要一口氣讀取所有的登錄資訊,其實(shí)有點(diǎn)困擾的。不過,好在 CentOS 有提供 logwatch 這個(gè)登錄文件分析程序,你可以藉由該程序來了解登錄文件資訊。此外,鳥哥也依據(jù) Red Hat 系統(tǒng)的 syslog 寫了一支小程序給大家使用喔!
CentOS 默認(rèn)提供的 logwatch
雖然有一些有用的系統(tǒng)命令,不過,要了解系統(tǒng)的狀態(tài),還是得要分析整個(gè)登錄文件才行~事實(shí)上,目前已經(jīng)有相當(dāng)多的登錄文件分析工具,例如 CentOS 5.x 上面默認(rèn)的 logwatch 這個(gè)套件所提供的分析工具,他會(huì)每天分析一次登錄文件,并且將數(shù)據(jù)以 email 的格式寄送給 root 呢!你也可以直接到 logwatch 的官方網(wǎng)站上面看看:
- http://www.logwatch.org/
logwatch 分析的結(jié)果如下所示:
| [root@www ~]# mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/root": 433 messages 433 new >N 1 logwatch@www.vbird.t Fri Sep 5 11:42 43/1542 "Logwatch for www.vbird.tsai (Linux)"N 2 logwatch@www.vbird.t Sat Sep 6 15:34 92/2709 "Logwatch for www.vbird.tsai (Linux)"N 3 logwatch@www.vbird.t Mon Sep 8 15:26 43/1542 "Logwatch for www.vbird.tsai (Linux)" ....(中間省略)....N431 logwatch@www.vbird.t Wed Apr 8 04:02 53/1772 "Logwatch for www.vbird.tsai (Linux)" & 431 Message 431: From root@www.vbird.tsai Wed Apr 8 04:02:05 2009 Date: Wed, 8 Apr 2009 04:02:05 +0800 To: root@www.vbird.tsai From: logwatch@www.vbird.tsai Subject: Logwatch for www.vbird.tsai (Linux) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="iso-8859-1"# 先會(huì)說明分析的日期與相關(guān)的分析期間!################### Logwatch 7.3 (03/24/06) ####################Processing Initiated: Wed Apr 8 04:02:05 2009Date Range Processed: yesterday( 2009-Apr-07 )Period is day.Detail Level of Output: 0Type of Output: unformattedLogfiles for Host: www.vbird.tsai################################################################### 底下則是依據(jù)各種服務(wù)來進(jìn)行各項(xiàng)分析!先是登陸者的 ssh 服務(wù)分析--------------------- SSHD Begin ------------------------Users logging in through sshd:root:192.168.100.101: 1 time192.168.100.254: 1 time---------------------- SSHD End -------------------------# 磁碟容量分析!可以避免你的系統(tǒng)使用過量磁碟,導(dǎo)致的系統(tǒng)不穩(wěn)問題!--------------------- Disk Space Begin ------------------------Filesystem Size Used Avail Use% Mounted on/dev/hda2 9.5G 3.8G 5.3G 42% //dev/hda3 4.8G 1.1G 3.5G 23% /home/dev/hda1 99M 21M 73M 23% /boot---------------------- Disk Space End -------------------------###################### Logwatch End ######################### |
由於鳥哥的測(cè)試用主機(jī)尚未啟動(dòng)許多服務(wù),所以分析的項(xiàng)目很少。若你的系統(tǒng)已經(jīng)啟動(dòng)許多服務(wù)的話,那么分析的項(xiàng)目理應(yīng)會(huì)多很多才對(duì)。
鳥哥自己寫的登錄文件分析工具:
雖然已經(jīng)有了類似 logwatch 的工具,但是鳥哥自己想要分析的數(shù)據(jù)畢竟與對(duì)方不同~所以羅,鳥哥就自己寫了一支小程序 (shell script 的語法) 用來分析自己的登錄文件,這支程序分析的登錄文件數(shù)據(jù)其實(shí)是固定的,包括有:
- /var/log/secure
- /var/log/messages
- /var/log/maillog
當(dāng)然啦,還不只這些啦,包括各個(gè)主要常見的服務(wù),如 pop3, mail, ftp, su 等會(huì)使用到 pam 的服務(wù),都可以透過鳥哥寫的這個(gè)小程序來分析與處理呢~整個(gè)數(shù)據(jù)還會(huì)輸出一些系統(tǒng)資訊。如果你想要使用這個(gè)程序的話,歡迎下載:
- http://vbird.dic.ksu.edu.tw/download/index.php?action=detail&fileid=69
安裝的方法也很簡(jiǎn)單,只要將上述文件下載并解壓縮后,就會(huì)得到一個(gè)名為 logfile 的目錄,將此目錄移動(dòng)到 /usr/local/virus/ 目錄下并修改一下: /usr/local/virus/logfile.sh 文件,里面的 email 與相關(guān)的資訊只要修改一下,你就可以使用啦~啊!還要記得,將這支程序的運(yùn)行寫入 /etc/crontab 當(dāng)中喔!可以在每天的 12:10am 運(yùn)行這支小程序啦! ^_^
| [root@www ~]# mkdir /usr/local/virus [root@www ~]# tar -zxvf logfile-0.1-4-2.tgz -C /usr/local/virus [root@www ~]# cd /usr/local/virus/logfile [root@www ~]# vi logfile.sh email="root@localhost" <==大約在 93 行左右,請(qǐng)?zhí)钊肽愕?email ,否則保留默認(rèn)值 basedir="/usr/local/virus/logfile" <==保留默認(rèn)值,除非你的運(yùn)行目錄不同與此![root@www ~]# sh logfile.sh # 開始嘗試分析系統(tǒng)的登錄文件,依據(jù)你的登錄文件大小,分析的時(shí)間不固定![root@www ~]# vi /etc/crontab 10 0 * * * root /usr/local/virus/logfile/logfile.sh # 添加這一行!讓系統(tǒng)在每天的凌晨自己進(jìn)行登錄文件分析![root@www ~]# mail # 自己找到剛剛輸出的結(jié)果,該結(jié)果的輸出有點(diǎn)像底下這樣:# 先進(jìn)行程序的宣告!你也可以在底下的連結(jié)找到一些錯(cuò)誤回報(bào)! ########################################################## 歡迎使用本程序來查驗(yàn)?zāi)牡卿浳募?本程序目前版本為: Version 0.1-4-2 程序最后升級(jí)日期為: 2006-09-22 若在您的系統(tǒng)中發(fā)現(xiàn)本程序有問題, 歡迎與我聯(lián)絡(luò)! 鳥哥的首頁 http://linux.vbird.org 問題回報(bào): http://phorum.vbird.org/viewtopic.php?t=3425 ########################################################### 先看看你的硬件與操作系統(tǒng)的相關(guān)情況,尤其是 partition 的使用量更需要隨時(shí)注意! =============== 系統(tǒng)匯整 ================================= 核心版本 : Linux version 2.6.18-92.el5 (mockbuild@builder16.centos.org) CPU 資訊 : Intel(R) Celeron(TM) CPU: 1200.062 MHz 主機(jī)名稱 : www.vbird.tsai 統(tǒng)計(jì)日期 : 2009/April/08 17:00:59 ( Wednesday ) 分析的日期: Apr 8 已啟動(dòng)期間: 7 days, 22:46, 目前主機(jī)掛載的 partitionsFilesystem Size Used Avail Use% Mounted on/dev/hda2 9.5G 3.8G 5.3G 42% //dev/hda3 4.8G 1.1G 3.5G 23% /home/dev/hda1 99M 21M 73M 23% /boottmpfs 363M 0 363M 0% /dev/shm# 這個(gè)程序會(huì)將針對(duì) internet 與內(nèi)部監(jiān)聽的端口分開來顯示! ================= Ports 的相關(guān)分析資訊 ======================= 主機(jī)激活的 port 與相關(guān)的 process owner: 僅對(duì)本機(jī)介面開放的 ports (PID|owner|command)tcp 25|(root)|sendmail: accepting connectionstcp 631|(root)|cupsdtcp 2207|(root)|python ./hpssd.pytcp 2208|(root)|./hpiod 對(duì)外部介面開放的 ports (PID|owner|command)tcp 22|(root)|/usr/sbin/sshdtcp 111|(rpc)|portmaptcp 737|(root)|rpc.statdudp 111|(rpc)|portmapudp 514|(root)|syslogd -m 0 -rudp 631|(root)|cupsdudp 731|(root)|rpc.statdudp 734|(root)|rpc.statdudp 5353|(avahi)|avahi-daemon: running [www.local]udp 32768|(avahi)|avahi-daemon: running [www.local]udp 32769|(avahi)|avahi-daemon: running [www.local]# 以下針對(duì)有啟動(dòng)的服務(wù)個(gè)別進(jìn)行分析! ================= SSH 的登錄文件資訊匯整 ======================= 今日沒有使用 SSH 的紀(jì)錄================= Sednamil 的登錄文件資訊匯整 ================== 您的主機(jī)有進(jìn)行 SASL 身份認(rèn)證的功能今日沒有 sendmail 的相關(guān)資訊================= 全部的登錄文件資訊匯整 ======================= 1. 重要的登錄記錄檔 ( Secure file )說明:已經(jīng)取消了 pop3 的資訊! Apr 8 15:46:22 www su: session opened for user vbird by root(uid=0) Apr 8 15:47:02 www su: session closed for user vbird2. 使用 last 這個(gè)命令輸出的結(jié)果wtmp begins Wed Apr 8 15:19:47 20093. 將特重要的 /var/log/messages 列出來瞧瞧!已經(jīng)取消 crond 與 snmpd 的信息 Apr 8 15:19:47 www syslogd 1.4.1: restart (remote reception). Apr 8 15:34:25 www syslogd 1.4.1: restart (remote reception). |
目前鳥哥都是透過這支程序去分析自己管理的主機(jī),然后再據(jù)以了解系統(tǒng)狀況,如果有特殊狀況則即時(shí)進(jìn)行系統(tǒng)處理!而且鳥哥都是將上述的 email 調(diào)整成自己可以在 Internet 上面讀到的郵件,這樣我每天都可以收到正確的登錄文件分析資訊哩!
重點(diǎn)回顧
- 登錄文件可以記錄一個(gè)事件的何時(shí)、何地、何人、何事等四大資訊,故系統(tǒng)有問題時(shí)務(wù)必查詢登錄文件;
- 系統(tǒng)的登錄文件默認(rèn)都集中放置到 /var/log/ 目錄內(nèi),其中又以 messages 記錄的資訊最多!
- 登錄文件記錄的主要服務(wù)與程序?yàn)?#xff1a; syslogd, klogd, log
- syslogd 的配置檔在 /etc/syslog.conf ,內(nèi)容語法為:『 服務(wù).等級(jí) 記載裝置或文件』
- syslogd 本身有提供登錄文件服務(wù)器的功能,透過修改 /etc/sysconfig/syslog 內(nèi)容即可達(dá)成;
- logrotate 程序利用 crontab 來進(jìn)行登錄文件的輪替功能;
- logrotate 的配置檔為 /etc/logrotate.conf ,而額外的配置則可寫入 /etc/logrotate.d/* 內(nèi);
- logwatch 為 CentOS 5 默認(rèn)提供的一個(gè)登錄文件分析軟件。
本章習(xí)題
( 要看答案請(qǐng)將鼠標(biāo)移動(dòng)到『答:』底下的空白處,按下左鍵圈選空白處即可察看 ) 實(shí)作題:
- 請(qǐng)?jiān)谀愕?CentOS 5.x 上面,依照鳥哥提供的 logfile.sh 去安裝,并將結(jié)果取出分析看看。
簡(jiǎn)答題部分:
- syslogd 可以作為登錄文件服務(wù)器,請(qǐng)以 man page 的方式配合 network 關(guān)鍵字,查出 syslogd 需要加上什么選項(xiàng)就能夠成為登錄文件服務(wù)器? 透過 man syslogd ,查詢到 -r 的選項(xiàng)。
- 如果你想要將 auth 這個(gè)服務(wù)的結(jié)果中,只要信息等級(jí)高於 warn 就給予發(fā)送 email 到 root 的信箱,該如何處理? 利用 vim 去編輯 /etc/syslog.conf 文件,內(nèi)容為
auth.warn root - 啟動(dòng)系統(tǒng)登錄資訊時(shí),需要啟動(dòng)哪兩個(gè) daemon 呢? syslogd 記錄系統(tǒng)軟件, klogd 記錄核心資訊。
- syslogd 以及 logrotate 個(gè)別透過什么機(jī)制來運(yùn)行? syslogd 為 stand alone daemon 的機(jī)制; logrotate 則是透過 crontab 來運(yùn)行的!只是個(gè)命令而已。
參考數(shù)據(jù)與延伸閱讀
- 注1:關(guān)於 console 的說明可以參考底下的連結(jié):
http://en.wikipedia.org/wiki/Console
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/console.htm - 關(guān)於 logfile 也有網(wǎng)友提供英文版喔!我將他放置到:http://vbird.dic.ksu.edu.tw//download/vbird/logfile_en.txt
2002/06/24:第一次完成
2003/02/11:重新編排與加入 FAQ
2005/10/12:舊的文章已經(jīng)被移動(dòng)到 此處。
2005/10/24:終於寫完了~啊!怎么寫這么久??
2006/07/23:修改了 /etc/logrotate.d/syslog 的配置數(shù)據(jù)
2009/03/31:將舊的基於 FC4 版本的數(shù)據(jù)移動(dòng)至 此處
2009/09/14:加入了一些例題而已。這一篇太簡(jiǎn)單了~想不到什么好的題目說~
2010/12/24:感謝網(wǎng)友 eujiang 提供的英文版 logfile.sh 程序喔!
出處:http://vbird.dic.ksu.edu.tw/linux_basic/0570syslog.php
總結(jié)
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(基础篇)- 第十
- 下一篇: 鸟哥的Linux私房菜(基础篇)- 第二