qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          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)容,如下所示:

          1. [root@localhost ~]# last  
          2. root pts/2220.249.72.138Wed Mar 30 08:33still logged in  
          3. root pts/2220.249.72.138Tue Mar 29 09:02 - 15:42(06:39)  
          4. root pts/2220.249.72.138Tue Mar 29 07:31 - 09:01(01:30)  
          5. root pts/2219.139.223.49Tue Mar 29 00:14 - 00:29(00:15)  
          6. root pts/2183.94.4.206Mon Mar 28 20:46 - 21:21(00:34)  
          7. root pts/2113.57.224.3Mon Mar 28 11:30 - 12:17(00:46)  
          8. root pts/4219.139.223.142Sun Mar 27 15:58 - 18:10(02:11)  
          9. root pts/3113.57.224.3Sun Mar 27 14:28 - 18:25(03:57)  
          10. root pts/3113.57.224.3Sun Mar 27 09:20 - 11:56(02:35)  
          11. root pts/3219.140.210.152Sun Mar 27 01:16 - 01:29(00:12)  
          12. root pts/2220.249.72.138Sat Mar 26 08:42 - 18:38(1+09:55)  
          13. root pts/2220.249.72.138Thu Mar 24 11:19 - 14:44(1+03:25)  
          14. root pts/2220.249.72.138Wed Mar 23 10:26 - 09:13(22:47)  
          15. root pts/2220.249.72.138Tue Mar 22 07:22 - 13:38(06:16)  
          16. root pts/2119.103.112.43Mon Mar 21 18:08 - 18:38(00:29)  
          17. root pts/2119.103.112.43Mon Mar 21 16:26 - 18:07(01:41)  
          18. root pts/3119.103.82.129Mon Mar 21 12:22 - 12:25(00:02)  
          19. root pts/2119.103.121.252Mon Mar 21 11:59 - 14:11(02:12)  
          20. root pts/2119.103.121.252Mon Mar 21 11:50 - 11:53(00:02)  
          21. root pts/2119.103.30.213Sun Mar 20 10:03 - 12:42(02:39)  
          22. root pts/358.19.17.3Sat Mar 19 12:22 - 12:22(00:00)  
          23. root pts/2220.249.72.138Sat Mar 19 07:07 - 16:05(08:58)  
          24. root pts/2219.140.213.209Sat Mar 19 01:39 - 01:55(00:16)

            4、記錄登錄時間

            /var/log/lastlog記錄每個使用者最近登錄系統(tǒng)的時間。因此當(dāng)使用者登錄時,就會顯示其上次登錄的時間,你應(yīng)該注意一下這個時間,若此時間不是你上次登錄的時間,表示賬號可能被人盜用了。此可執(zhí)行文件可用/usr/bin/lastlog指令讀取(在FreeBSD8&FreeBSD8.1下為/usr/sbin/lastlogin)。使用此命令后的記錄如下所示:

          1. [root@localhost ~]# lastlog  
          2. 用戶名  端口 來自 最后登錄時間  
          3. root  pts/2220.249.72.138三 3月 30 08:33:33 +0800 2011  
          4. bin**從未登錄過**  
          5. daemon**從未登錄過**  
          6. adm**從未登錄過**  
          7. lp**從未登錄過**  
          8. sync**從未登錄過**  
          9. shutdown**從未登錄過**  
          10. halt**從未登錄過**  
          11. mail**從未登錄過**  
          12. news**從未登錄過**  
          13. uucp**從未登錄過**  
          14. operator**從未登錄過**  
          15. games**從未登錄過**  
          16. gopher**從未登錄過**  
          17. ftp**從未登錄過**  
          18. nobody**從未登錄過**  
          19. nscd**從未登錄過**  
          20. vcsa**從未登錄過**  
          21. pcap**從未登錄過**  
          22. rpc**從未登錄過**  
          23. apache**從未登錄過**  
          24. mailnull**從未登錄過**  
          25. smmsp**從未登錄過**  
          26. ntp**從未登錄過**  
          27. hsqldb**從未登錄過**  
          28. xfs**從未登錄過**  
          29. rpcuser**從未登錄過**  
          30. sshd**從未登錄過**  
          31. dbus**從未登錄過**  
          32. avahi**從未登錄過**  
          33. haldaemon**從未登錄過**  
          34. avahi-autoipd**從未登錄過**  
          35. gdm**從未登錄過**  
          36. longfei**從未登錄過**  
          37. ldap**從未登錄過**  
          38. www**從未登錄過**  
          39. mysql**從未登錄過**



           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來查看,如下所示:

          1. [root@localhost log]# grep cron /etc/syslog.conf  
          2. *.info;mail.none;authpriv.none;cron.none /var/log/messages  
          3. # Log cron stuff  
          4. cron.*/var/log/cron

            接著看/var/log/下的cron日志,如下所示:

          1. [root@localhost log]# ls -lsart /var/log/cron*  
          2. 80 -rw------- 1 root root 72378 03-20 04:02 /var/log/cron.2  
          3. 812 -rw------- 1 root root 819861 03-27 04:02 /var/log/cron.1  
          4. 524 -rw------- 1 root root 525442 03-31 13:59 /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í)專欄

          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 健康| 丹东市| 彭水| 桓台县| 天台县| 漯河市| 洮南市| 灵石县| 仁寿县| 绥棱县| 华阴市| 邢台县| 驻马店市| 都安| 杭锦旗| 无棣县| 天门市| 锦州市| 巴彦淖尔市| 富宁县| 手游| 敦化市| 南涧| 若尔盖县| 田东县| 庄浪县| 建始县| 兰西县| 凌云县| 武汉市| 深水埗区| 西畴县| 新竹市| 睢宁县| 彝良县| 诸暨市| 阳原县| 确山县| 临漳县| 任丘市| 太原市|