寫在前面
什么是用戶行為日志呢?其實也叫做用戶行為軌跡,流量日志等。簡單來說,就是用戶每次訪問網站產生的行為數據(訪問,瀏覽,搜索,點擊等)。基本上,只要你訪問了任何一個網站,該網站都會有你的行為記錄。
當然,日志也是一個很大的概念,任何程序都有可能輸出日志:操作系統內核、各種應用服務器等等。日志的內容、規模和用途也各不相同,很難一概而論。這里我想主要說的就是,Web日志。即,web服務器記錄的日志。常見的就像nginx日志。
通常,我們的nginx會配置不同用戶行為參數來記錄每次用戶的訪問行為,如下:
配置方法:可以參考這片文章
一組真實的nginx日志:
223.104.25.1 - - [21/Nov/2017:20:34:16 +0800] "GET / HTTP/1.1" 200 94 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 Mobile/14G60 Safari/602.1" "-"
223.104.25.1 - - [21/Nov/2017:20:34:16 +0800] "GET / HTTP/1.1" 200 94 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 Mobile/14G60 Safari/602.1" "-"
156.151.199.137 - - [21/Nov/2017:20:34:19 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36" "-"
從日志中我們可以獲取:
從上圖中可以看到,可以獲取訪問者的IP、訪問的時間、訪問的目標網頁、來源的地址以及訪問者所使用的客戶端的UserAgent信息等。
如果需要更多的信息,則要用其它手段去獲取,常見的操作就是埋點,埋點也是很大的東西,簡單理解就是,可以使用諸如Ajax請求的東西,將更多信息異步發送到自己的服務器保存,這一操作對用戶是完全透明的。
用戶行為日志分析的意義
- 網站的眼睛,referer
- 網站的神經 網頁布局是否合理,用戶體驗
- 網站的大腦
毫無疑問,Web日志中包含了大量產品分析人員會感興趣的信息:
最簡單的,我們可以從中獲取網站每類頁面的PV值(PageView,頁面訪問量)、獨立IP數(即去重之后的IP數量)等;
稍微復雜一些的,可以計算得出用戶所檢索的關鍵詞排行榜、用戶停留時間最高的頁面等,從而進行精准推薦營銷;
更復雜的,構建廣告點擊模型、分析用戶行為特征等等。
總之,一句話,用戶行為日志分析能夠為公司帶來很好的收益。這才是主要的。哈哈哈
用戶行為日志分析的方法
-
數據量比較小的情況
在這種情況下我們使用單機版本就是完全可以解決的,也許是幾十MB、幾百MB或者幾十GB。
總之就是在單機處理尚能忍受的時候。一切都很好辦,現成的各種Unix/Linux工具——awk、grep、sort、join等都是日志分析的利器,如果僅僅是想知道某個頁面的PV,一個wc+grep就能搞定。如果有稍復雜的邏輯,那就使用各種腳本語言,尤其是perl,配合偉大的正則表達式,基本就可以解決所有的問題。 -
大數據場景
當我們的單機無法忍受,這個時候,就該我們大數據里面的組件來處理了。常見的處理步驟是這樣的: