開源網站訪問統計系統Piwik的基本使用

#piwik簡介#javascript

最近試用了開源的網站訪問統計系統——piwik,以爲功能很是強大,一點不輸於商業產品百度統計與google analysis,替代他們徹底沒有問題。php

關於piwik的簡介能夠去piwik的官網( http://piwik.org )查看,有詳細的介紹和視頻演示。以前OSChina也有簡單的介紹( http://www.oschina.net/p/piwik )。css

如下是採集到的分析數據效果圖:html

在此輸入圖片描述

在此輸入圖片描述

#piwik安裝#java

首先須要解決依賴項( http://piwik.org/docs/requirements/ ),ubuntu/debian使用下列命令安裝全部依賴項(我用的是apache,別的webserver請替換成相應的軟件包)python

apt-get install apache2 mysql-server php5 php5-mysql php5-gd

如需定位訪客的地理位置,參考官方文檔: http://piwik.org/docs/geo-locate/, 或者使用JS追蹤的方式,經過JS代碼獲取訪客的IP歸屬地。mysql

安裝過程參考官方文檔( http://piwik.org/docs/installation ),比較簡單,就不詳細介紹了。nginx

配置好apache以後,經過瀏覽器訪問,一步步配置完畢以後,看到以下界面以後,就可使用了:web

在此輸入圖片描述

在此輸入圖片描述

在此輸入圖片描述

#piwik使用#sql

剛裝好的Piwik是空空如也的,此時咱們須要這個系統幫咱們統計數據。

目前Piwik支持兩種採集用戶訪問記錄的方式: JS追蹤訪問日誌追蹤

JS追蹤可定製型高,能夠獲取到用戶的分辨率,瀏覽器插件等等,還能夠捕獲自定義變量。訪問日誌追蹤(如apache的accesslog)能夠追蹤到用戶的錯誤請求(如40X錯誤,有助於捕獲到惡意用戶和爬蟲,蜘蛛等等),目前這兩種追蹤獲得的數據還不支持合併

這兩種追蹤模式的詳細優缺點能夠參考官方的這篇文檔: http://piwik.org/faq/log-analytics-tool/faq_16305/

##JS追蹤##

管理設置-網站-右邊便可看到"顯示跟蹤代碼",以下圖所示:

在此輸入圖片描述

將此代碼複製到web項目的footer中便可(即全部頁面都嵌入這段相同的js代碼,用於捕獲用戶的信息,如分辨率,瀏覽器UA,IP等),還能夠按照官方文檔,捕獲自定義變量。

參考官方文檔的幫助,這裏再也不贅述: http://piwik.org/docs/javascript-tracking/

##log追蹤##

log追蹤無需修改web項目,可是必需要有登陸服務器並讀取accesslog的權限。

log追蹤的詳細用法參考官方文檔: http://piwik.org/faq/log-analytics-tool/ , https://piwik.org/log-analytics/

log追蹤的過程是解析webserver的accesslog,而後經過piwik的API上傳,最終在piwik頁面上展現。

這個過程不用本身去實現了,piwik的壓縮包中已經帶有一個python腳本能夠幫助咱們完成這個工做了,該腳本存儲於piwik目錄下的misc/log-analytics/import_logs.py

將這個腳本遠程拷貝到目標服務器上,按照腳本的參數格式執行便可,個人命令行:

./import_logs.py --url=http://192.168.1.106/piwik/ --idsite=1 --recorders=2 --token-auth=319fb461d3225905039551e861edde60 --enable-static --enable-bots --enable-http-errors --enable-http-redirects /var/log/apache2/access.log

使用--help參數便可看到這個腳本的命令行,只有一個--url參數是必須的,指明piwik的訪問路徑。詳細幫助參見官方文檔(https://piwik.org/docs/log-analytics-tool-how-to/),這裏對我使用的參數作一下簡介:

--idsite代表抓取到的信息上傳到哪一個序號對應的網站(這裏的參數爲1,表明解析的數據會統計到first_web這個網站中)

--token-auth這個參數是管理員的訪問token,在系統頁面最頂上的API點開便可看到,以下圖所示。這個參數可使用--login=LOGIN --password=PASSWORD這兩個參數替代,必須是管理員的帳戶和密碼。

在此輸入圖片描述

--recorders使用多線程解析,默認爲1,官方建議這個參數和核心數一致。

--enable-static --enable-bots --enable-http-errors這三個參數基本上把apache的accesslog能抓取到的所有信息都抓全了,抓取靜態資源(jpg,png,js,css等非html的訪問),抓取bots(不知道這個是什麼,猜想是不是機器人?),抓取html錯誤碼(如40X請求等等)

/var/log/apache2/access.logapache的accesslog存放路徑,常見的webserver如nginx,lighthttpd等,腳本自帶有解析引擎,無需別的參數,若是很是見webserver的話,加上--log-format-regex這個參數來自定義日誌格式抓取。

當腳本執行完畢時,便可在piwik中看到網站的訪問記錄了,使用也很方便。長期使用能夠寫入crontab便可。

注意:

  • log解析的方式追蹤比較慢,不適合實時追蹤用戶訪問記錄,建議每過幾小時執行一次crontab,來定時解析log。
  • 若是開啓了--enable-static --enable-bots --enable-http-errors這三個參數,解析過程將會很緩慢(我這邊大概十幾條每秒),不要讓crontab太頻繁,會直接讓mysql數據庫超出鏈接而掛掉,我是每4小時執行一次crontab。

#其餘一些問題#

1,log追蹤和js追蹤的方式互有優點,均可以抓到一些對方所沒法獲取的信息,可是目前這兩種方式追蹤到的數據還不支持合併,所以,須要同時使用這兩種方式追蹤時,建議分開兩個不一樣的網站追蹤不一樣的數據,如first_web用於JS追蹤,first_web(log)用於log追蹤。參見官方FAQ: http://piwik.org/faq/log-analytics-tool/faq_16307/

2,當訪問量較高時,請關閉Piwik觸發處理,已提升頁面響應,刷新報表數據由後臺crontab執行,參考以下圖所示,crontab的設置見右邊的提示中的官方文檔:

在此輸入圖片描述

3,自動郵件的時間有些問題,piwik內部時間使用的是UTC時間,也就是中國時區(CST,東八區)比UTC時區的時間快8個小時。若是使用默認的郵件發送時間0點發送,將會收到前天的訪問記錄報表(中國時間0點對應UTC時間昨天的16點,那麼此時發昨天的報表就會收到前天的報告)。

這個問題已經給官方提過issue,不過官方尚未迴應我: http://forum.piwik.org/read.php?2,111809

暫時的方案是把時間改到8點之後,就能夠收到正常的郵件報表。

相關文章
相關標籤/搜索