日志分析工具Awstats實戰(zhàn)之Apache篇:多站點日志分析
前面兩篇(日志分析工具Awstats實戰(zhàn)之Nginx篇:分析結(jié)果靜態(tài)化、日志分析工具Awstats實戰(zhàn)之Nginx篇:分析結(jié)果動態(tài)化)都在講述如何去部署nginx下的awstats日志分析工具,現(xiàn)在終于輪到apache。作為老牌的網(wǎng)頁服務(wù)器,awstats對apache的支持非常完美,所以整個配置過程也是十分簡單。因此,在這里我就拓展了一下部署,實現(xiàn)了對多站點的日志分析功能。
注意:自本篇博文發(fā)表之日,apache-2.4.x還是無法支持部署awstats日志分析結(jié)果訪問動態(tài)化,不過可以用前篇日志分析工具Awstats實戰(zhàn)之Nginx篇-分析結(jié)果靜態(tài)化中講到的方法來實施部署awstats。因此,本篇博文將用apache2.2.25版本來為大家講解如何部署awstats日志分析結(jié)果動態(tài)化及多站點。
環(huán)境:
- CentOS 6.4 x86_64
- ip:192.168.1.113
- 站點1:域名www.sunsky.com(server和client都通過hosts文件解析)
- 站點2:域名www.skysun.com(server和client都通過hosts文件解析)
- apache-2.2.25 編譯安裝,路徑/usr/local/apache,服務(wù)開啟狀態(tài)
- 日志記錄格式為apache默認(rèn)的combined格式,切勿更改,否則會造成awstats無法分析日志。
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- apr-1.4.8 apr-util-1.5.2
- awstats-7.2.tar.gz
一、日志自動切割
由于apache自帶的日志輪詢工具rotatelogs,據(jù)專家說在進(jìn)行日志切割時容易丟日志,所以這里我們就用cronolog來做日志切割。
1、下載并安裝cronolog
- cd /server/tools/
- wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
- tar zxf cronolog-1.6.2.tar.gz
- cd cronolog-1.6.2
- ./configure
- make&&make install
2、配置apache使用cronolog
由于實驗用的apache開啟了虛擬主機(jī)功能,所以以下配置都在虛擬主機(jī)中進(jìn)行,這樣也是為了方便對多站點的分析操作。
- vim /usr/local/apache/httpd/extra/httpd-vhosts.conf
將配置文件中的CustomLog和ErrorLog替換為下面的(由于我們要對多站點,所以這里要替換兩個虛擬主機(jī)的,并且將日志存放名字做有效的區(qū)分才好)
- www.sunsky.com
- CustomLog "|/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log" combined
- ErrorLog "|/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log"
- www.skysun.com
- CustomLog "|/usr/local/sbin/cronolog /app/logs/skysun_access_%Y%m%d.log" combined
- ErrorLog "|/usr/local/sbin/cronolog /app/logs/skysun_error_%Y%m%d.log"
注意:這里一定要注意對兩個網(wǎng)站的日志名稱配置。
二、Awstats的安裝與配置
1、部署awstats
首先我們要下載awstats軟件包,并將其放在常規(guī)目錄(/usr/local)下
- wget http://awstats.sourceforge.net/files/awstats-7.2.tar.gz
- tar zxf awstats-7.2.tar.gz
- mv awstats-7.2 /usr/local/awstats
由于wget下載下來的包中權(quán)限是非root的,所以這里要修改權(quán)限,否則稍后*.pl將無法運行
- chown -R root.root /usr/local/awstats
- chmod +x /usr/local/awstats/tools/*.pl
- chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl
接下來我們要執(zhí)行awstats/tools下的awstats_configure.pl配置向?qū)?,用來生成awstats的配置文件,awstats配置文件的命名規(guī)則是awstats.website.conf
- cd /usr/local/awstats/tools/
- ./awstats_configure.pl
此時會出現(xiàn)如下提示:
- ----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur -----
- This tool will help you to configure AWStats to analyze statistics for
- one web server. You can try to use it to let it do all that is possible
- in AWStats setup, however following the step by step manual setup
- documentation (docs/index.html) is often a better idea. Above all if:
- - You are not an administrator user,
- - You want to analyze downloaded log files without web server,
- - You want to analyze mail or ftp log files instead of web log files,
- - You need to analyze load balanced servers log files,
- - You want to 'understand' all possible ways to use AWStats...
- Read the AWStats documentation (docs/index.html).
- -----> Running OS detected: Linux, BSD or Unix
- -----> Check for web server install
- Enter full config file path of your Web server.
- Example: /etc/httpd/httpd.conf
- Example: /usr/local/apache2/conf/httpd.conf
- Example: c:\Program files\apache group\apache\conf\httpd.conf
- Config file path ('none' to skip web server setup):
- > /usr/local/apache/conf/httpd.conf #有可能是新版本的原因,這里會自動找到apache的配置文件,無需我們再自己填了,不過會問你一次,你回答y即可
- Your web server config file(s) could not be found.
- You will need to setup your web server manually to declare AWStats
- script as a CGI, if you want to build reports dynamically.
- See AWStats setup documentation (file docs/index.html)
- -----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
- File awstats.model.conf updated.
- -----> Need to create a new config file ?
- Do you want me to build a new AWStats config/profile
- file (required if first install) [y/N] ? y #詢問是否創(chuàng)建一個新的配置文件,這里填y
- -----> Define config file name to create
- What is the name of your web site or profile analysis ?
- Example: www.mysite.com
- Example: demo
- Your web site, virtual server or profile name:
- > www.sunsky.com #這里讓填寫你的網(wǎng)站域名,虛擬主機(jī)名或者隨便一個配置名
- -----> Define config file path
- In which directory do you plan to store your config file(s) ?
- Default: /etc/awstats
- Directory path to store config file(s) (Enter for default):
- > #這里要填寫你配置文件存放路徑,我們使用它默認(rèn)的路徑/etc/awstats,所以直接回車即可
- -----> Create config file '/etc/awstats/awstats.www.sunsky.com.conf'
- Config file /etc/awstats/awstats.www.sunsky.com.conf created.
- -----> Add update process inside a scheduler
- Sorry, configure.pl does not support automatic add to cron yet.
- You can do it manually by adding the following command to your cron:
- /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com
- Or if you have several config files and prefer having only one command:
- /usr/local/awstats/tools/awstats_updateall.pl now
- Press ENTER to continue... #提示不能自動加入crontab定時任務(wù),需要稍后自己添加,我們按回車?yán)^續(xù)即可
- A SIMPLE config file has been created: /etc/awstats/awstats.www.sunsky.com.conf
- You should have a look inside to check and change manually main parameters.
- You can then manually update your statistics for 'www.sunsky.com' with command:
- > perl awstats.pl -update -config=www.sunsky.com
- You can also build static report pages for 'www.sunsky.com' with command:
- > perl awstats.pl -output=pagetype -config=www.sunsky.com
- Press ENTER to finish... #提示配置文件創(chuàng)建完成和如何更新配置及建立靜態(tài)報告頁,這里我們回車即可結(jié)束這個配置向?qū)?nbsp;
結(jié)束這個向?qū)б院螅覀儗ww.sunsky.com站點的awstats配置文件已經(jīng)配置好了,下面配置www.skysun.com的配置文件,步驟和上面一樣,只是在域名的地方做更改即可。
2、修改awstats配置文件
完成配置文件的創(chuàng)建之后,我們還需要對/etc/awstats/awstats.www.sunsky.com.conf里的一些參數(shù)進(jìn)行修改。
- sed -i 's#LogFile="/var/log/httpd/mylog.log"#LogFile="/app/logs/sunsky_access_%YYYY-24%MM-24%DD-24.log"#g' /etc/awstats/awstats.www.sunsky.com.conf
這里更改的目的是指定awstats需要分析的nginx的日志文件路徑。這里的路徑大家要按自己的日志路徑來填。
- sed -i 's#DirData="/var/lib/awstats"#DirData="/usr/local/awstats/data"#g' /etc/awstats/awstats.www.sunsky.com.conf
這里更改的目的是指定awstats的數(shù)據(jù)庫配置文件(即awstats的數(shù)據(jù)庫(純文本))。
以上的兩個替換操作進(jìn)行完之后一定要用命令查看替換是否成功,以便及早發(fā)現(xiàn)紕漏。
- grep "LogFile=" /etc/awstats/awstats.www.sunsky.com.conf
- grep "DirData=" /etc/awstats/awstats.www.sunsky.com.conf
查詢替換結(jié)果正確之后,即可進(jìn)行下面的步驟。
同樣,重復(fù)以上的2個sed步驟,來對www.skysun.com的awstats配置文件做操作,需要注意的是命令里面的日志路徑和對應(yīng)的awstats的數(shù)據(jù)庫配置文件不要搞錯即可。
由于,此處沒有/usr/local/awstats/data目錄,所以我們要創(chuàng)建出來
- mkdir /usr/local/awstats/data
此時我們要對/usr/local/awstats目錄進(jìn)行屬主變更,變更為apache的daemon用戶,不然一會訪問就會報錯。這里也是和nginx的一個明顯區(qū)別所在。
- chown -R daemon /usr/local/awstats
3、生成awstats統(tǒng)計信息數(shù)據(jù)庫
現(xiàn)在我們需要用awstats來生成對日志的統(tǒng)計分析信息出來了。由于我們用的是支持perl的FCGI動態(tài)化訪問頁面,所以此處我們只需要直接更新數(shù)據(jù)庫即可。FCGI程序會自動將數(shù)據(jù)庫以動態(tài)頁面的形式展現(xiàn)出來,無須再手動生成靜態(tài)頁面了。本處我們用腳本來完成。
- vim /server/scripts/awstats_up.sh
- #!/bin/sh
- /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sunsky.com >/dev/null 2>&1
- /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.skysun.com >/dev/null 2>&1
該腳本里面用下面的命令也是可以的。
- /usr/local/awstats/tools/awstats_updateall.pl now
運行該腳本生成分析結(jié)果:
- /bin/sh /server/scripts/awstats_up.sh
提示:由于我們這里用的apache使用cronolog日志輪詢工具使得文件出來都是帶時間格式的。因此你可能會想,為什么不改成對當(dāng)天的日志進(jìn)行操作。首先在這里我們可以實時的進(jìn)行日志分析數(shù)據(jù)庫更新來查看實時的日志,不過這里不建議大家這樣去做。
#p#
三、配置日志分析頁面的來訪ip的地址位置顯示
這里我們用國內(nèi)最準(zhǔn)確的ip數(shù)據(jù)庫——QQ純真庫(點擊下載),大家下載之后通過CRT用lrzsz工具傳上去,具體步驟這里不寫了。
附件里面有三個文件qqhostinfo.pm,qqwry.pl和QQWry.Dat,我們將這三個文件統(tǒng)統(tǒng)都放到/usr/local/awstats/wwwroot/cgi-bin/plugins中。
接下來,我們修改qqwry.pl文件,將./QQWry.Dat修改為${DIR}/plugins/QQWry
- vim /usr/local/awstats/wwwroot/cgi-bin/plugins/qqwry.pl
- #my $ipfile="./QQWry.Dat";
修改為:
- my $ipfile="${DIR}/plugins/QQWry.Dat";
然后編輯awstats的配置文件/etc/awstats/awstats.www.sunsky.com.conf(根據(jù)你前面配置的站點信息生成的文件),將LoadPlugin="hostinfo"替換為LoadPlugin="qqhostinfo"即可。
- sed -i 's#\#LoadPlugin="hostinfo"#LoadPlugin="qqhostinfo"#g' /etc/awstats/awstats.www.sunsky.com.conf
- sed -i 's#\#LoadPlugin="hostinfo"#LoadPlugin="qqhostinfo"#g' /etc/awstats/awstats.www.skysun.com.conf
切記,在這些替換完之后一定要查看替換是否成功,以便及早發(fā)生紕漏。
- grep "LoadPlugin=\"qqhostinfo\"" /etc/awstats/awstats.www.sunsky.com.conf
如果檢查無誤,那么我們的ip地址位置顯示就配置好了,在后面的日志分析中,我們就可以清楚的看到來訪ip的地理位置信息了。
四、配置apache
首先我們打開apache的主配置文件/usr/local/apache/conf/httpd.conf可以看到里面多出了以下幾行:
- # Directives to allow use of AWStats as a CGI
- Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
- Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
- Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
- ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
- # This is to permit URL access to scripts/files in AWStats directory.
- <Directory "/usr/local/awstats/wwwroot">
- Options None
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
我們可以看到awstats已經(jīng)在apache的主配置文件配置好了需要的參數(shù),是不是很方便啊。此時我們還需要在配置虛擬目錄配置文件里面配置幾個參數(shù)來實現(xiàn)站點的統(tǒng)計信息安全。
- vim /usr/local/apache/httpd/extra/httpd-vhosts.conf
添加以下兩行參數(shù)進(jìn)去:
- auth_basic "Restricted";
- auth_basic_user_file /usr/local/nginx/htpasswd.pass;
添加之后的文件信息
- <VirtualHost *:80>
- ServerAdmin webmaster@dummy-host.example.com
- DocumentRoot "/www/sunsky"
- ServerName dummy-host.example.com
- ServerAlias www.sunsky.com
- CustomLog "|/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log" combined
- ErrorLog "|/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log"
- auth_basic "Restricted";
- auth_basic_user_file /usr/local/apache/htpasswd.pass;
- </VirtualHost>
- <VirtualHost *:80>
- ServerAdmin webmaster@dummy-host2.example.com
- DocumentRoot "/www/skysun"
- ServerName www.skysun.com
- CustomLog "|/usr/local/sbin/cronolog /app/logs/skysun_access_%Y%m%d.log" combined
- ErrorLog "|/usr/local/sbin/cronolog /app/logs/skysun_error_%Y%m%d.log"
- auth_basic "Restricted";
- auth_basic_user_file /usr/local/apache/htpasswd.pass;
- </VirtualHost>
接下來我們用下面的命令來生成加密文件和加密的賬號及密碼:
- htpasswd -c -m /usr/local/nginx/htpasswd.pass admin #用戶名為admin,回車之后輸入兩次密碼即完成創(chuàng)建
如果,你順利的執(zhí)行了上面的所有操作,那么OK!現(xiàn)在你已經(jīng)可以通過訪問:
- http://www.sunsky.com/awstats/awstats.pl?config=www.sunsky.com
- http://www.skysun.com/awstats/awstats.pl?config=www.skysun.com
來查看你多個站點的日志分析信息了。
五、配置awstats自動運行
為了讓整個日志的統(tǒng)計過程可以實現(xiàn)自動化,我們將awstats.sh腳本加入crontab定時任務(wù)中去
- 0 1 * * * /bin/sh /server/scripts/awstats_up.sh >/dev/null 2>&1
也許你會問為什么不把cronolog也加入開機(jī)啟動呢,因為cronolog已經(jīng)默認(rèn)被apache用來調(diào)用記錄日志,所以無需加入到crontab定時任務(wù)中。
至此,我們已經(jīng)通過在nginx和apache上部署awstats日志訪問分析工具來實現(xiàn)了對站點來訪信息的分析。整個系列的博文不多,只有三篇,不過還算是詳盡,把改涉及到的都涉及到了。中間有很多技術(shù)是連同的,比如在apche上進(jìn)行的多站點,在nginx上的靜態(tài)化訪問等,盡管我沒有再出,不過我們都可以將他們來回應(yīng)用實現(xiàn)部署需求。我也相信,只有融會貫通了,我們大家才能更好的部署好這一利器!
本文作者:sunsky,博客地址:http://sunsky.blog.51cto.com/






