#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.log
apache的accesslog存放路徑,常見的webserver如nginx,lighthttpd等,腳本自帶有解析引擎,無需別的參數,若是很是見webserver的話,加上--log-format-regex
這個參數來自定義日誌格式抓取。
當腳本執行完畢時,便可在piwik中看到網站的訪問記錄了,使用也很方便。長期使用能夠寫入crontab
便可。
注意:
--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點之後,就能夠收到正常的郵件報表。