轉(zhuǎn)載自:http://www.cnblogs.com/php5/archive/2010/11/10/1873206.html
Linux系統(tǒng)日志管理
日志分類:
1. 連接時間的日志
連接時間日志一般由/var/log/wtmp和/var/run/utmp這兩個文件記錄,不過這
兩個文件無法直接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)控用戶的操作指令是非常有效的。當(dāng)服務(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
…...
Linux日志服務(wù)介紹
1. 在Linux系統(tǒng),大部分日志都是由syslog日志服務(wù)驅(qū)動和管理的
syslog服務(wù)由兩個重要的配置文件控制管理,分別是/etc/syslog.conf主配置文件和/etc/sysconfig/syslog輔助
配置文件, /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ā)給所有用戶
Linux日志服務(wù)器配置
此服務(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了
日志轉(zhuǎn)儲服務(wù)
系統(tǒng)工作到了一定時間后,日志文件的內(nèi)容隨著時間和訪問量的增加而越來越多,
日志文件也越來越大。而且當(dāng)日志文件超過系統(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 //當(dāng)轉(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/目錄下的所有文件設(shè)置轉(zhuǎn)儲參數(shù),每周轉(zhuǎn)儲,轉(zhuǎn)儲2次,轉(zhuǎn)儲
時將老的日志文件放到/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
}
另一個例子:為/var/log/httpd/access.log和/var/log/httpd/error.log日志設(shè)置轉(zhuǎn)儲參數(shù)。轉(zhuǎn)儲
5次,轉(zhuǎn)儲時發(fā)送郵件給root@localhost用戶,當(dāng)日志文件達到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ù):
[root@xhot ~]# /sbin/service syslog restart
關(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 ~]# vim /etc/logrotate.d/test.log
[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)儲后的文件
[root@xhot log]# pwd
/var/log
[root@xhot log]# ls test.log*
…… //結(jié)果等要轉(zhuǎn)儲的時候會發(fā)現(xiàn)壓縮文件和原本的test.log文件