多服務(wù)器日志合并統(tǒng)計(jì)_Windows教程
摘要: 本文介紹了一種將apache日志的cronolog輪循和webalizer合并統(tǒng)計(jì)的方法。
關(guān)鍵詞:
webalizer apache log analysis sort merge cronolog 日志 分析
內(nèi)容摘要:
你完全不必耐心地看完下面的所有內(nèi)容,因?yàn)榻Y(jié)論無非以下2點(diǎn):
1 用 cronolog 干凈,安全地輪循apache"日"志;
2 用 sort -m 合并排序多個(gè)日志;
根據(jù)個(gè)人的使用經(jīng)歷:
1) 先介紹apache日志的合并方法;
2) 然后根據(jù)由此引出的問題說明日志輪循的必要性和解決方法,介紹如何通過cronolog對(duì)apache日志進(jìn)行輪循;
中間有很多在設(shè)計(jì)日志合并過程中一些相關(guān)工具的使用技巧和一些嘗試的失敗經(jīng)歷……
我相信解決以上問題的路徑不止這一條途徑,以下方案肯定不是最簡便或者說成本最低的,希望能和大家有更多的交流。
1、多服務(wù)器日志合并統(tǒng)計(jì)的必要性
越來越多大型的Web服務(wù)使用DNS輪循來實(shí)現(xiàn)負(fù)載均衡:使用多個(gè)同樣角色的服務(wù)器做前臺(tái)的WEB服務(wù),這大大方便了服務(wù)的分布規(guī)劃和擴(kuò)展性,但多個(gè)服務(wù)器的分布使得日志的分析統(tǒng)計(jì)也變得有些麻煩。如果使用webalizer等日志分析工具對(duì)每臺(tái)機(jī)器分別做日志統(tǒng)計(jì):
1) 會(huì)對(duì)數(shù)據(jù)的匯總帶來很多麻煩,比如:統(tǒng)計(jì)的總訪問量需要將SERVER1 SERVER2...上指定月份的數(shù)字相加。
2) 會(huì)大大影響統(tǒng)計(jì)結(jié)果中唯一訪客數(shù)unique visits,唯一站點(diǎn)數(shù)unique sites的等指標(biāo)的統(tǒng)計(jì),因?yàn)檫@幾個(gè)指標(biāo)并非幾臺(tái)機(jī)器的代數(shù)相加。
統(tǒng)一日志統(tǒng)計(jì)所帶來的好處是顯而易見的,但如何把所有機(jī)器的統(tǒng)計(jì)合并到一個(gè)統(tǒng)計(jì)結(jié)果里呢?
首先也許會(huì)想:多個(gè)服務(wù)器能不能將日志記錄到同一個(gè)遠(yuǎn)程文件里呢?我們不考慮使用遠(yuǎn)程文件系統(tǒng)記錄日志的問題,因?yàn)閹淼穆闊┻h(yuǎn)比你獲得的方便多的多……
因此,要統(tǒng)計(jì)的多個(gè)服務(wù)器的日志還是:分別記錄=>并通過一定方式定期同步到后臺(tái)=>合并=>后用日志分析工具來進(jìn)行分析。
首先,要說明為什么要合并日志:因?yàn)閣ebalizer沒有將同一天的多個(gè)日志合并的功能先后運(yùn)行
webalizer log1
webalizer log2
webalizer log3
這樣最后的結(jié)果是:只有l(wèi)og3的結(jié)果。
能不能將log1<
因?yàn)橐粋(gè)日志的分析工具不是將日志一次全部讀取后進(jìn)行分析,而且流式的讀取日志并按一定時(shí)間間隔,保存階段性的統(tǒng)計(jì)結(jié)果。因此時(shí)間跨度過大(比如2條日志間隔超過5分鐘),一些日志統(tǒng)計(jì)工具的算法就會(huì)將前面的結(jié)果"忘掉"。因此, log1<2、日志合并問題
多個(gè)服務(wù)的合并統(tǒng)計(jì)就是要把日志按時(shí)間排序后合并成一個(gè)文件。典型的多個(gè)日志文件的時(shí)間字段是這樣的:
log1 log2 log3
00:15:00 00:14:00 00:11:00
00:16:00 00:15:00 00:12:00
00:17:00 00:18:00 00:13:00
00:18:00 00:19:00 00:14:00
14:18:00 11:19:00 10:14:00
15:18:00 17:19:00 11:14:00
23:18:00 23:19:00 23:14:00
日志合并必須是按時(shí)間將多個(gè)日志的交叉合并。合并后的日志應(yīng)該是:
00:15:00 來自log1
00:15:00 來自log2
00:16:00 來自log1
00:17:00 來自log3
00:18:00 來自log2
00:19:00 來自log1
....
如何合并多個(gè)日志文件?
下面以標(biāo)準(zhǔn)的clf格式日志(apache)為例:
apche的日志格式是這樣的:
%h %l %u %t "%r" %>s %b
具體的例子:
111.222.111.222 - - [03/Apr/2002:10:30:17 +0800]
"GET /index.html HTTP/1.1" 200 419
最簡單的想法是將日志一一讀出來,然后按日志中的時(shí)間字段排序
cat log1 log2 log3 |sort -k 4 -t " "
注釋:
-t " ": 日志字段分割符號(hào)是空格
-k 4: 按第4個(gè)字段排序,也就是:
[03/Apr/2002:10:30:17 +0800] 這個(gè)字段
-o log_all: 輸出到log_all這個(gè)文件中
但這樣的效率比較低,要知道。如果一個(gè)服務(wù)已經(jīng)需要使用負(fù)載均衡,其服務(wù)的單機(jī)日志條數(shù)往往都超過了千萬級(jí),大小在幾百M(fèi),這樣要同時(shí)對(duì)多個(gè)幾百M(fèi)的日志進(jìn)行排序,機(jī)器的負(fù)載可想而之……
其實(shí)有一個(gè)優(yōu)化的途徑,要知道:即使單個(gè)日志本身已經(jīng)是一個(gè)"已經(jīng)按照時(shí)間排好序"的文件了,而sort對(duì)于這種文件的排序合并提供了一個(gè)優(yōu)化合并算法:使用 -m merge合并選項(xiàng)。
因此,合并這樣格式的3個(gè)日志文件log1 log2 log3并輸出到log_all中比較好方法是:
sort -m -t " " -k 4 -o log_all log1 log2 log3
注釋:
-m: 使用 merge優(yōu)化算法
注意:合并后的日志輸出最好壓縮以后再發(fā)給webalizer處理。
有的系統(tǒng)能處理2G的文件,有的不能。有的程序能處理大于2G的文件,有的不能。盡量避免大于2G的文件,除非確認(rèn)所有參與處理的程序和操作系統(tǒng)都能處理這樣的文件。所以輸出后的文件如果大于2G,最好將日志gzip后再發(fā)給webalizer處理:大于2G的文件分析過程中文件系統(tǒng)出錯(cuò)的可能性比較大,并且gzip后也能大大降低分析期間的I/O操作。
日志的按時(shí)間排序合并就是這樣實(shí)現(xiàn)的。
3、日志的輪循機(jī)制
讓我們關(guān)心一下數(shù)據(jù)源問題:webalizer其實(shí)是一個(gè)按月統(tǒng)計(jì)的工具,支持增量統(tǒng)計(jì):因此對(duì)于大型的服務(wù),我可以按天將apache的日志合并后送給webalizer統(tǒng)計(jì)。WEB日志是如何按天(比如每天子夜00:00:00)截?cái)嗄?
如果你每天使用crontab:每天0點(diǎn)準(zhǔn)時(shí)將日志備份成access_log_yesterday
mv /path/to/apache/log/access_log /path/to/apache/log/access_log_yesterday
的話:你還需要:馬上運(yùn)行一下:apache restart 否則:apache會(huì)因?yàn)榈娜罩疚募浔鷣G失不知道將日志記錄到哪里去了。這樣歸檔每天子夜重啟apache服務(wù)會(huì)受到影響
Windows教程Rss訂閱服務(wù)器教程搜索
Windows教程推薦
- 個(gè)人服務(wù)器架設(shè)全攻略(25)
- Apache服務(wù)器的保護(hù)(3)
- 個(gè)人服務(wù)器架設(shè)全攻略(19)
- 個(gè)人服務(wù)器架設(shè)全攻略(57)
- Apache服務(wù)器高級(jí)設(shè)置指南(1)
- Windows服務(wù)器安全策略:IP安全策略設(shè)置方法
- Apache 性能最優(yōu)化分析(7)
- 個(gè)人服務(wù)器架設(shè)全攻略(03)
- Win 2K動(dòng)態(tài)DNS的安全考慮(3)
- 使用負(fù)載均衡技術(shù)建設(shè)高負(fù)載的網(wǎng)絡(luò)站點(diǎn)(1)
猜你也喜歡看這些
- IIS7權(quán)限簡述
- 降低winnt Apache服務(wù)的權(quán)限,讓你的虛擬主機(jī)更安全
- IIS設(shè)置網(wǎng)站文件過期時(shí)間的方法
- 當(dāng)今幾大主流服務(wù)器的操作系統(tǒng)特性概述
- IIS下PHP的ISAPI和FastCGI比較
- 詳細(xì)的DedeCMS(織夢(mèng))目錄權(quán)限安全設(shè)置教程
- 一臺(tái)服務(wù)器上部署多個(gè)Web站點(diǎn)
- 最完的htaccess文件用法收集整理
- Apache 2.2 + Tomcat 5.5 使用UrlRewrite實(shí)現(xiàn)泛域名解析的方法
- IIS排錯(cuò)
- 相關(guān)鏈接:
- 教程說明:
Windows教程-多服務(wù)器日志合并統(tǒng)計(jì)
。