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

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1318052

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

注意:自本篇博文發表之日,apache-2.4.x還是無法支持部署awstats日志分析結果訪問動態化,不過可以用前篇日志分析工具Awstats實戰之Nginx篇-分析結果靜態化中講到的方法來實施部署awstats。因此,本篇博文將用apache2.2.25版本來為大家講解如何部署awstats日志分析結果動態化及多站點。

環境:

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

一、日志自動切割

由于apache自帶的日志輪詢工具rotatelogs,據專家說在進行日志切割時容易丟日志,所以這里我們就用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開啟了虛擬主機功能,所以以下配置都在虛擬主機中進行,這樣也是為了方便對多站點的分析操作。

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

將配置文件中的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"

注意:這里一定要注意對兩個網站的日志名稱配置。

二、Awstats的安裝與配置

1、部署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的配置文件,步驟和上面一樣,只是在域名的地方做更改即可。

2、修改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

3、生成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日志輪詢工具使得文件出來都是帶時間格式的。因此你可能會想,為什么不改成對當天的日志進行操作。首先在這里我們可以實時的進行日志分析數據庫更新來查看實時的日志,不過這里不建議大家這樣去做。


三、配置日志分析頁面的來訪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的地理位置信息了。


四、配置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

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

1.png


2.png


五、配置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上的靜態化訪問等,盡管我沒有再出,不過我們都可以將他們來回應用實現部署需求。我也相信,只有融會貫通了,我們大家才能更好的部署好這一利器!

轉自:http://nolinux.blog.51cto.com/4824967/1318052

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2018

(0)
s19930811s19930811
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 第十周練習-腳本部分

    1、寫一個腳本 (1) 能接受四個參數:start, stop, restart, status start: 輸出“starting 腳本名 finished.” … (2) 其它任意參數,均報錯退出; #!/bin/bash # case $1 in start)     echo&…

    Linux干貨 2016-12-31
  • N23_第六周

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;:%s/^[[:blank:]]\+.*/\0#/g 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;:%s/^[[:space:]]\+/…

    Linux干貨 2017-02-28
  • linux網絡屬性命令操作介紹(第十一天)

            linux網絡屬性常用命令有ifconfig\route\ip命令,centos7 的還是nmcli\nmtui。     網絡屬性的三大文件:修改DNS的文件/etc/resolv.conf  、修改網卡IP地址/etc/sysconfig/…

    Linux干貨 2016-06-01
  • keepalived+lvs-dr實現高可用負載均衡

    keepalived+lvs-dr實現高可用負載均衡 實驗拓撲 實驗要求 RS1與RS2地址為172.18.27.201/202 VS1和VS2地址為172.18.27.103/200,VIP為172.18.27.254 VS1和VS2實現lvs-dr負載均衡及高可用性,且vs為sorry sever。 keepalived是單主模式。 實驗步驟 各個主機安…

    2017-05-14
  • GRUB

    什么是GRUB GRUB(boot loader):grub:GRand Unified Bootloader     有兩個版本:grub 0.x:grub legacy經典版;grub 2.x grub legacy:主要運行分三個階段 stage1(第一階段):安裝在mbr中 stage1.5(第1.5階段):存…

    Linux干貨 2016-09-21
欧美性久久久久