【場景】
使用者搭建網站會不斷的産生通路日志(nginx,apache通路日志)。為了從通路日志中挖掘出更多價值,本文主要闡述如果利用阿裡雲數加從沉睡中的通路日志中擷取更有價值的資料,包括用于實時統計和展示網站通路的一系列名額,例如pv,uv,裝置,地理,狀态碼,爬蟲,網絡流量等名額。
【具體分析需求】
使用者想根據通路日志來實時統計和展示網站通路重要名額,需要設計到流式計算和離線計算,那麼阿裡雲數加·streamcompute更好的可以解決日志的實時計算場景,而阿裡雲數加·maxcompute則更好的來處理批量資料,适合于離線資料計算。
那麼如何來使用阿裡雲數加來建構一個高可用的數加架構兩者計算場景都可以滿足?
【日志字段】
日志格式:
$remote_addr - $remote_user [$time_local] “$request” $status $body_bytes_sent”$http_referer” “$http_user_agent” [unknown_content];
日志字段說明:
<b>字段名稱</b>
<b>字段說明</b>
$remote_addr
發送請求的用戶端ip位址
$remote_user
用戶端登入名
$time_local
伺服器本地時間
$request
請求,包括http請求類型+請求url+http協定版本号
$status
服務端傳回狀态碼
$body_bytes_sent
傳回給用戶端的位元組數(不含header)
$http_referer
該請求的來源url
$http_user_agent
發送請求的用戶端資訊,如使用的浏覽器等
真實的通路日志資料示例如下:
192.168.1.101 - - [17/mar/2016:10:28:30 +0800] "get /fonts/fontawesome-webfont.woff?v=4.2.0 http/1.1" 0.021 1207 304 0 "https://sls.console.aliyun.com/css/lib.css" "mozilla/5.0 (macintosh; intel mac os x 10_11_3) applewebkit/537.36 (khtml, like gecko) chrome/49.0.2623.87 safari/537.36"
【資料架構】
根據實時計算場景和批量計算的場景要求,筆者嘗試從如下資料架構來滿足:
如上資料架構圖,使用者可根據紅色箭線來完成實時資料處理場景,根據藍色箭線來完成離線資料處理需求。
<b>實時處理邏輯:</b>logstash-->datahub-->streamcompute-->analyticdb-->datav,筆者做出來的最終效果圖如下:
<b>離線計算邏輯:</b>logstash-->datahub(dataconnector)-->maxcompute-->大資料開發套件data ide -->quick bi.效果圖如下:
用心的使用者會發現筆者總體的架構是按照如下資料流邏輯來建構的:
筆者也會根據架構圖将詳細的操作文檔及代碼共享給大家,敬請期待!也祝願大家能夠快速的針對自己網站的通路日志建構出分析結果。