轉(zhuǎn)載自:http://www.cnblogs.com/php5/archive/2010/11/10/1873206.html Linux系統(tǒng)日志管理 日志分類: 1. 連接時間的日志 兩個文件無法直接cat查看,并且該文件由系統(tǒng)自動更新,可以通過如下: w/who/finger/id/last/lastlog/ac 進行查看 [root@xhot ~]# who root tty1 2010-10-06 22:56 root pts/0 2010-10-06 22:26 (218.192.87.4) root pts/1 2010-10-06 23:41 (218.192.87.4) root pts/3 2010-10-06 23:18 (218.192.87.4) [root@xhot ~]# w 01:01:02 up 2:36, 4 users, load average: 0.15, 0.03, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 22:56 1:20m 0.16s 0.16s -bash root pts/0 218.192.87.4 22:26 2:05m 0.18s 0.18s -bash root pts/1 218.192.87.4 23:41 0.00s 0.41s 0.00s w root pts/3 218.192.87.4 23:18 1:38m 0.03s 0.03s -bash [root@xhot ~]# ac -p //查看每個用戶的連接時間 u51 1.23 u55 0.04 root 95.21 //可以看到root連接時間最長吧 xhot 0.06 user1 3.93 total 100.48 [root@xhot ~]# ac -a //查看所有用戶的連接時間 total 100.49 [root@xhot ~]# ac -d //查看用戶每天的連接時間 Sep 24 total 0.14 Sep 25 total 14.60 Sep 26 total 13.71 Sep 27 total 21.47 Sep 28 total 11.74 Sep 29 total 6.60 Sep 30 total 8.81 Oct 1 total 9.04 Oct 2 total 0.47 //可以看到我國慶3、4、5號出去玩了 Oct 6 total 8.62 Today total 5.29 其他幾個命令不做具體介紹了 2. 進程監(jiān)控日志 進程統(tǒng)計監(jiān)控日志在監(jiān)控用戶的操作指令是非常有效的。當服務(wù)器最近發(fā)現(xiàn)經(jīng)常 無故關(guān)機或者無故被人刪除文件等現(xiàn)象時,可以通過使用進程統(tǒng)計日志查看: [root@xhot ~]# accton /var/account/pacct //開啟進程統(tǒng)計日志監(jiān)控 [root@xhot ~]# lastcomm //查看進程統(tǒng)計日志情況 accton S root pts/1 0.00 secs Thu Oct 7 01:20 accton root pts/1 0.00 secs Thu Oct 7 01:20 ac root pts/1 0.00 secs Thu Oct 7 01:14 ac root pts/1 0.00 secs Thu Oct 7 01:14 free root pts/1 0.00 secs Thu Oct 7 01:10 lastcomm root pts/1 0.00 secs Thu Oct 7 01:09 bash F root pts/1 0.00 secs Thu Oct 7 01:09 lastcomm root pts/1 0.00 secs Thu Oct 7 01:09 ifconfig root pts/1 0.00 secs Thu Oct 7 01:09 lastcomm root pts/1 0.00 secs Thu Oct 7 01:09 lastcomm root pts/1 0.00 secs Thu Oct 7 01:09 lastcomm root pts/1 0.00 secs Thu Oct 7 01:09 accton S root pts/1 0.00 secs Thu Oct 7 01:09 [root@xhot ~]# accton //關(guān)閉進程統(tǒng)計日志監(jiān)控 3. 系統(tǒng)和服務(wù)日志 系統(tǒng)日志服務(wù)是由一個名為syslog的服務(wù)管理的,如一下日志文件都是由syslog日志服務(wù)驅(qū)動的: /var/log/lastlog :記錄最后一次用戶成功登陸的時間、登陸IP等信息 /var/log/messages :記錄Linux操作系統(tǒng)常見的系統(tǒng)和服務(wù)錯誤信息 /var/log/secure :Linux系統(tǒng)安全日志,記錄用戶和工作組變壞情況、用戶登陸認證情況 /var/log/btmp :記錄Linux登陸失敗的用戶、時間以及遠程IP地址 /var/log/cron :記錄crond計劃任務(wù)服務(wù)執(zhí)行情況 …... [root@xhot ~]# cat /var/log/lastlog Lpts/0218.192.87.4 Lpts/1218.192.87.4 Lpts/1218.192.87.4 Lpts/0218.192.87.46 Lpts/0218.192.87.4 …...
1. 在Linux系統(tǒng),大部分日志都是由syslog日志服務(wù)驅(qū)動和管理的 配置文件, /etc/init.d/syslog是啟動腳本,這里主講主配置文件/etc/syslog.conf: /etc/syslog.conf 語句結(jié)構(gòu): [root@xhot ~]# grep -v "#" /etc/syslog.conf //列出非#打頭的每一行 *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log 選擇域(消息類型.錯誤級別) 動作域 2. 消息類型:auth,authpriv,security;cron,daemon,kern,lpr,mail, mark,news,syslog,user,uucp,local0~local7. 錯誤級別:(8級)debug,info,notice,warning|warn;err|error;crit,alert,emerg|panic 動作域:file,user,console,@remote_ip 舉如上的/etc/syslog.conf文件三個例子: *.info;mail.none;authpriv.none;cron.none /var/log/messages 表示info級別的任何消息都發(fā)送到/var/log/messages日志文件,但郵件系統(tǒng)、驗證系統(tǒng) 和計劃任務(wù)的錯誤級別信息就除外,不發(fā)送(none表示禁止) cron.* /var/log/cron 表示所有級別的cron信息發(fā)到/var/log/cron文件 *.emerg * 表示emerg錯誤級別(危險狀態(tài))的所有消息類型發(fā)給所有用戶
此服務(wù)器的配置非常簡單,只是修改一個文件的一個地方,然后重啟服務(wù)即可: [root@xhot ~]# grep -v "#" /etc/sysconfig/syslog SYSLOGD_OPTIONS="-m 0 -r" //只要在這里添加“-r”就行咯 KLOGD_OPTIONS="-x" SYSLOG_UMASK=077 [root@xhot ~]# service syslog restart 關(guān)閉內(nèi)核日志記錄器: [確定] 關(guān)閉系統(tǒng)日志記錄器: [確定] 啟動系統(tǒng)日志記錄器: [確定] 啟動內(nèi)核日志記錄器: [確定] 對于發(fā)送消息到服務(wù)器的OS,只要在寫/etc/syslog.conf主配置文件的時候,作用域 為@server-ip就行了,比如針對218.192.87.24這臺日志服務(wù)器,把一臺ubuntu系統(tǒng)的所有 info級別的auth信息發(fā)給日志服務(wù)器,那么對于ubuntu系統(tǒng)的/etc/syslog.conf文件最后一 行添加 auth.info @218.192.87.24 就OK了
系統(tǒng)工作到了一定時間后,日志文件的內(nèi)容隨著時間和訪問量的增加而越來越多, 日志文件也越來越大。而且當日志文件超過系統(tǒng)控制范圍時候,還會對系統(tǒng)性能 造成影響。轉(zhuǎn)儲方式可以設(shè)為每年轉(zhuǎn)儲、每月轉(zhuǎn)儲、每周轉(zhuǎn)儲、達到一定大小轉(zhuǎn)儲。 在Linux系統(tǒng),經(jīng)常使用“l(fā)ogrotate”工具進行日志轉(zhuǎn)儲,結(jié)合cron計劃任務(wù),可以輕松 實現(xiàn)日志文件的轉(zhuǎn)儲。轉(zhuǎn)儲方式的設(shè)置由“/etc/logrotate.conf”配置文件控制: [root@xhot ~]# cat /etc/logrotate.conf # see "man logrotate" for details //可以查看幫助文檔 # rotate log files weekly weekly //設(shè)置每周轉(zhuǎn)儲 # keep 4 weeks worth of backlogs rotate 4 //最多轉(zhuǎn)儲4次 # create new (empty) log files after rotating old ones create //當轉(zhuǎn)儲后文件不存儲時創(chuàng)建它 # uncomment this if you want your log files compressed #compress //以壓縮方式轉(zhuǎn)儲 # RPM packages drop log rotation information into this directory include /etc/logrotate.d //其他日志文件的轉(zhuǎn)儲方式,包含在該目錄下 # no packages own wtmp -- we'll rotate them here /var/log/wtmp { //設(shè)置/var/log/wtmp日志文件的轉(zhuǎn)儲參數(shù) monthly //每月轉(zhuǎn)儲 create 0664 root utmp //轉(zhuǎn)儲后文件不存在時創(chuàng)建它,文件所有者為root, 所屬組為utmp,對應(yīng)的權(quán)限為0664 rotate 1 //轉(zhuǎn)儲一次 } # system-specific logs may be also be configured here.
時將老的日志文件放到/var/log/news/old目錄下,若日志文件不存在,則跳過。完成后重啟 news新聞組服務(wù),轉(zhuǎn)儲時不壓縮。那么可以在/etc/logrotate.conf文件的最后添加如下: /var/log/news/*{ monthly rotate 2 olddir /var/log/news/old missingok postrotate kill -HUP `cat /var/run/inn.pid` endscript nocompress }
5次,轉(zhuǎn)儲時發(fā)送郵件給root@localhost用戶,當日志文件達到100KB時才轉(zhuǎn)儲,轉(zhuǎn)儲后重啟 httpd服務(wù),那么可以直接在/etc/logrotate.conf文件的最后添加如下: /var/log/httpd/access.log /var/log/http/error.log{ rotate 5 mail root@localhost size=100k sharedscripts /sbin/killall -HUP httpd endscript } 自定義日志轉(zhuǎn)儲(/etc/logrotate.d/*) 通過下面一個例子將所有類型錯誤級別為info的日志轉(zhuǎn)儲到/var/log/test.log日志文件中,并設(shè)置 /var/log/test.log達到50KB后進行轉(zhuǎn)儲,轉(zhuǎn)儲10次,轉(zhuǎn)儲時壓縮,轉(zhuǎn)儲后重啟syslog服務(wù): 1、修改/etc/syslog.conf文件使得如下: [root@xhot ~]# tail -1 /etc/syslog.conf //查看該文件的最后一行 *.info /var/log/test.log 2、重啟syslog服務(wù): 關(guān)閉內(nèi)核日志記錄器: [確定] 關(guān)閉系統(tǒng)日志記錄器: [確定] 啟動系統(tǒng)日志記錄器: [確定] 啟動內(nèi)核日志記錄器: [確定] 3、創(chuàng)建/etc/logrotate.d/test.log日志轉(zhuǎn)儲參數(shù)配置文件,添加如下: [root@xhot ~]# cat /etc/logrotate.d/test.log /var/log/test.log{ rotate 10 size = 50k compress postrotate killall -HUP syslog endscript } 4、查看文件/etc/cron.daily/logrotate確保如下: [root@xhot ~]# cat /etc/cron.daily/logrotate #!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0 5、查看轉(zhuǎn)儲后的文件 /var/log [root@xhot log]# ls test.log* …… //結(jié)果等要轉(zhuǎn)儲的時候會發(fā)現(xiàn)壓縮文件和原本的test.log文件 |
|