Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案_百度文庫_第1頁
Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案_百度文庫_第2頁
Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案_百度文庫_第3頁
Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案_百度文庫_第4頁
Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案_百度文庫_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Web服務(wù)器日志統(tǒng)計(jì)分析完全解決方案hc360慧聰網(wǎng)通信行業(yè)頻道2003-06-03 14:49:37摘要:對于所有的ICP來說,除了保證網(wǎng)站穩(wěn)定正常運(yùn)行以外,一個(gè)重要的問題就是網(wǎng)站訪問量的統(tǒng)計(jì)和分析報(bào)表,這對于了解和監(jiān)控網(wǎng)站的運(yùn)行狀態(tài),對提高各個(gè)網(wǎng)站的服務(wù)能力和服務(wù)水平是必不可少的。通過對Web服務(wù)器的日志文件進(jìn)行分析和統(tǒng)計(jì),能夠有效掌握系統(tǒng)運(yùn)行情況以及網(wǎng)站內(nèi)容的受訪問情況、加強(qiáng)對整個(gè)網(wǎng)站及其內(nèi)容的維護(hù)與管理。本文對Web服務(wù)器日志分析的原理和技術(shù)進(jìn)行討論。文章相關(guān)軟件:webalizer cronolog / Apache http:/www.a

2、/一、前言隨著Internet上Web服務(wù)的發(fā)展,幾乎各個(gè)政府部門、公司、大專院校、科研院所等都在構(gòu)建或正在建設(shè)自己的網(wǎng)站。而與此同時(shí),在構(gòu)建網(wǎng)站建設(shè)中各個(gè)單位都會(huì)遇到各種各樣的問題,那么對web服務(wù)器的運(yùn)行和訪問情況進(jìn)行詳細(xì)和周全的分析對于了解網(wǎng)站運(yùn)行情況,發(fā)現(xiàn)網(wǎng)站存在的不足,促進(jìn)網(wǎng)站的更好發(fā)展重要性是不言而喻的。管理Web網(wǎng)站不只是監(jiān)視Web的速度和Web的內(nèi)容傳送,它要求不僅僅關(guān)注服務(wù)器每天的吞吐量,還要了解對這些Web網(wǎng)站的外來訪問,了解網(wǎng)站各頁面的訪問情況,根據(jù)各頁面的點(diǎn)擊頻率來改善網(wǎng)頁的內(nèi)容和質(zhì)量、提高內(nèi)容的可讀性,跟蹤包含有商業(yè)交易的步驟以及管理Web網(wǎng)站“幕后

