網站日志分析項目案例(一)項目介紹:當前頁面
網站日志分析項目案例(二)數據清洗:http://www.cnblogs.com/edisonchou/p/4458219.html
網站日志分析項目案例(三)統計分析:http://www.cnblogs.com/edisonchou/p/4464349.html
一、項目背景與數據情況
1.1 項目來源
本次要實踐的數據日志來源於國內某技術學習論壇,該論壇由某培訓機構主辦,匯聚了眾多技術學習者,每天都有人發帖、回帖,如圖1所示。
圖1 項目來源網站-技術學習論壇
本次實踐的目的就在於通過對該技術論壇的apache common日志進行分析,計算該論壇的一些關鍵指標,供運營者進行決策時參考。
PS:開發該系統的目的是為了獲取一些業務相關的指標,這些指標在第三方工具中無法獲得的;
1.2 數據情況
該論壇數據有兩部分:
(1)歷史數據約56GB,統計到2012-05-29。這也說明,在2012-05-29之前,日志文件都在一個文件里邊,采用了追加寫入的方式。
(2)自2013-05-30起,每天生成一個數據文件,約150MB左右。這也說明,從2013-05-30之后,日志文件不再是在一個文件里邊。
圖2展示了該日志數據的記錄格式,其中每行記錄有5部分組成:訪問者IP、訪問時間、訪問資源、訪問狀態(HTTP狀態碼)、本次訪問流量。
圖2 日志記錄數據格式
二、關鍵指標KPI
2.1 瀏覽量PV
(1)定義:頁面瀏覽量即為PV(Page View),是指所有用戶瀏覽頁面的總和,一個獨立用戶每打開一個頁面就被記錄1 次。
(2)分析:網站總瀏覽量,可以考核用戶對於網站的興趣,就像收視率對於電視劇一樣。但是對於網站運營者來說,更重要的是,每個欄目下的瀏覽量。
計算公式:記錄計數,從日志中獲取訪問次數,又可以細分為各個欄目下的訪問次數。
2.2 注冊用戶數
該論壇的用戶注冊頁面為member.php,而當用戶點擊注冊時請求的又是member.php?mod=register的url。
計算公式:對訪問member.php?mod=register的url,計數。
2.3 IP數
(1)定義:一天之內,訪問網站的不同獨立 IP 個數加和。其中同一IP無論訪問了幾個頁面,獨立IP 數均為1。
(2)分析:這是我們最熟悉的一個概念,無論同一個IP上有多少電腦,或者其他用戶,從某種程度上來說,獨立IP的多少,是衡量網站推廣活動好壞最直接的數據。
計算公式:對不同的訪問者ip,計數
2.4 跳出率
(1)定義:只瀏覽了一個頁面便離開了網站的訪問次數占總的訪問次數的百分比,即只瀏覽了一個頁面的訪問次數 / 全部的訪問次數匯總。
(2)分析:跳出率是非常重要的訪客黏性指標,它顯示了訪客對網站的興趣程度:跳出率越低說明流量質量越好,訪客對網站的內容越感興趣,這些訪客越可能是網站的有效用戶、忠實用戶。
PS:該指標也可以衡量網絡營銷的效果,指出有多少訪客被網絡營銷吸引到宣傳產品頁或網站上之后,又流失掉了,可以說就是煮熟的鴨子飛了。比如,網站在某媒體上打廣告推廣,分析從這個推廣來源進入的訪客指標,其跳出率可以反映出選擇這個媒體是否合適,廣告語的撰寫是否優秀,以及網站入口頁的設計是否用戶體驗良好。
計算公式:①統計一天內只出現一條記錄的ip,稱為跳出數;②跳出數/PV;
2.5 板塊熱度排行榜
(1)定義:版塊的訪問情況排行。
(2)分析:鞏固熱點版塊成績,加強冷清版塊建設。同時對學科建設也有影響。
計算公式:按訪問次數統計排序;
三、開發步驟
3.0 需要用到的技術
(1)Linux Shell編程
(2)HDFS、MapReduce
(3)HBase、Hive、Sqoop框架
3.1 上傳日志文件至HDFS
把日志數據上傳到HDFS中進行處理,可以分為以下幾種情況:
(1)如果是日志服務器數據較小、壓力較小,可以直接使用shell命令把數據上傳到HDFS中;
(2)如果是日志服務器數據較大、壓力較大,使用NFS在另一台服務器上上傳數據;
(3)如果日志服務器非常多、數據量大,使用flume進行數據處理;
3.2 數據清洗
使用MapReduce對HDFS中的原始數據進行清洗,以便后續進行統計分析;
3.3 統計分析
使用Hive對清洗后的數據進行統計分析;
3.4 分析結果導入MySQL
使用Sqoop把Hive產生的統計結果導出到mysql中;
3.5 提供視圖工具
提供視圖工具供用戶使用,指標查詢mysql、明細則查詢Hbase;
四、表結構設計
4.1 MySQL表結構設計
這里使用MySQL存儲關鍵指標的統計分析結果。
4.2 HBase表結構設計
這里使用HBase存儲明細日志,能夠利用ip、時間查詢。
后面,我們就開始具體的實戰了,本篇作為介紹就到此為止!