使用LogHub進行日誌實時採集

21CTO2017-09-29 02:21:20

21CTO社區導讀: 服務LogHub提供日誌數據實時採集與消費,其中實時採集功能支持30+種手段,這裡簡單介紹下各場景的採集方式。

日誌服務LogHub功能提供日誌數據實時採集與消費,其中實時採集功能支持30+種手段,這裡簡單介紹下各場景的接入方式。


數據採集一般有兩種方式,區別如下。我們這裡主要討論通過LogHub流式導入(實時)採集。


背景


“我要點外賣“是一個平臺型電商網站,用戶、餐廳、配送員等。用戶可以在網頁、App、微信、支付寶等進行下單點菜;商家拿到訂單後開始加工,並自動通知周圍的快遞員;快遞員將外賣送到用戶手中。



運營需求


在運營的過程中,發現瞭如下的問題:

  1. 獲取用戶難,投放一筆不小的廣告費對到渠道(網頁、微信推送),收貨了一些用戶,但無法評判各渠道的效果

  2. 用戶經常抱怨送貨慢,但慢在什麼環節,接單、配送、加工?如何優化?

  3. 用戶運營,經常搞一些優惠活動(發送優惠券),但無法獲得效果

  4. 調度問題,如何幫助商家在高峰時提前備貨?如何調度更多的快遞員到指定區域?

  5. 客服服務,用戶反饋下單失敗,用戶背後的操作是什麼?系統是否有錯誤?


數據採集難點


在數據化運營的過程中,第一步是如何將散落日誌數據集中收集起來,其中會遇到如下挑戰:

  • 多渠道:例如廣告商、地推(傳單)等

  • 多終端:網頁版、公眾賬號、手機、瀏覽器(web,m站)等

  • 異構網:VPC、用戶自建IDC,阿里雲ECS等

  • 多開發語言:核心系統Java、前端Nginx服務器、後臺支付系統C++

  • 設備:商家有不同平臺(X86,ARM)設備

我們需要把散落在外部、內部日誌收集起來,統一進行管理。在過去這塊需要大量幾種工作,現在可以通過LogHub採集功能完成統一接入。



日誌統一管理、配置


  1. 創建管理日誌項目Project,例如叫myorder

  2. 為不同數據源產生日誌創建日誌庫Logstore,例如:

    • wechat-server (存儲微信服務器訪問日誌)

    • wechat-app (存儲溫馨服務器應用日誌)

    • wechat-error (錯誤日誌)

    • alipay-server

    • alipay-app

    • deliver-app (送貨員app狀態)

    • deliver-error (錯誤日誌)

    • web-click (H5頁面點擊)

    • server-access(服務端Access-Log)

    • server-app (應用)

    • coupon (應用優惠券日誌)

    • pay (支付日誌)

    • order(訂單日誌)

  3. 如需要對原始數據進行清洗與ETL,可以創建一些中間結果logstore

    • 參考數據清洗與ETL

(更多操作可以參見快速開始/管理控制檯)


用戶推廣日誌採集


為獲取新用戶,一般有2種方式:
1. 網站註冊時直接投放優惠券
2. 其他渠道掃描二維碼,投放優惠券
- 傳單二維碼
- 掃描網頁二維碼登陸


做法

定義如下注冊服務器地址,生成二維碼(傳單、網頁)供用戶註冊掃描。用戶掃描該頁面註冊時,就知道用戶通過特定來源進入,並記錄日誌。

http://examplewebsite/login?source=10012&ref=kd4b


當服務端接受請求時,服務器輸出如下日誌:

2016-06-20 19:00:00 e41234ab342ef034,102345,5k4d,467890
  • time:註冊時間

  • session: 瀏覽器當前session,用以跟蹤行為

  • source:來源渠道,例如活動A為10001, 傳單為10002,電梯廣告為10003

  • ref:推薦號,是否有人推薦註冊,沒有則為空

  • params:其他參數

收集方式:
1. 應用程序輸出日誌到硬盤,通過Logtail採集
2. 應用程序通過SDK寫入,參見SDK


服務端數據採集


支付寶/微信公眾賬號編程是典型的Web端模式,一般會有三種類型日誌:


做法

  1. 日誌寫到本地文件,通過Logtail配置正則表達式寫到指定Logstore

  2. Docker中產生日誌容器服務集成日誌服務

  3. Java程序可以使用Log4J Appender日誌不落盤, LogHub Producer Library(客戶端高併發寫入);Log4J Appender

  4. C#、Python、Java、PHP、C等可以使用SDK寫入

  5. Windows服務器可以使用Logstash採集


終端用戶日誌接入


  • 移動端:可以使用移動端SDK IOS, Android、或MAN(移動數據分析)接入

  • ARM設備:ARM平臺可以使用Native C交叉編譯

  • 商家平臺設備:X86 平臺設備可以用SDK、ARM平臺可以使用Native C交叉編譯


Web/M 站


頁面用戶行為收集可以分為兩類:
1. 頁面與後臺服務器交互:例如下單,登陸、退出等。
2. 頁面無後臺服務器交互:請求直接在前端處理,例如滾屏,關閉頁面等。


做法

  1. 第一種可以參考服務端採集方法

  2. 第二種可以使用Tracking Pixel/JS Library收集頁面行為,參考Tracking Web接口


服務器日誌運維


例如:

做法

  • 參考服務端採集方法


不同網絡環境下數據採集


LogHub在各Region提供 訪問點,每個Region提供三種方式接入點:

  • 內網(經典網):本Region內服務訪問,帶寬鏈路質量最好(推薦)

  • 公網(經典網):可以被任意訪問,訪問速度取決於鏈路質量、傳輸安全保障建議使用HTTPS

  • 私網(專有網VPC):本Region內VPC網絡訪問

更多請參見網絡接入,總有一款適合你。


其他


  1. 參見LogHub完整採集方式。

  2. 參見日誌實時消費,涉及流計算、數據清洗、數據倉庫和索引查詢等功能。


作者:簡志,阿里雲計算高級專家,擅長領域日誌分析與處理

原文:https://yq.aliyun.com/articles/59921


閱讀原文

TAGS: