Linux下的日志維護(hù)技巧
1、系統(tǒng)日志
/var/log/messages不僅是服務(wù)器的系統(tǒng)日志,很多時(shí)候它也包括許多服務(wù)的日志,所以它被稱為“雜貨鋪”,建議重點(diǎn)關(guān)注。大家一般都喜歡用以下命令來看最后10條日志:tail -n10/var/log/messages。
其實(shí)還可以將一段日志保存成文件(Xmanager3.0企業(yè)版的shell也有日志錄像截取功能),或者直接用vim來處理。我以前配置主從復(fù)制的bind服務(wù)器時(shí),有時(shí)會因?yàn)闄?quán)限的原因報(bào)錯(cuò),這時(shí)就可以在一臺報(bào)錯(cuò)的服務(wù)器上用命令tail -f/var/log/messages實(shí)時(shí)查看服務(wù)器的日志變化情況,從而查找錯(cuò)誤的蛛絲馬跡。事實(shí)證明,效果很好,而且將此命令用于lvs+keepalived的排錯(cuò)效果也不錯(cuò)。其他服務(wù)器配置排錯(cuò)以此類推,這個(gè)做法也推薦讀者掌握。
2、系統(tǒng)安全日志
/var/log/secure記錄登錄系統(tǒng)存取數(shù)據(jù)的文件,例如POP3、SSH、Telnet、FTP等都會被記錄,我們可以利用此文件找出不安全的登錄IP。目前比較流行的SSH防暴力破解工具DenyHosts主要也是讀此文件。另外,我寫了一個(gè)原理類似的shell安全腳本,用于線上服務(wù)器,在后面的章節(jié)跟大家分享。
3、記錄登錄者的數(shù)據(jù)
/var/log/wtmp記錄登錄者的信息數(shù)據(jù),由于此文件已經(jīng)被編碼過(為二進(jìn)制文件),想用cat等命令直接查看是不行的,必須使用last指令來取出文件的內(nèi)容,如下所示:
|
4、記錄登錄時(shí)間
/var/log/lastlog記錄每個(gè)使用者最近登錄系統(tǒng)的時(shí)間。因此當(dāng)使用者登錄時(shí),就會顯示其上次登錄的時(shí)間,你應(yīng)該注意一下這個(gè)時(shí)間,若此時(shí)間不是你上次登錄的時(shí)間,表示賬號可能被人盜用了。此可執(zhí)行文件可用/usr/bin/lastlog指令讀取(在FreeBSD8&FreeBSD8.1下為/usr/sbin/lastlogin)。使用此命令后的記錄如下所示:
|
5、服務(wù)器的郵件日志
服務(wù)器的郵件為/var/log/messages,如果要用專業(yè)的日志分析工具來分析的話,我推薦使用Awstats。如果公司的開發(fā)系統(tǒng)對郵件的要求比較低,可以配置最簡單的Sendmail或Postfix,通過看郵件日志里的status狀態(tài)來判斷郵件到底有沒有正確發(fā)送。在配置Nagios服務(wù)器時(shí),我也習(xí)慣用此日志來判斷報(bào)警郵件到底有沒有發(fā)送。如果對自己的shell水平足夠有自信,也可以寫腳本來收集郵件服務(wù)器的返回狀態(tài)等。但專業(yè)的事情,建議還是由專業(yè)的Awstats工具來做,特別是郵件負(fù)載比較大時(shí)(比如,每天幾百萬條日志或上千萬條日志),依靠人力完全不可取。
6、輸出iptables日志到一個(gè)指定的文件中
iptables的man參考頁中提到:我們可以使用iptables在Linux內(nèi)核中建立、維護(hù)和檢查IP包過濾規(guī)則表,iptables自身的3個(gè)表可能已經(jīng)創(chuàng)建,每一個(gè)表包含了很多內(nèi)嵌的鏈,也可能包含用戶自定義的鏈。iptables默認(rèn)把日志信息輸出到/var/log/messages文件中。不過在有些情況下(比如你的Linux服務(wù)器是用來作為防火墻或NAT路由器的),你可能需要修改日志輸出的位置,通過修改或使用新的日志文件,可以幫你創(chuàng)建更好的統(tǒng)計(jì)信息,或者幫你分析網(wǎng)絡(luò)攻擊信息。下面向大家介紹如何建立一個(gè)新的日志文件/var/log/iptables.log。輸出iptables日志信息到一個(gè)指定文件的方法如下所示:
1)打開/etc/syslog.conf文件。
# vim /etc/syslog.conf |
2)在文件末尾加入下面這行信息:
kern.warning /var/log/iptables.log |
3)保存和關(guān)閉文件,使用下面的命令重新啟動syslogd。
/etc/init.d/syslog restart |
7、日志文件的專業(yè)工具
系統(tǒng)的一些服務(wù),比如Apache、Nginx、Squid,還有MySQL數(shù)據(jù)服務(wù)器,都有自己特定的日志文件,不過由于其格式比較復(fù)雜,還是推薦使用專業(yè)工具(如Awstats、Cacti)來分析。MySQL的binlog日志可以用mysqlbinlog來分析,Cacti用得比較多的情況是用來分析Nginx負(fù)載均衡器一段時(shí)間內(nèi)的并發(fā)情況及服務(wù)器的流量異常情況。
8、用dmesg查看啟動消息
dmesg提供了一個(gè)簡單的方法查看系統(tǒng)啟動信息。當(dāng)Linux啟動的時(shí)候,內(nèi)核的信息被存入內(nèi)核ring緩存當(dāng)中,dmesg可以顯示緩存中的內(nèi)容。默認(rèn)情況下,dmesg打印內(nèi)容到屏幕上,當(dāng)然你可以將其重定向輸出到一個(gè)文件中。如果硬件損壞的話,在dmesg日志里是有顯示的,可用以下命令來查看dmesggrep error,其實(shí)看到的也就是/var/log/dmesg中的內(nèi)容。
9、關(guān)于cron的日志
默認(rèn)情況下,Crontab中執(zhí)行的日志寫在/var/log下,我們可以先看看/etc/syslog.conf里的配置,通過命令grep cron/etc/syslog.conf來查看,如下所示:
|
接著看/var/log/下的cron日志,如下所示:
|
當(dāng)crond執(zhí)行任務(wù)失敗時(shí),Crontab的日志會給用戶發(fā)一封郵件。如果在服務(wù)器上發(fā)現(xiàn)一個(gè)任務(wù)沒有正常執(zhí)行,而crond的郵件發(fā)送也失敗,那么就檢查一下mail的日志,看看是否是因磁盤空間不夠而造成的。
為了方便收集crond的日志信息,也可以將cornd錯(cuò)誤輸出和標(biāo)準(zhǔn)輸出日志都指向自定義的日志文件:0 6 * * * root /root/test_file.sh >>/data/log/mylog.log 2 >&110.用shell或perl來分析日志
我們在維護(hù)線上服務(wù)器時(shí),并不是每臺服務(wù)器的日志都需要查看,可以偏重于我們有需求的服務(wù)器。如果不太喜歡用Awstats來分析Nginx負(fù)載均衡器的日志,可以編寫一段分析日志的腳本,下一節(jié)我將跟大家分享用shell編寫的分析Nginx日志的腳本。
posted on 2011-11-17 16:00 順其自然EVO 閱讀(651) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