引言:Web網站日志文件中包含了網站運行的大量信息,通過對日志進行分析和統計,能夠有效掌握網站系統運行情況,能夠加強對整個網站及其內容的維護和管理,使網站運維工作有的放矢。本文通過對基于AWStats的Web日志分析服務器的搭建,介紹日志分析服務器部署的基本架構和工作原理。
隨著Web網站的發展和規模不斷擴大,對于網站日志進行分析越來越重要。在Web服務器日志中,記錄了Web Server接收請求以及運行狀態的各種原始信息。對這些信息進行統計和分析,能夠有效地掌握網站的運行狀況,了解網站訪問量、訪問高峰時段、訪問返回錯誤等信息,幫助運維人員加強對網站系統的維護和管理,為網站持續優化和發展提供準確的數據依據。
Web日志分析是通過分析工具的處理,將日志文件中包含的各種原始信息進行分析和統計,最終得到對運維人員有幫助的數據。日志分析有兩種架構形式,一種是在Web服務器上安裝日志分析程序,日志分析就在Web服務器上完成。另一種是將Web Server的日志文件通過網絡傳送到專門的日志分析服務器上,在日志分析服務器上進行日志分析。

圖1 日志分析服務器網絡架構
對于小型網站而言,日志分析工具可以和Web服務器放在一臺服務器上運行。但對于大中型網站,由于網站為了提高并發服務能力,都采用前端負載均衡技術,并發的情況會有多臺服務器產生Web日志。對于Web日志,由一臺專用的Web日志分析服務器來進行日志的集中收集和統計分析比較合適。將日志分析工具安裝在專門的日志分析服務器上,也避免了因日志分析給Web服務器帶來運行負擔。
本文將介紹第二種日志分析服務器的部署方法,即采用一臺專門的日志分析服務器來進行Web日志分析的方式(如圖1)。
Web服務器日志記錄了Web Server接受請求以及運行狀態的各種原始信息。在WWW服務中,客戶端訪問網站,向Web服務器發送請求,根據HTTP協議,這個請求中包含了客戶端的IP地址、瀏覽器的類型、請求的頁面等一系列信息。Web服務器端收到客戶端請求后,將其要求的信息返回到客戶端。如果出現錯誤,將返回錯誤代碼;Web服務器端將訪問信息和錯誤信息都記錄到日志文件中。
通過對日志文件中所包含的信息進行統計和分析,就能有效地掌握網站的運行狀況,了解訪問分布,幫助診斷錯誤等。對日志中訪問時間的統計分析,可以得到網站在某段時間內,訪問的高低峰值;對請求頁面的統計分析,可以知道訪問者對哪些頁面內容最感興趣,對哪些內容不感興趣,從而可以對網站內容進行相應的改善和調整;對訪問者IP進行統計,可以了解是哪些人在訪問網站;對錯誤信息進行分析,可以了解網站訪問存在哪些問題,并予以改正。
對于搭建Web日志分析服務器,需要考慮日志提取、定時執行提取任務、日志分析這三個方面的問題。
日志提取,是指在Web服務器中的日志文件,需要被傳送到日志分析服務器上進行分析處理。
定時執行,是指網站訪問記錄不斷在生成,每天在Web服務器訪問量最低的時候,定時執行日志提取任務,既可以滿足日志分析工作的需要,又可以最大限度地減輕日志提取對服務器的影響。
日志分析,是指日志分析服務器上安裝日志分析軟件,日志分析軟件對從web服務器上提取來的Web日志進行分析,并用Web頁面的方式呈現。

