天天看點

awstats分析apche日志

好吧。之前寫過關于apache日志的文章,本意是了解一下apache日志的配置和基礎解讀為apache日志分析打好基礎,應用到生産之後能夠對網站的維護和日常生産做出指導作用。

寫在前面的話:

因為我的實際生産環境AS4、AS5、AS6都有,是以都做了實驗,并且現在都已經應用在生産中了。但實際這個東西三版系統中除了最後jawstats的應用有點問題以外,其它都一樣,是以這裡用AS4做基礎的實驗環境。

實驗環境:AS4UP4 (AS5、AS6通用)

采用的軟體包:

awstats: 采用的是現在為止最新的穩定版(2016-03-03)

本體:http://prdownloads.sourceforge.net/awstats/awstats-7.4.tar.gz

jawstats: 這裡要說明一下,這個界面比awstats友好多了,但最新版在09年初就已經停止更新了,是以這裡到後面會有一點小問題。

本體:http://static.jawstats.com/src/jawstats-0.7beta.tar.gz

語言包:http://www.jawstats.com/src/languagepack.zip

一、系統設定

由于是實驗性質,是以采用了絕對安全環境下進行的一些設定(為了避免軟體引起的幹涉),在實際環境中請慎重考慮一下:

Selinux關閉,這個不關可能在apache另做的别名和系統預設的apache檔案夾以外的檔案夾無法被順得加載。

#setenforce 0

這個是臨時關閉,重新開機之後失效

或者

#vim /etc/selinux/config

把SELINUX=Enforcing 改成 SELINUX=disabled

這個重新開機之後就永久關閉了。

 perl的安裝,這個不多說了,系統CD光牒裡都有。awstats需要這個做支援,7.4版本要求在版本在5以上,這個應該不是難事,AS4自帶的就是5。

二、設定

首先說明一下,awstats是基本LAMP的軟體,而本身我們也是為了分析apache日志,是以LAMP環境是必須的。實驗中我是直接完全安裝,現在RPM包全裝完了。源碼包的安裝方式參看:

使用的三個包

awstats這個是從apache日志中提取資訊并成生分析資料的軟體,這是整個分析系統的核心。

Jawstats直接利用awstats生成的資料,轉換到一個更加友好界面展現出來,其實就是awstats的一個插件。

Languagepack是jawstats的語言包

SO,一步步來。

安裝awstats

awstats對日志的分析支援的模式是 combined,是以之前做的日志要改變一下。

# vim /etc/httpd/conf/httpd.conf    //編輯apache配置檔案

CustomLog 改成

CustomLog "| /usr/sbin/rotatelogs /etc/httpd/logs/access_log%Y%m%d 86400 480" combined

# service httpd restart    //重新開機apache

打開浏覽器通路一下http://IP

#ll /etc/httpd/logs/

awstats分析apche日志

日志檔案就已經生成了。

現在可以來處理awstats了

# tar zxvf awstats-7.4.tar.gz

# mv awstats-7.4 /usr/local/awstats

# cd /usr/local/awstats/tools/

# ./awstats_configure.pl

awstats分析apche日志

這裡要求的是apache配置檔案的完整路徑。

awstats分析apche日志

apache配置檔案找到之後,會寫入和awstats相關的别名設定。

awstats分析apche日志

模闆配置檔案也會生成,儲存在/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf

awstats分析apche日志

這裡是利用模闆,直接配置需要分析的模闆了。

awstats分析apche日志

這裡是網站名稱,可以寫全域名,我這裡直接寫localhost了。

awstats分析apche日志

這裡說明是配置檔案存放路徑,預設是/etc/awstats,預設就直接回車了。

awstats分析apche日志

之後apache就會直接重新開機,之後會提示日志分析指令和web通路路徑。基本配置到此完成,現在準備生成分析資料。

這裡說明一下,如果找不到libmysql.so.14.0或者以上版本的同名檔案重新開機apache是會失敗的,但無傷大雅,可以自己手動重新開機。AS4系統中内置包名是mysql-4.1.20-1.RHEL4.1.i386.rpm,其它幾個系統類同。

# mkdir /var/lib/awstats   //這個是日志分析後資料儲存的路徑,必須手動建立

# vim /etc/awstats/awstats.localhost.conf  

//修改localhost的配置檔案,因為配置檔案裡的apache源日志檔案名是通用的,要改成之前設定的那個

LogFile改成如下:

LogFile="/etc/httpd/logs/access_log%YYYY%MM%DD"

# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost  

//生成資料,指令照打,如下是成功的。

awstats分析apche日志

# crontab -e       //apache的日志是不斷産生的,是以要加入計劃任務。

*/1 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost

# service crond restart

# chown apache.apache -R /usr/local/awstats/  //把權限改成apache使用者,否則無法正常通路

打開浏覽器

http://IP/awstats/awstats.pl?config=localhost

awstats分析apche日志

完成。

安裝jawstats

# mkdir jawstats

# tar zxvf jawstats-0.7beta.tar.gz -C jawstats   //jawstats解開是檔案狀态,是以要指定檔案夾

# mkdir language

# unzip languagepack.zip -d language      

# cp   language/* ./jawstats/languages/

# mv jawstats /var/www/html/