3、”的數(shù)據(jù)等。為了更好地提供WWW服務(wù),監(jiān)控WEB服務(wù)器的運(yùn)行情況、了解網(wǎng)站內(nèi)容的詳細(xì)訪問狀況就越來越顯得重要和迫切了。而這些要求都可以通過對web服務(wù)器的日志文件的統(tǒng)計(jì)和分析來做到。二、WEB日志分析的原理網(wǎng)站服務(wù)器日志記錄了web服務(wù)器接收處理請求以及運(yùn)行時(shí)錯(cuò)誤等各種原始信息。通過對日志進(jìn)行統(tǒng)計(jì)、分析、綜合,就能有效地掌握服務(wù)器的運(yùn)行狀況,發(fā)現(xiàn)和排除錯(cuò)誤原因、了解客戶訪問分布等,更好的加強(qiáng)系統(tǒng)的維護(hù)和管理。在WWW服務(wù)模型是非常簡單的(見圖1:1 客戶端(瀏覽器和web服務(wù)器建立tcp連接,連接建立以后,向web 服務(wù)器發(fā)出訪問請求(如:get,根據(jù)HTTP協(xié)議該請求中包含了客戶端的IP地址

4、、瀏覽器的類型、請求的URL等一系列信息。圖1 web訪問機(jī)制2 web服務(wù)器收到請求后,將客戶端要求的頁面內(nèi)容返回到客戶端。如果出現(xiàn)錯(cuò)誤,那么返回錯(cuò)誤代碼。3 服務(wù)器端將訪問信息和錯(cuò)誤信息紀(jì)錄到日志文件里。下面是客戶端發(fā)送給web服務(wù)器請求的數(shù)據(jù)報(bào)的內(nèi)容:GET /engineer/ideal/list.htm HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/mswo

5、rd,*/*Referer: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0Host:Connection: Keep-Alive可以看到,在客戶機(jī)的請求里包含了很多有用的信息,例如:客戶端類型等等。而web 服務(wù)器就會(huì)將請求的web頁內(nèi)容發(fā)送返回給客戶機(jī)。目前最常用的web服務(wù)器有Apache、Netscape enterprise server、MS IIS等。而目前互聯(lián)網(wǎng)上最常用的web服務(wù)器就是apache,因此我們這里的討論都以Linux+

6、apache環(huán)境討論,其他的應(yīng)用環(huán)境類似。對于Apache來說,支持多種日志文件格式,最常見的是common和combined兩種模式,其中combined方式比common方式的日志的信息要多Referer(該請求來自于哪里,例如來自于yahoo的搜索引擎和User-agent(用戶客戶端類型,如mozilla 或IE。我們這里討論combined類型。下面是common類型的日志示例:21 - - 06/Dec/2002:00:00:00 +0000 GET/2/face/shnew/ad/via20020915logo.gif HTTP/1.1 304 0 Mo

7、zilla/4.0 (compatible; MSIE 6.0; Windows 987 - - 06/Dec/2002:00:00:00 +0000 GET/cgi-bin/guanggaotmp.cgi?1 HTTP/1.1 200 178 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt1 - -06/Dec/2002:00:00:00 +0000 GET /2/face/shnew/ad/via20020915logo.gif HTTP/1.1 304 0 Mozilla/4.0 (

8、compatible; MSIE 5.0; Windows 98;DigExt04 - - 06/Dec/2002:00:00:00 +0000 GET /images/logolun1.gifHTTP/1.1 304 0 Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.128 - - 06/Dec/2002:00:00:00 +0000 GET/2/face/pub/image_top_l.gif HTTP/1.1 200 260 Mozilla/4.0 (compatible; MSIE 5.5

9、; Windows NT 5.0從上面的日志文件可以看出日志記錄會(huì)記錄客戶端的IP地址、訪問發(fā)生的時(shí)間、訪問請求的頁面、web服務(wù)器對于該請求返回的狀態(tài)信息、返回給客戶端的內(nèi)容的大小(以字節(jié)為單位、該請求的引用地址、客戶瀏覽器類型等信息。三、apache日志的配置和管理本文中我們假設(shè)我們的apache運(yùn)行有兩個(gè)虛擬主機(jī):和。我們需要對這兩個(gè)虛擬主機(jī)分別進(jìn)行訪問日志分析和統(tǒng)計(jì)。Apache配置文件中,我們需要關(guān)心的和日志相關(guān)的配置有兩個(gè):CustomLog /www/logs/access_log commonErrorLog /www/logs/error_logCustomLog用來指示ap

10、ache的訪問日志的存放位置(這里保存在/www/logs/access_log中和格式(這里為common;ErrorLog用來指示apache錯(cuò)誤信息日志的存放位置。對于不配置虛擬主機(jī)的服務(wù)器來說,只需要直接在httpd.conf中查找CustomLOg的配置進(jìn)行修改即可;而對于具有多個(gè)虛擬服務(wù)器的web服務(wù)器來說,需要分離各個(gè)虛擬服務(wù)器的訪問日志,以便對各個(gè)虛擬服務(wù)器進(jìn)行訪問統(tǒng)計(jì)和分析。因此這就需要在虛擬服務(wù)器配置中進(jìn)行獨(dú)立的日志配置,示例:NameVirtualHost 9 ServerName ServerAdminsecfocusDocumentRoot /www

11、/htdocs/secfocus/CustomLog /www/log/secfocus combinedAlias /usage/ /www/log/secfocus/usage/ServerNameServerAdmin tomorrowtel DocumentRoot/www/htdocs/ tomorrowtelCustomLog /www/log/tomorrowtel combinedAlias /usage/www/log/tomorrowtel/usage/這里需要注意的是每個(gè)虛擬主機(jī)的定義都有一個(gè)CustomLog命令,用來指定該虛擬主機(jī)訪問日志的存放文件;而Alias命令用

12、來讓日志分析生成的報(bào)表能通過但是下來遇到的一個(gè)問題就是日志文件的輪循,因?yàn)槿罩臼且恢痹谠龃蟮?如果不進(jìn)行處理那么日志文件會(huì)越來越大,會(huì)影響web服務(wù)器運(yùn)行效率;速率,還可能過大耗盡服務(wù)器硬盤空間,導(dǎo)致服務(wù)器無法正常運(yùn)行,另外如果單個(gè)日志文件大于操作系統(tǒng)單文件尺寸的的限制,從而更進(jìn)一步影響web服務(wù)的運(yùn)行。而且日志文件如果不進(jìn)行輪循也不變于日志統(tǒng)計(jì)分析程序的運(yùn)行,因?yàn)槿罩窘y(tǒng)計(jì)分析都是以天為單位進(jìn)行統(tǒng)計(jì)分析的,跨越很長時(shí)間日志會(huì)使得日志統(tǒng)計(jì)分析程序運(yùn)行特別慢。因此這里就需要對web服務(wù)器日志文件每天進(jìn)行輪循。四、web服務(wù)器日志輪循web服務(wù)器日志輪循比較好的方式有三種:第一種方法是利用Linux

13、系統(tǒng)自身的日志文件輪循機(jī)制:logrotate;第二種方法是利用apache自帶的日志輪循程序rotatelogs;第三種是使用在apache的FAQ中推薦發(fā)展已經(jīng)比較成熟的一個(gè)日志輪循工具cronolog。對于大型的WEB服務(wù)來說,其往往使用實(shí)用負(fù)載均衡技術(shù)提高web站點(diǎn)服務(wù)能力,這樣后臺(tái)有多個(gè)服務(wù)器提供WEB服務(wù),這大大方便了服務(wù)的分布規(guī)劃和擴(kuò)展性,但多個(gè)服務(wù)器的分布就需要對日志進(jìn)行合并統(tǒng)一進(jìn)行統(tǒng)計(jì)分析。因此為了保證統(tǒng)計(jì)的精確性就需要嚴(yán)格按照每天的時(shí)段來自動(dòng)生成日志文件。4.1 logrotate實(shí)現(xiàn)日志輪循首先我們討論采用Linux系統(tǒng)自身的日志文件輪循機(jī)制:logrotate的方法。L

14、ogrotate是Linux系統(tǒng)自身帶的一個(gè)日志輪循程序,是專門對各種系統(tǒng)日志(syslogd,mail進(jìn)行輪循的程序。該程序是由運(yùn)行程序的服務(wù)crond來每天凌晨4:02運(yùn)行的,可以在/etc/cron.daily目錄下可以看到logrotate文件,其內(nèi)容如下:#!/bin/sh/usr/sbin/logrotate /etc/logrotate.conf可以看到每天清晨crond都會(huì)啟動(dòng)/etc/cron.daily目錄下的logrotate腳本來進(jìn)行日志輪循。而在/etc/logrorate.conf中可以看到內(nèi)容如下:# see man logrotate for details#

15、rotate log files weeklyweekly# keep 4 weeks worth of backlogsrotate 4# create new (empty log files after rotating old onescreate# uncomment this if you want your log files compressed#compress# RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d# no packages own wtm

16、p - well rotate themhere/var/log/wtmp monthlycreate 0664 root utmprotate 1# system-specific logs may be also be configured here.從logrotate的配置文件中可以看到除了wtmp以外,需要滾動(dòng)的日志的配置都保存在/etc/logroate.d目錄下。因此我們只需要在該目錄下創(chuàng)建一個(gè)名為apache的配置文件,來指示logrotate如何輪循web服務(wù)器的日志文件即可,下面是一個(gè)示例:/www/log/secfocus rotate 2 dailymissingoks

17、haredscriptspostrotate/usr/bin/killall -HUP httpd 2 /dev/null | trueendscript/www/log/tomorrowtel rotate 2 dailymissingoksharedscriptspostrotate/usr/bin/killall -HUP httpd 2 /dev/null | trueendscript這里“rotate 2”表示輪循時(shí)只包括兩個(gè)備份文件,也就是只有:access_log、access_log.1、access_log.2三個(gè)日志備份文件。就這樣就實(shí)現(xiàn)了對兩個(gè)虛擬主機(jī)的日志文件的輪循。

18、后面我們會(huì)討論如何使用日志統(tǒng)計(jì)分析軟件對日志文件進(jìn)行處理。這種方法的優(yōu)點(diǎn)是不需要其他第三方工具就可以實(shí)現(xiàn)日志輪循,但是對于重負(fù)載的服務(wù)器和使用負(fù)載均衡技術(shù)的web服務(wù)器來說這種方法就不是很實(shí)用。因?yàn)樗菍ο鄳?yīng)服務(wù)進(jìn)程發(fā)出一個(gè)-HUP重啟命令來實(shí)現(xiàn)日志的截?cái)鄽w檔的,這樣會(huì)影響服務(wù)的連續(xù)性。4.2 使用apache自帶的rotatelogs實(shí)現(xiàn)日志輪循apache提供了將不把日志直接寫入文件,而是通過管道發(fā)送給另外一個(gè)程序的能力,這樣就大大的加強(qiáng)了對日志進(jìn)行處理的能力,這個(gè)通過管道得到的程序可以是任何程序:如日志分析,壓縮日志等。要實(shí)現(xiàn)將日志寫到管道只需要將配置中日志文件部分的內(nèi)容替換為“|程序名

19、“即可,例如:# compressed logsCustomLog |/usr/bin/gzip -c /var/log/access_log.gz common這樣就可以實(shí)用apache自帶的輪循工具:rotatelogs來對日志文件進(jìn)行輪循。rotatelogs 基本是用來按時(shí)間或按大小控制日志的。CustomLog |/www/bin/rotatelogs /www/logs/secfocus/access_log 86400 common上面的示例中apache訪問日志被發(fā)送給程序rotatelogs,rotatelogs將日志寫入/www/logs/secfocus/access_l

20、og,并每隔86400秒(一天對日志進(jìn)行一次輪循。輪循以后的文件名為/www/logs/secfocus/access_log.nnnn,這里nnn是開始記錄日志的時(shí)間。因此為了將日志按天對齊就需要在凌晨00:00啟動(dòng)服務(wù),使得每天輪循得到的日志剛好是完整一天的日志,以提供給訪問統(tǒng)計(jì)分析程序進(jìn)行處理。如果是00:00開始生成新的日志,那么輪循得到的日志就是access_log.0000。4.3 使用cronolog實(shí)現(xiàn)日志輪循首先需要下載和安裝cronolog,可以到下載最新版本的cronolog。下載完畢以后,解壓安裝即可,方法如下所示:rootm

21、ail root# tar xvfz cronolog-1.6.2.tar.gzrootmail root# cdcronolog-1.6.2rootmail cronolog-1.6.2# ./configurerootmail cronolog-1.6.2#makerootmail cronolog-1.6.2# make checkrootmail cronolog-1.6.2# make install 這就完成了cronolog的配置和安裝,默認(rèn)情況下cronolog是安裝在/usr/local/sbin下。修改apache日志配置命令如下所示:CustomLog |/usr/loc

22、al/sbin/cronolog /www/logs/secfocus/%w/access_log combined這里%w表示按照日期星期幾在不同的目錄下保存日志,這種方式會(huì)保存一周的日志。為了進(jìn)行日志分析,需要每天將該日志文件拷貝(或移動(dòng),如果不希望保存一周的日志到一個(gè)固定的位置以方便日志分析統(tǒng)計(jì)文件進(jìn)行處理,實(shí)用crontab e,如下添加定時(shí)任務(wù):5 0 * * * /bin/mv /www/logs/secfocus/date -v-1d +%w/access_log/www/logs/secfocus/access_log_yesterday這樣再使用日志統(tǒng)計(jì)分析程序的對文件acc

23、ess_log_yesterday進(jìn)行處理。對于使用負(fù)載均衡技術(shù)的大型站點(diǎn),就存在多個(gè)服務(wù)器的訪問日志的合并處理問題.對于這種情況,各個(gè)服務(wù)器定義或移動(dòng)日志文件時(shí)就不能使用access_log_yesterday了,就應(yīng)該帶上服務(wù)器編號了,例如服務(wù)器IP地址等信息以區(qū)分。然后在各個(gè)服務(wù)器上運(yùn)行網(wǎng)站鏡像和備份服務(wù)rsyncd(參考文章” 用rsync實(shí)現(xiàn)網(wǎng)站鏡像和備份”,ttp:/合并多個(gè)服務(wù)器的日志文件,例如:log1 log2 log3并輸出到log_all中的方法是:sort -m -t -k 4 -o log_all log1 log2 log3-m: 使用merge優(yōu)化算法,-k 4表

24、示根據(jù)時(shí)間進(jìn)行排序,-o表示將排序結(jié)果存放到指定的文件中。五、日志統(tǒng)計(jì)分析程序webalizer的安裝和配置webalizer是一個(gè)高效的、免費(fèi)的web服務(wù)器日志分析程序。其分析結(jié)果是HTML文件格式,從而可以很方便的通過web服務(wù)器進(jìn)行瀏覽。Internet上的很多站點(diǎn)都使用webalizer 進(jìn)行web服務(wù)器日志分析。Webalizer具有以下一些特性:1、是用C寫的程序,所以其具有很高的運(yùn)行效率。在主頻為200Mhz的機(jī)器上,webalizer 每秒鐘可以分析10000條記錄,所以分析一個(gè)40M大小的日志文件只需要15秒。2、webalizer支持標(biāo)準(zhǔn)的一般日志文件格式(Common L

25、ogfile Format;除此之外,也支持幾種組合日志格式(Combined Logfile Format的變種,從而可以統(tǒng)計(jì)客戶情況以及客戶操作系統(tǒng)類型。并且現(xiàn)在webalizer已經(jīng)可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。3、支持命令行配置以及配置文件。4、可以支持多種語言,也可以自己進(jìn)行本地化工作。5、支持多種平臺(tái),比如UNIX、linux、NT, OS/2 和MacOS等。上圖是webalizer生成的訪問統(tǒng)計(jì)分析報(bào)表第一頁的內(nèi)容,這里包含每個(gè)月的平均訪問量的表格和條形圖統(tǒng)計(jì)分析情況。點(diǎn)擊每個(gè)月分,可以得到這個(gè)月每天的詳細(xì)統(tǒng)計(jì)信息。5.1 安裝在安

26、裝以前首先需要確保系統(tǒng)已經(jīng)安裝有g(shù)d庫,可以使用:rootmail root# rpm -qa|grepgdgd-devel-1.8.4-4gdbm-devel-1.8.0-14gdbm-1.8.0-14sysklogd-1.4.1-8gd-1.8.4-4來確認(rèn)系統(tǒng)已經(jīng)安裝有g(shù)d-deve和gd兩個(gè)rpm包。安裝webalizer有兩種方式,一種是下載源代碼來安裝,一種是直接使用rpm包來安裝。使用rpm包方式安裝非常簡單,從找到webalizer包,下載以后:rpm ivh webalizer-2.01_10-1.i386.rpm即可實(shí)現(xiàn)安裝。對于源代碼方式首先需要從源代碼包:tar xvz

27、f webalizer-2.01-10-src.tgz在生成的目錄中有個(gè)lang目錄,該目錄中保存了各種語言文件,但是只有繁體中文版本,可以自己轉(zhuǎn)換成簡體,或者自己重新翻譯一下。然后進(jìn)入生成的目錄:cd webalizer-2.01-10./configuremake -with-language=Chinesemake install編譯成功后,會(huì)在/usr/local/bin/目錄下安裝一個(gè)webalizer可執(zhí)行文件。5.2 配置和運(yùn)行對webalizer運(yùn)行的控制可以通過配置文件或者在命令行指定參數(shù)的兩種方式進(jìn)行。而使用配置文件方式是比較簡單和靈活的,適用于自動(dòng)web服務(wù)器日志統(tǒng)計(jì)分析

28、的應(yīng)用環(huán)境。webalizer的默認(rèn)配置文件為/etc/webalizer.conf,當(dāng)啟動(dòng)Webalizer時(shí)沒有使用“-f“選項(xiàng)時(shí), Webalizer就會(huì)尋找文件/etc/webalizer.conf,也可以使用“-f”來指定配置文件(當(dāng)服務(wù)器有虛擬主機(jī)時(shí),就需要配置多份不同的webalizer配置文件,不同的虛擬主機(jī)的webalizer使用不同的配置文件。Webalizer.conf配置文件中需要修改的配置選項(xiàng)如下:LogFile /www/logs/secfocus/access_log用來指示配置文件的路徑信息,webalizer會(huì)將該日志文件作為輸入進(jìn)行統(tǒng)計(jì)分析;OutputDir /www/htdocs/secfocus/usage用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論