爛泥:利用awstats分析nginx日誌

来源:http://www.cnblogs.com/ilanni/archive/2016/04/12/5384405.html
-Advertisement-
Play Games

本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 昨天把nginx的日誌進行了切割,關於如何切割nginx日誌,可以查看《爛泥:切割nginx日誌》這篇文章。 今天打算分析下nginx日誌,要分析nginx日誌,我們可以通過shell腳本... ...


本文由ilanniweb提供友情贊助,首發於爛泥行天下

想要獲得更多的文章,可以關註我的微信ilanniweb

昨天把nginx的日誌進行了切割,關於如何切割nginx日誌,可以查看《爛泥:切割nginx日誌》這篇文章。

今天打算分析下nginx日誌,要分析nginx日誌,我們可以通過shell腳本和第三方軟體awstats進行分析,在此我們選擇的是通過第三方軟體awstats進行分析。

要使用awstats分析nginx日誌,我們要安裝awstats,而在安裝awstats之前,我們需要先來介紹下awstats是什麼?

一、awstats是什麼

awstats是一個免費非常簡潔而且強大有個性的基於Perl語言的WEB日誌分析工具。

它可以統計網站的如下信息:

1):訪問量、訪問次數、頁面瀏覽量、點擊數、數據流量等。

2):精確到每月、每日、每小時的數據。

3):訪問者國家以及IP。

4):Robots/Spiders的統計。

5):訪客持續時間。

6):對不同files type的統計信息。

7):Pages-URL的統計。

8):訪客操作系統瀏覽器等信息。

9):其它信息(搜索關鍵字等等)

二、準備工作

在介紹完awstats是什麼之後,我們再來介紹下安裝awstats之前的準備工作。

2.1 安裝GeoIP

GeoIP主要用於定位訪問者所屬的國家以及城市的資料庫,可以使用如下命令進行安裝:

yum -y install GeoIP GeoIP-devel perl-Geo-IP

clip_image001[1]

查看GeoIP安裝的相關組件,如下:

rpm -ql GeoIP-GeoLite-data

rpm -ql GeoIP-GeoLite-data-extra

clip_image002[1]

如果是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

clip_image003[1]

安裝httpd-tools時,會自動安裝httpd,所以我們需要把httpd禁用。如下:

/etc/init.d/httpd stop

chkconfig httpd off

生成密碼文件,使用如下命令:

htpasswd -c -m /usr/local/htpasswd.pass ilanni

clip_image004[1]

三、安裝awstats

準備工作做完後,我們現在來安裝awstats。

3.1 下載awstats

awstst官網是http://www.awstats.org/,下載最新版本de awstats。如下:

wget http://www.awstats.org/files/awstats-7.5.tar.gz

clip_image005[1]

clip_image006[1]

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

clip_image007[1]

開始安裝awstats,如下:

./awstats_configure.pl

clip_image008[1]

因為在此我們使用的是nginx,所以以上截圖填寫none。

clip_image009

創建一個新的統計配置文件。

clip_image010

在這輸入自己的網站功能變數名稱,也可以進行自定義。

clip_image011

使用預設配置,生成配置文件。

clip_image012

安裝程式執行結束後,會在/etc/awstats/目錄下生成相應的配置文件。如下:

ll /etc/awstats/awstats.www.ilanni.com.conf

clip_image013

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表示當前。

clip_image014

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文件可執行許可權。如下:

clip_image015

最後修改awstats的配置文件awstats.www.ilanni.com.conf添加LoadPlugin="qqhostinfo"選項,如下:

clip_image016

到此awstats安裝和配置已經全部完成。

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

clip_image017

五、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/;

      }

}

clip_image018

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;

}

}

clip_image019

六、生成awstats資料庫

現在開始使用awstats分析日誌,使用如下命令:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.ilanni.com

clip_image020

生成靜態文件,使用如下命令:

/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

clip_image021

為了看到每一天更新的數據,我們可以通過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

clip_image022

七、訪問awstats

awstats資料庫生成完畢後,我們現在來通過web頁面訪問下。在此我使用的是第二種方式awstats與nginx進行集成。

如下:

http://www.ilanni.com/cgi-bin/awstats.pl

clip_image023

上輸入的是我們在第二章準備工作中htpasswd生成的用戶名和密碼。

clip_image024

上圖就是awstats對nginx日誌文件分析後,所得到的相關信息。

clip_image025

上圖是我們安裝的GeoIP和純真IP資料庫顯示的用戶訪問的國家、城市以及來源地址。

clip_image026

上圖是awstats根據nginx日誌文件分析出來用戶是搜索哪些關鍵詞過來的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、選擇Percona Server、MariaDB還是MYSQL mysql應用源碼:http://www.jinhusns.com/Products/Download/?type=xcj 1、Mysql三種存儲引擎 MySQL提供了兩種存儲引擎:MyISAM和 InnoDB,MySQL4和5使用 ...
  • 接上一篇Mysql性能優化一 建立適當的索引 說起提高資料庫性能,索引是最物美價廉的東西了。不用加記憶體,不用改程式,不用調sql,只要執行個正確的'create index',查詢速度就可能提高百倍千倍,這可真有誘惑力。可是天下沒有免費的午餐,查詢速度的提高是以插入、更新、刪除的速度為代價的,這些寫 ...
  • 在部署環境時,不同的環境可能會有一些不同步,而個人遇到的問題就是在開發環境中表中均有欄位 BestCaseId 和 RiskId 欄位,生產環境中目前只有 BestCaseId 欄位,新搭建的測試環境中暫時都不存在這兩個欄位(某些原因需要另一單獨測試環境)。 保證在生產環境中的 BestCaseId ...
  • 1. Linux系統配置 1.1. vm.overcommit_memory設置 overcommit_memory文件指定了內核針對記憶體分配的策略,其值可以是0、1、2。 0, 表示內核將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給 ...
  • 1. Redis主從配置 1.1. 設置主從複製 Master <= Salve 10.24.6.5:6379 <= 10.24.6.7:6379 1.2. 取消主從複製 1.3. 刪除所有數據 flushdb:刪除這個db下的。 flushall:刪除所有 2. Sentinel高可用配置 Sen ...
  • Range --創建分區表 create table emp3(id number(4) primary key,name varchar2(20),eff_dt date) partition by range(eff_dt) ( partition p1 values less than (to ...
  • 1. 參考文檔 http://xuwensong.elastos.org/2014/01/13/ubuntu-%E4%B8%8Bmysql-cluster%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/ 2. 簡介 MySQL-Cluster是一種技術,該 ...
  • 1.架構圖 註意 (一) Mysql需要把bind-address的配置去掉,否則無法實現虛擬ip訪問 (二) 關閉所有linux防火牆:/sbin/iptables –F(可能沒用) (三) 重啟networking:sudo /etc/init.d/networking restart(可能沒用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...