昨天把nginx的日誌進行了切割,關於如何切割nginx日誌,能夠查看《爛泥:切割nginx日誌》這篇文章。 php
今天打算分析下nginx日誌,要分析nginx日誌,咱們能夠經過shell腳本和第三方軟件awstats進行分析,在此咱們選擇的是經過第三方軟件awstats進行分析。 css
要使用awstats分析nginx日誌,咱們要安裝awstats,而在安裝awstats以前,咱們須要先來介紹下awstats是什麼? html
1、awstats是什麼 python
awstats是一個免費很是簡潔並且強大有個性的基於Perl語言的WEB日誌分析工具。 nginx
它能夠統計網站的以下信息: web
1):訪問量、訪問次數、頁面瀏覽量、點擊數、數據流量等。 shell
2):精確到每個月、每日、每小時的數據。 數據庫
3):訪問者國家以及IP。 apache
4):Robots/Spiders的統計。 ubuntu
5):訪客持續時間。
6):對不一樣files type的統計信息。
7):Pages-URL的統計。
8):訪客操做系統瀏覽器等信息。
9):其它信息(搜索關鍵字等等)
2、準備工做
在介紹完awstats是什麼以後,咱們再來介紹下安裝awstats以前的準備工做。
2.1 安裝GeoIP
GeoIP主要用於定位訪問者所屬的國家以及城市的數據庫,可使用以下命令進行安裝:
yum -y install GeoIP GeoIP-devel perl-Geo-IP
查看GeoIP安裝的相關組件,以下:
rpm -ql GeoIP-GeoLite-data
rpm -ql GeoIP-GeoLite-data-extra
若是是ubuntu系統,咱們可使用以下命令進行安裝:
sudo apt-get -y install geoip-bin geoip-database-contrib php5-geoip python-geoip python-geoip-dbg libgeoip1 libgeoip-dev
在上述截圖的安裝的文件中,咱們只須要關注GeoIP.dat和GeoLiteCity.dat這兩個文件便可,其中GeoIP.dat用於定位訪問者所屬的國家,而GeoLiteCity.dat用於定位訪問者所屬的城市。
2.2 安裝httpd-tools
通常站長都不肯隨便讓其餘人知道本身網站的真實流量,因此要把awstats統計結果頁面進行密碼保護。
由於nginx使用的是跟apache同樣的密碼加密格式,因此這裏須要用到apache自帶的工具htpasswd,而htpasswd包含在httpd-tools組件中的,因此咱們要安裝httpd-tools。
安裝httpd-tools,使用以下命令:
yum -y install httpd-tools
安裝httpd-tools時,會自動安裝httpd,因此咱們須要把httpd禁用。以下:
/etc/init.d/httpd stop
chkconfig httpd off
生成密碼文件,使用以下命令:
htpasswd -c -m /usr/local/htpasswd.pass ilanni
3、安裝awstats
準備工做作完後,咱們如今來安裝awstats。
3.1 下載awstats
awstst官網是http://www.awstats.org/,下載最新版本de awstats。以下:
wget http://www.awstats.org/files/awstats-7.5.tar.gz
3.2 安裝awstats
awstats下載完畢後,咱們如今來安裝awstats。解壓安裝包,並進行相關操做,以下:
tar -C /usr/local/ -xf awstats-7.5.tar.gz
mv /usr/local/awstats-7.5/ /usr/local/awstats
chown root:root -R /usr/local/awstats/
mkdir -p /var/www/awstats/
cd /usr/local/awstats/tools/
chmod +x /usr/local/awstats/tools/*.pl
chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl
開始安裝awstats,以下:
./awstats_configure.pl
由於在此咱們使用的是nginx,因此以上截圖填寫none。
建立一個新的統計配置文件。
在這輸入本身的網站域名,也能夠進行自定義。
使用默認配置,生成配置文件。
安裝程序執行結束後,會在/etc/awstats/目錄下生成相應的配置文件。以下:
ll /etc/awstats/awstats.www.ilanni.com.conf
3.3 編輯配置文件
awstats安裝完畢後,咱們如今來修改其配置文件awstats.www.ilanni.com.conf。在該配置文件中,咱們主要修改的是awstats分析nginx日誌的路徑,以及日誌格式,固然還有其它的一些插件。以下:
vim /etc/awstats/awstats.www.ilanni.com.conf
LogFile="/var/log/nginx/ilanni.com_%YYYY-24%MM-24%DD-24.log"
#配置顯示國家和地區
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoLiteCity.dat"
#解決搜索關鍵字的亂碼
LoadPlugin="decodeutfkeys"
注意:LogFile路徑中日誌文件中的日期格式「%YYYY-24%MM-24%DD-24」,是指24小時以前的年月日,也就是昨天的日期。-24表示一天前的,-0表示當前。
3.4 安裝純真IP數據庫插件
若是要詳細顯示國內訪客的具體來源信息,咱們可使用純真IP數據庫插件。
純真IP地址數據庫下載地址:http://update.cz88.net/soft/setup.zip
在windows機器上下載安裝後,安裝目錄下的qqwry.dat文件便是最新版IP地址數據庫。
下載awstats純真IP數據庫解析插件,下載地址以下:
http://down.51cto.com/data/1888530
注意,附件qqhostinfo.pm、qqwry.pl裏的文件路徑已經修改好。
下載完畢後,把qqhostinfo.pm、qqwry.pl、qqwry.dat這三個文件,放到awstats的wwwroot/cgi-bin/plugins目錄下,而且給予qqhostinfo.pm文件可執行權限。以下:
最後修改awstats的配置文件awstats.www.ilanni.com.conf添加LoadPlugin="qqhostinfo"選項,以下:
到此awstats安裝和配置已經所有完成。
4、配置nginx日誌格式
awstats安裝完畢後,咱們要配置nginx日誌的格式,由於awstats是按照指定的格式對nginx日誌文件進行分析的,因此咱們要進行對應的配置。
nginx日誌的配置方法以下:
vim /etc/nginx/nginx.conf
log_format site '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
5、awstats與nginx進行web集成
Nginx日誌格式配置完畢後,咱們如今要把awstats與nginx進行集成。
爲何awstats與nginx進行集成?由於awstats的訪問是經過web方式進行的。這個集成也分爲兩種狀況 ,一個是awstats單獨以nginx虛擬主機的形式存在,一種是awstats與現有nginx虛擬主機進行集成。下面分別把這兩種方式的nginx配置貼出來,以下:
awstats單獨做爲nginx的一個虛擬主機,配置文件:
server {
listen 80;
server_name www.ilanni.com;
root /var/www/awstats/;
index index.html;
#或者
#index awstats.test.haiyn.com.html;
location ~ ^/cgi-bin/.*.(cgi|pl|py|rb) {
gzip off;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-cgi.sock;
# fastcgi_pass 127.0.0.1:9000; #注意配置fastcgi_pass爲你的php-fpm server.
fastcgi_index cgi-bin.php;
fastcgi_param SCRIPT_FILENAME /usr/local/awstats/wwwroot/cgi-bin/fcgi.php; #注意文件路徑
fastcgi_param SCRIPT_NAME /cgi-bin/fcgi.php;
fastcgi_param X_SCRIPT_FILENAME /usr/local/awstats/wwwroot$fastcgi_script_name; #注意文件路徑
fastcgi_param X_SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REMOTE_USER $remote_user;
}
# Static awstats files: HTML files stored in DOCUMENT_ROOT/awstats/
location /classes/ {
alias /usr/local/awstats/wwwroot/classes/;
}
location /css/ {
alias /usr/local/awstats/wwwroot/css/;
}
location /js/ {
alias /usr/local/awstats/wwwroot/js/;
}
location /icon/ {
alias /usr/local/awstats/wwwroot/icon/;
}
}
awstats與現有nginx虛擬主機進行集成。
注意:必定要把awstats相關的配置存放到最前面,這是由於nginx的匹配規則是從上到下進行匹配的。
server {
listen 80;
server_name www.ilanni.com ilanni.com;
charset utf-8;
access_log /var/log/nginx/ilanni.com.log main;
location ~ ^/icon/ { #圖標目錄
root /usr/local/awstats/wwwroot;
index index.html;
access_log off;
charset gb2312;
}
location ~ ^/cgi-bin/.*.(cgi|pl|py|rb) {
root /usr/local/awstats/wwwroot;
gzip off;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param X_SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root/cgi-bin/fcgi.php;
fastcgi_param X_SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param REMOTE_USER $remote_user;
auth_basic "Restricted";
auth_basic_user_file /usr/local/awstats/htpasswd.pass;
}
location / {
root /www/ilanni.com;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /www/ilanni.com/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
6、生成awstats數據庫
如今開始使用awstats分析日誌,使用以下命令:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.ilanni.com
生成靜態文件,使用以下命令:
/usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=www.ilanni.com -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
爲了看到每一天更新的數據,咱們能夠經過crontab在天天凌晨00:01定時更新靜態頁面。以下:
vim /etc/crontab
1 0 * * * /usr/local/awstats/tools/awstats_buildstaticpages.pl -update -config=www.ilanni.com -lang=cn -dir=/var/www/awstats -awstatsprog=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
7、訪問awstats
awstats數據庫生成完畢後,咱們如今來經過web頁面訪問下。在此我使用的是第二種方式awstats與nginx進行集成。
以下:
http://www.ilanni.com/cgi-bin/awstats.pl
上輸入的是咱們在第二章準備工做中htpasswd生成的用戶名和密碼。
上圖就是awstats對nginx日誌文件分析後,所獲得的相關信息。
上圖是咱們安裝的GeoIP和純真IP數據庫顯示的用戶訪問的國家、城市以及來源地址。
上圖是awstats根據nginx日誌文件分析出來用戶是搜索哪些關鍵詞過來的。