




版權(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:/ww
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è)交易的步驟以及管理W
3、eb網(wǎng)站“幕后”的數(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é)
4、議該請求中包含了客戶端的IP地址、瀏覽器的類型、請求的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-e
5、xcel, application/msword, */*Referer: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)Host: 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ù)器
6、就是apache,因此我們這里的討論都以Linuxapache環(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/via200209
7、15logo.gif HTTP/1.1 304 0 Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)7 - - 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; DigExt)1 - - 06/Dec/2002:00:00:00 +0000 GET /2/face/shnew/ad/via20020915logo.
8、gif HTTP/1.1 304 0 Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)04 - - 06/Dec/2002:00:00:00 +0000 GET /images/logolun1.gif HTTP/1.1 304 0 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)28 - - 06/Dec/2002:00:00:00 +0000 GET /2/face/pub/image_top_l.gif HTTP/1.1 200
9、 260 Mozilla/4.0 (compatible; MSIE 5.5; 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 comm
10、onErrorLog /www/logs/error_log CustomLog用來指示apache的訪問日志的存放位置(這里保存在/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 75.8.18.
11、19 ServerName ServerAdmin secfocusDocumentRoot /www/htdocs/secfocus/CustomLog /www/log/secfocus combinedAlias /usage/ /www/log/secfocus/usage/ServerName ServerAdmin tomorrowtel DocumentRoot /www/htdocs/ tomorrowtelCustomLog /www/log/tomorrowtel combinedAlias /usage/ /www/log/tomorrowtel/usage/ 這里需要注
12、意的是每個(gè)虛擬主機(jī)的定義都有一個(gè)CustomLog命令,用來指定該虛擬主機(jī)訪問日志的存放文件;而Alias命令用來讓日志分析生成的報(bào)表能通過 但是下來遇到的一個(gè)問題就是日志文件的輪循,因?yàn)槿罩臼且恢痹谠龃蟮模绻贿M(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ù)
13、器日志文件每天進(jìn)行輪循。 四、web服務(wù)器日志輪循 web服務(wù)器日志輪循比較好的方式有三種:第一種方法是利用Linux系統(tǒng)自身的日志文件輪循機(jī)制:logrotate;第二種方法是利用apache自帶的日志輪循程序rotatelogs;第三種是使用在apache的FAQ中推薦發(fā)展已經(jīng)比較成熟的一個(gè)日志輪循工具cronolog。 對于大型的WEB服務(wù)來說,其往往使用實(shí)用負(fù)載均衡技術(shù)提高web站點(diǎn)服務(wù)能力,這樣后臺有多個(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)生成日志文件。
14、 41 logrotate實(shí)現(xiàn)日志輪循 首先我們討論采用Linux系統(tǒng)自身的日志文件輪循機(jī)制:logrotate的方法。Logrotate是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)行日志輪循。
15、 而在/etc/logrorate.conf中可以看到內(nèi)容如下: # see man logrotate for details# 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 informati
16、on into this directoryinclude /etc/logrotate.d# no packages own wtmp - well rotate them here/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的配置文件,來指示logrotat
17、e如何輪循web服務(wù)器的日志文件即可,下面是一個(gè)示例: /www/log/secfocus rotate 2 dailymissingoksharedscriptspostrotate/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è)備份文件,也就是
18、只有:access_log、access_log.1、access_log.2三個(gè)日志備份文件。就這樣就實(shí)現(xiàn)了對兩個(gè)虛擬主機(jī)的日志文件的輪循。后面我們會(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ù)性。 42 使用apache自帶的rotatelogs實(shí)現(xiàn)日志輪循 apache提供了將不把日志直接寫入文件,而是通過管道發(fā)送給另外一個(gè)程序的能力,這樣就大大的加強(qiáng)了對日志
19、進(jìn)行處理的能力,這個(gè)通過管道得到的程序可以是任何程序:如日志分析,壓縮日志等。要實(shí)現(xiàn)將日志寫到管道只需要將配置中日志文件部分的內(nèi)容替換為“|程序名“即可,例如: # 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
20、 上面的示例中apache訪問日志被發(fā)送給程序rotatelogs,rotatelogs將日志寫入/www/logs/secfocus/access_log,并每隔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。 43 使用cronolog實(shí)現(xiàn)日志輪循 首先需要下載和
21、安裝cronolog,可以到下載最新版本的cronolog。下載完畢以后,解壓安裝即可,方法如下所示: rootmail root# tar xvfz cronolog-1.6.2.tar.gzrootmail root# cd cronolog-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 這就完成了cronol
22、og的配置和安裝,默認(rèn)情況下cronolog是安裝在/usr/local/sbin下。 修改apache日志配置命令如下所示: CustomLog |/usr/local/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/secfocu
23、s/date -v-1d +%w/access_log /www/logs/secfocus/access_log_yesterday 這樣再使用日志統(tǒng)計(jì)分析程序的對文件access_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ù)器的日志文件,例如:log
24、1 log2 log3并輸出到log_all中的方法是: sort -m -t -k 4 -o log_all log1 log2 log3-m: 使用 merge優(yōu)化算法,-k 4表示根據(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)行效率。在主頻
25、為200Mhz的機(jī)器上,webalizer每秒鐘可以分析10000條記錄,所以分析一個(gè)40M大小的日志文件只需要15秒。 2、webalizer支持標(biāo)準(zhǔn)的一般日志文件格式(Common Logfile Format);除此之外,也支持幾種組合日志格式(Combined Logfile Format)的變種,從而可以統(tǒng)計(jì)客戶情況以及客戶操作系統(tǒng)類型。并且現(xiàn)在webalizer已經(jīng)可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。 3、支持命令行配置以及配置文件。 4、可以支持多種語言,也可以自己進(jìn)行本地化工作。 5、支持多種平臺,比如UNIX、linux、NT, OS/
26、2 和 MacOS等。 上圖是webalizer生成的訪問統(tǒng)計(jì)分析報(bào)表第一頁的內(nèi)容,這里包含每個(gè)月的平均訪問量的表格和條形圖統(tǒng)計(jì)分析情況。點(diǎn)擊每個(gè)月分,可以得到這個(gè)月每天的詳細(xì)統(tǒng)計(jì)信息。 51 安裝 在安裝以前首先需要確保系統(tǒng)已經(jīng)安裝有g(shù)d庫,可以使用: rootmail root# rpm -qa|grep gdgd-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
27、包來安裝。 使用rpm包方式安裝非常簡單,從找到webalizer包,下載以后: rpm ivh webalizer-2.01_10-1.i386.rpm 即可實(shí)現(xiàn)安裝。 對于源代碼方式首先需要從 tar xvzf 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
28、/目錄下安裝一個(gè)webalizer可執(zhí)行文件。 52 配置和運(yùn)行 對webalizer運(yùn)行的控制可以通過配置文件或者在命令行指定參數(shù)的兩種方式進(jìn)行。而使用配置文件方式是比較簡單和靈活的,適用于自動(dòng)web服務(wù)器日志統(tǒng)計(jì)分析的應(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/us
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 師德開學(xué)第一講活動(dòng)方案
- 山東寒假義工活動(dòng)方案
- 小學(xué)自理大賽活動(dòng)方案
- 工地反詐騙活動(dòng)方案
- 展會(huì)準(zhǔn)客戶互動(dòng)活動(dòng)方案
- 山貨節(jié)活動(dòng)評選活動(dòng)方案
- 居家期間員工活動(dòng)方案
- 小班賀卡活動(dòng)方案
- 工會(huì)美食坊活動(dòng)方案
- 小學(xué)禮儀培訓(xùn)活動(dòng)方案
- 翻譯中國智慧樹知到期末考試答案章節(jié)答案2024年湖南工業(yè)大學(xué)
- 綜合管廊及道路實(shí)施性施工組織設(shè)計(jì)概述
- 中國民族鋼琴藝術(shù)鑒賞智慧樹知到期末考試答案章節(jié)答案2024年西安交通大學(xué)
- 新編旅游職業(yè)道德 課件 譚為躍 第6、7章 旅游交通從業(yè)者道德素養(yǎng)、旅游購物店從業(yè)者道德素養(yǎng)
- 2024屆新疆維吾爾阿克蘇地區(qū)小升初語文檢測卷含答案
- 部編版《道德與法治》五年級下冊第11課《屹立在世界的東方》教學(xué)設(shè)計(jì)
- 國際商法概述
- 2023年新疆維吾爾自治區(qū)石河子市小升初數(shù)學(xué)試卷(內(nèi)含答案解析)
- 湖北煙草公司招聘考試真題
- 1000道100以內(nèi)進(jìn)位退位加減法題
評論
0/150
提交評論