圖2 AWStats日志分析拓撲圖
本 文 采 用rsync、cron和AWStats來解決Web日志分析服務器的日志提取、定時執行和日志分析問題。為了說明原理,這里只以一臺日志分析服務器和一臺Web服務器的最簡架構為例進闡述Web日志服務器的部署原理(如圖2)。其中,Web服務器使用Apache服務器,網站域名為“www.mxctest.com”,IP 地 址 為“192.168.2.1”;日志提取使用rsync軟件,采用文件同步的方式快速有效地實現日志文件的提取;使用Linux系統自帶的cron服務定時執行日志提取任務;日志分析工具以AWStats為例,日志分析服務器IP地址為“192.168.2.2”。
rsync(remote synchronize)是一款免費的能夠實現遠程同步功能的軟件,它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信 息。rsync是 用“rsync算法”提供了一個客戶端和遠程文件服務器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,有較高的保密性。
做數據分析的前提是獲取日志,AWStats的實現機制是將Web上運行的日志按照指定的格式傳送到服務器上進行分析。數據提取的方法有很多,本文使用同步日志的方法,日志分析服務器從Web服務器同步日志文件,達到日志提取的效果。同步工具采用rsync,在Web服務器端和日志分析服務器都需要安裝rsync。其中,日志分析服務器作為rsync客戶端,Web服務器作為rsync服務器端。在日志文件同步過程中,rysnc客戶端(日志分析服務器)連接rsync服務器端(Web服務器)開放的服務端口,通過賬號口令核查后,進行指定目錄的文件同步傳輸,最終實現客戶端與服務器端日志文件一致。
使用yum安裝rsync:yum install -y rsync
創建配置文件/etc/rsyncd.conf,內容如下:
uid=nobody
gid=nobody
use chroot=no
max connections=4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[httpd]
path = /var/log/httpd
comment = BACKup log
ignore errors
read only = true
list false
auth user = rsyncuser
hosts allow =192.168.2.2
secrets file = /etc/rsyncd.secrets
“rsync.conf” 是 rsync的主配置文件,文件中設置了模塊,模塊都是以[name]命名。模塊主要定義了哪個目錄要被同步,授權用戶名、IP地址,指定登錄密碼文件等,rsync服務器可以根據需要定義多個模塊。rsync客戶端根據不同模塊名來訪問需要同步的目錄。本例定義了一個名為“httpd”的模塊,該模塊中的path參數指定了要被同步的目錄為“/var/log/httpd”, 允許IP地址為192.168.2.2的客戶端能夠同步服務器端“/var/log/httpd”下 的日志文件。授權同步的用戶是rsyncuser,并且登錄密碼文件保持在/etc/rsyncd.secrets文件中。
創 建/etc/rsyncd.secrtes文件
rsyncuser.123456
設 置/etc/rsyncd.secrets文件的權限(必須是600)。
chmod 600 /etc/rsyncd.secrets
作為rsync服務器端,需要運行在deamon模式:
rsync --deamon
作為rsync客戶端,使用yum將rsync安裝完成后,只需要創建/etc/rsync.pass文件,設置內容為:123456,這個密碼對應Web服務器上/etc/rsync.secrtes文件定義的密碼。rsync.pass文件的權限也必須設置為600,于rsync.secrtes文件一致。
rsync客戶端使用如下命令從服務端同步日志,即客戶端根據rsync服務端主配置文件中[httpd]模塊定義的訪問授權參數,將模塊指定目錄下的文件同步到客戶 端 的“/var/log/httpd”目錄下,實現日志文件從web服務器到日志分析服務器的提取:
/usr/bin/rsync -vzrtopg--delete --progress rsyncuser@192.168.2.1::httpd /var/log/httpd--password-file=/etc/rsync.pass
cron是一個Linux內置的定時執行工具,可以在無需人工干預的情況下運行作業,類似于Windows系統下的“任務計劃”。由于Web服務器日志文件較大,在網站訪問用戶量最低的時候進行日志同步,對系統的影響最小。
使用cron設置定時執行日志同步任務。vi編輯/etc/crontab,寫 入 以 下內容:
0 3 * * * root runparts /etc/cron.daily/rsynclog.sh
該命令的意思就是每天3點執行/etc/cron.daily目錄下的文件名為“rsynclog.sh”腳本。
而”rsynclog.sh”的 腳本文件內容如下:
#/!bin/sh
#rsynclog.sh
/usr/bin/rsync -vzrtopg--delete --progress rsyncuser@192.168.2.1::httpd /var/log/httpd--password-file=/etc/rsync.pass
“rsynclog.sh”文件內容其實就是rsync客戶端從rsync服務端同步日志的命令。通過cron工具設置定時執行該腳本文件,實現了日志文件的定時提取。
AWStats(Advanced Web Statistics)是一個免費的功能強大的服務器日志分析工具,它可以基于服務器日志,創建Web統計數據動態分析報告,包括訪問量、訪問者數量、頁面、點擊、高峰時段、操作系統、瀏覽器版本、搜索引擎、關鍵字、機械訪問、無效連接等。數據以可讀性強的Web方式呈現。AWStats可以運行在多種操作系統下,可以通過CGI或者命令行方式運行。通過即時數據文件,AWstats可以快速地處理大數據量的日志文件。AWStats可支持多種Web服務器生成的日志格式,包括 IIS,Apache,自定義等。
AWStats功能強大,可以通過參數配置實現強大的日志分析功能。關于AWStats的安裝和配置,網上有較多的配置實例。本文限于篇幅,主要從原理分析出發,僅列出一些基本配置參數和步驟。
首先將AWStats安裝包解壓后,復制到/usr/local/awstats目 錄 中。/usr/local/awstats/tools目錄中的”awstats_configure.pl”文件是AWStats的安裝配置文件。由于AWStats是基于perl語言書寫的程序,所以需要perl命令來執行。
執 行“perl awstats_configure.pl”命 令 后,將生成AWStats軟件安裝的交互配置向導,根據該向導的指示,設置需要進行日志分析網站的域名和日志分析配置文件存放路徑等信息。在安裝配置向導完成后,在“/etc/awstats” 目錄下會生成名為“awstats.www.mxctest.com.conf”的文件,該文件就是“www.mxctest.com”這個網站的日志分析配置文件。AWStats會根據這個配置文件,對“www.mxctest.com” 網站進行日志分析。因此根據情況,需要對該文件進行一些參數修改。例如,指定AWStats需要分析的Web日志的位置,本例將配置文件中LogFile的參數設置為“/var/log/httpd/access_log”, “access_log”就 是 日志分析服務器通過rsync軟件從Web服務器中提取而來的Web日志。
AWStats需要httpd服務的支持,因此,AWStats安裝配置向導會根據配置情況,對服務器的httpd服務配置文件“httpd.conf”進行修改,在該配置文件中添加AWStats相應的配置。
將AWStats安 裝設置完成后,在“/usr/local/awstats/wwwroot/cgi-bin/awstats.pl”目錄下,執 行“perl awstats.pl-update -config=www.mxctest.com”命令,通過該命令對域名為網站日志數據進行統計分析。

圖3 AWStats日志分析Web頁面示例
在客戶機上,訪問http://192.168.2.2/awstats/awstats.pl?config=www.mxctest.com,可以通過Web頁面查看到該網站日志的統計分析結果(如圖3)。網站運維人員通過Web頁面可以直觀地了解網站的運行狀況。