使用LogHub進行日誌實時採集

2017-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


在看



熱點新聞