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