# cd /var/www/html/jawstats/

# cp config.dist.php config.php

# vim config.php   //編譯配置檔案

全局變量

$sDefaultLanguage      = "zh-cn";  //這裡隻需要把預設的語言改掉就行了

$aConfig["localhost"] = array(

  //這裡是指定讀取網站的名稱,這裡寫錯了會讀錯日志,和awstats設定一樣,即剛剛在awstats中輸入的網站名稱。

  "statspath"   => "/var/lib/awstats/", 

  //awstats生成的資料檔案目錄

  "updatepath"  => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",

  //也就是awstats.pl檔案的目錄

  "siteurl"     => "localhost",

  //這個是jawstats進去之後标題的連結

  "sitename"    => "localhost",

  //這個是jawstats進去之後給出的網站标題,主要是标明哪個網站

  "theme"       => "default",

  "fadespeed"   => 250,

  "password"    => "mypassword",

  //更新站點資料的密碼,jawstats有個功能,其實感覺用F5重新整理就行了,如果你等不急awstats每分鐘重新整理一次的頻率的話,可能試下這個。

  "includes"    => "",

  "language"    => "zh-cn"

  //預設語言

);

關于jawstats第一步就完成了。這裡有兩個地方要說明一下。

1.jawstat,在09年初就斷更了。PHP5.3釋出之後很多PHP規則都改變了,它裡面很多内置函數因為這個原因都無法使用,是以它是不支援PHP5.3以上的版本的。SO,AS6就失敗了。

2.由于awstats的版本一直在更新,是以jawstats是不能完全支援最新版本的awstats的,例如檢視浏覽器和作業系統就無法完成。要支援的話,可以使用awstats6.95的版本。不過其實這些功能awstats本身都有,看個人取舍。

以上設定完成之後,awstats和jawstats的目錄都是不設防的,所有人都可以通路。一般情況下為了安全起見是要做一下通路控制的,網上大多數人用的都是.htpasswd,不過如果有固定IP位址或者VPN的話可以直接用ACL進行控制。

下面分别說明一下:

.htpasswd方法

例awstats在apache配置檔案中原始的檔案夾權限

<Directory "/usr/local/awstats/wwwroot">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

修改為:

<Directory "/usr/local/apache/htdocs/www/awstats">

AuthType Basic

AuthName "Auth Youself"    //這裡是提示資訊

AuthUserFile /usr/local/awstats/wwwroot/.htpasswd

Require user admin

</Directory>

然後

/usr/bin/htpasswd -c /usr/local/awstats/wwwroot/.htpasswd  使用者名  密碼

jawstats亦以此類推,複制一下即可。

ACL方法:

例awstats在apache配置檔案中原始的檔案夾權限

如下

<Directory "/usr/local/awstats/wwwroot">

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

修改為:

<Directory "/usr/local/awstats/wwwroot">

    Options None

Order deny,allow   

//這裡deny,allow的位置要注意,寫在後面的覆寫前面的,寫反了allow将不會生效

    Deny  from all

Allow from 允許的IP

</Directory>

Jawstats可以以此類推,如下:

Alias /jawstats "/var/www/html/jawstats"      //我這裡建立了一個别名

<Directory "/var/www/htmlt/jawstats">

    Options None

    Order deny,allow

    Deny from all

Allow from 允許的IP

</Directory>

awstats分析apche日志

無論哪種方法,不要忘記重新開機apache服務。

awstats的優化

剛剛建好的awstats最大的問題在于無法通過IP識别來源的國家,這個需要其它插件的支援。

要下三個包

http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz  主程式

http://www.maxmind.com/download/geoip/api/pureperl/Geo-IP-PurePerl-1.19.tar.gz

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 城市資訊

先安裝GeoIP

# tar zxvf GeoIP.tar.gz

# cd GeoIP-1.4.8/

# ./configure --prefix=/usr/local/geoip

# make

# make install

安裝Geo-IP-PurePerl

# tar zxvf Geo-IP-PurePerl-1.19.tar.gz

# cd Geo-IP-PurePerl-1.19

# perl Makefile.PL   

# make

# make test

# make install

更新資料庫

# gunzip GeoLiteCity.dat.gz

# mv GeoLiteCity.dat /usr/local/awstats/wwwroot/cgi-bin/ 

//資料庫GeoLiteCity.dat移到目标目錄

# vim /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf

做如下修改:

LoadPlugin="decodeutfkeys"

LoadPlugin="graphgooglechartapi"

LoadPlugin="geoip GEOIP_STANDARD /usr/local/geoip/share/GeoIP/GeoIP.dat" 

//這裡是安裝目錄,其實是GeoIP資料庫GeoIP.dat的路徑

LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/awstats/wwwroot/cgi-bin/GeoLiteCity.dat"

//這行别搞錯了,原來是以GeoIPCity.dat結尾的。如果隻注釋那麼是得不到想要的結果的。

# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=localhost

更新過後,應該就可以得出結果了

本來GeoIP是有自動更新功能的,但帳号需要購買,是以隻能定時下載下傳更新包了。

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

///另,開啟了IP來源識别,打開監控網頁的整體會變慢,而且統計圖檔很可能會顯示不出來——當然這個和機器的配置還有設定有關系。