日誌分析工具Awstats實戰之Apache篇-多站點日誌分析

前面兩篇都在講述如何去部署nginx下的awstats日誌分析工具,如今終於輪到apache。做爲老牌的網頁服務器,awstats對apache的支持很是完美,因此整個配置過程也是十分簡單。所以,在這裏我就拓展了一下部署,實現了對多站點的日誌分析功能。css

注意:自本篇博文發表之日,apache-2.4.x仍是沒法支持部署awstats日誌分析結果訪問動態化,不過能夠用前篇日誌分析工具Awstats實戰之Nginx篇-分析結果靜態化中講到的方法來實施部署awstats。所以,本篇博文將用apache2.2.25版原本爲你們講解如何部署awstats日誌分析結果動態化及多站點。html

環境:nginx

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,服務開啓狀態
日誌記錄格式爲apache默認的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

1、日誌自動切割web

因爲apache自帶的日誌輪詢工具rotatelogs,據專家說在進行日誌切割時容易丟日誌,因此這裏咱們就用cronolog來作日誌切割。數據庫

一、下載並安裝cronologapache

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

二、配置apache使用cronologvim

因爲實驗用的apache開啓了虛擬主機功能,因此如下配置都在虛擬主機中進行,這樣也是爲了方便對多站點的分析操做。安全

vim /usr/local/apache/httpd/extra/httpd-vhosts.conf bash

將配置文件中的CustomLog和ErrorLog替換爲下面的(因爲咱們要對多站點,因此這裏要替換兩個虛擬主機的,而且將日誌存放名字作有效的區分纔好)服務器

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"

注意:這裏必定要注意對兩個網站的日誌名稱配置。


2、Awstats的安裝與配置

一、部署awstats

首先咱們要下載awstats軟件包,並將其放在常規目錄(/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下載下來的包中權限是非root的,因此這裏要修改權限,不然稍後*.pl將沒法運行

chown -R root.root /usr/local/awstats
chmod +x /usr/local/awstats/tools/*.pl
chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl

接下來咱們要執行awstats/tools下的awstats_configure.pl配置嚮導,用來生成awstats的配置文件,awstats配置文件的命名規則是awstats.website.conf

cd /usr/local/awstats/tools/
./awstats_configure.pl

此時會出現以下提示

----- 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         #詢問是否建立一個新的配置文件,這裏填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      #這裏讓填寫你的網站域名,虛擬主機名或者隨便一個配置名
-----> 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):
>              #這裏要填寫你配置文件存放路徑,咱們使用它默認的路徑/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定時任務,須要稍後本身添加,咱們按回車繼續便可
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... #提示配置文件建立完成和如何更新配置及創建靜態報告頁,這裏咱們回車便可結束這個配置嚮導

結束這個嚮導之後,咱們對www.sunsky.com站點的awstats配置文件已經配置好了,下面配置www.skysun.com的配置文件,步驟和上面同樣,只是在域名的地方作更改便可。

二、修改awstats配置文件

完成配置文件的建立以後,咱們還須要對/etc/awstats/awstats.www.sunsky.com.conf裏的一些參數進行修改。

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的數據庫配置文件(即awstats的數據庫(純文本))。

以上的兩個替換操做進行完以後必定要用命令查看替換是否成功,以便及早發現紕漏。

grep "LogFile=" /etc/awstats/awstats.www.sunsky.com.conf
grep "DirData=" /etc/awstats/awstats.www.sunsky.com.conf

查詢替換結果正確以後,便可進行下面的步驟。

一樣,重複以上的2個sed步驟,來對www.skysun.com的awstats配置文件作操做,須要注意的是命令裏面的日誌路徑和對應的awstats的數據庫配置文件不要搞錯便可。

因爲,此處沒有/usr/local/awstats/data目錄,因此咱們要建立出來

mkdir /usr/local/awstats/data

此時咱們要對/usr/local/awstats目錄進行屬主變動,變動爲apache的daemon用戶,否則一會訪問就會報錯。這裏也是和nginx的一個明顯區別所在。

chown -R daemon /usr/local/awstats

三、生成awstats統計信息數據庫

如今咱們須要用awstats來生成對日誌的統計分析信息出來了。因爲咱們用的是支持perl的FCGI動態化訪問頁面,因此此處咱們只須要直接更新數據庫便可。FCGI程序會自動將數據庫以動態頁面的形式展示出來,無須再手動生成靜態頁面了。本處咱們用腳原本完成。

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

運行該腳本生成分析結果

/bin/sh /server/scripts/awstats_up.sh

提示:因爲咱們這裏用的apache使用cronolog日誌輪詢工具使得文件出來都是帶時間格式的。所以你可能會想,爲何不改爲對當天的日誌進行操做。首先在這裏咱們能夠實時的進行日誌分析數據庫更新來查看實時的日誌,不過這裏不建議你們這樣去作。


3、配置日誌分析頁面的來訪ip的地址位置顯示

這裏咱們用國內最準確的ip數據庫——QQ純真庫(點擊下載),你們下載以後經過CRT用lrzsz工具傳上去,具體步驟這裏不寫了。

附件裏面有三個文件qqhostinfo.pm,qqwry.pl和QQWry.Dat,咱們將這三個文件通通都放到/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(根據你前面配置的站點信息生成的文件),將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

切記,在這些替換完以後必定要查看替換是否成功,以便及早發生紕漏。

grep "LoadPlugin=\"qqhostinfo\"" /etc/awstats/awstats.www.sunsky.com.conf

若是檢查無誤,那麼咱們的ip地址位置顯示就配置好了,在後面的日誌分析中,咱們就能夠清楚的看到來訪ip的地理位置信息了。


4、配置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已經在apache的主配置文件配置好了須要的參數,是否是很方便啊。此時咱們還須要在配置虛擬目錄配置文件裏面配置幾個參數來實現站點的統計信息安全。

vim /usr/local/apache/httpd/extra/httpd-vhosts.conf

添加如下兩行參數進去

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,回車以後輸入兩次密碼即完成建立

若是,你順利的執行了上面的全部操做,那麼OK!如今你已經能夠經過訪問

http://www.sunsky.com/awstats/awstats.pl?config=www.sunsky.com
http://www.skysun.com/awstats/awstats.pl?config=www.skysun.com

來查看你多個站點的日誌分析信息了。

005302886.png

005304341.png




5、配置awstats自動運行

爲了讓整個日誌的統計過程能夠實現自動化,咱們將awstats.sh腳本加入crontab定時任務中去

0 1 * * * /bin/sh /server/scripts/awstats_up.sh >/dev/null 2>&1

也許你會問爲何不把cronolog也加入開機啓動呢,由於cronolog已經默認被apache用來調用記錄日誌,因此無需加入到crontab定時任務中。


至此,咱們已經經過在nginx和apache上部署awstats日誌訪問分析工具來實現了對站點來訪信息的分析。整個系列的博文很少,只有三篇,不過還算是詳盡,把改涉及到的都涉及到了。中間有不少技術是連同的,好比在apche上進行的多站點,在nginx上的靜態化訪問等,儘管我沒有再出,不過咱們均可以將他們來回應用實現部署需求。我也相信,只有融會貫通了,咱們你們才能更好的部署好這一利器!

相關文章
相關標籤/搜索