504
魔獸
采集-多渠道數據__最佳實踐_日誌服務-阿裏雲
日誌服務LogHub功能提供數據實時采集與消費,其中實時采集功能支持30+種手段,這裏簡單介紹下各場景的接入方式。
數據采集一般有兩種方式,區別如下。我們這裏主要討論通過LogHub流式導入(實時)采集。
方式 | 優勢 | 劣勢 | 例子 |
---|---|---|---|
批量導入 | 吞吐率大,麵向曆史存量數據 | 實時性較差 | FTP、OSS上傳、郵寄硬盤、SQL數據導出 |
流式導入 | 實時,所見即所得,麵向實時數據 | 收集端要求高 | LogHub、HTTP上傳、IOT,Queue |
背景
“我要點外賣“是一個平台型電商網站,用戶、餐廳、配送員等。用戶可以在網頁、App、微信、支付寶等進行下單點菜;商家拿到訂單後開始加工,並自動通知周圍的快遞員;快遞員將外賣送到用戶手中。
運營需求
在運營的過程中,發現了如下的問題:
- 獲取用戶難,投放一筆不小的廣告費對到渠道(網頁、微信推送),收貨了一些用戶,但無法評判各渠道的效果
- 用戶經常抱怨送貨慢,但慢在什麼環節,接單、配送、加工?如何優化?
- 用戶運營,經常搞一些優惠活動(發送優惠券),但無法獲得效果
- 調度問題,如何幫助商家在高峰時提前備貨?如何調度更多的快遞員到指定區域?
- 客服服務,用戶反饋下單失敗,用戶背後的操作是什麼?係統是否有錯誤?
數據采集難點
在數據化運營的過程中,第一步是如何將散落日誌數據集中收集起來,其中會遇到如下挑戰:
- 多渠道:例如廣告商、地推(傳單)等
- 多終端:網頁版、公眾賬號、手機、瀏覽器(web,m站)等
- 異構網:VPC、用戶自建IDC,阿裏雲ECS等
- 多開發語言:核心係統Java、前端Nginx服務器、後台支付係統C++
- 設備:商家有不同平台(X86,ARM)設備
我們需要把散落在外部、內部日誌收集起來,統一進行管理。在過去這塊需要大量幾種工作,現在可以通過LogHub采集功能完成統一接入。
日誌統一管理、配置
- 創建管理日誌項目Project,例如叫myorder
- 為不同數據源產生日誌創建日誌庫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(訂單日誌)
- 如需要對原始數據進行清洗與ETL,可以創建一些中間結果logstore
- 參考數據清洗與ETL
(更多操作可以參見快速開始/管理控製台)
用戶推廣日誌采集
為獲取新用戶,一般有2種方式:
- 網站注冊時直接投放優惠券
- 其他渠道掃描二維碼,投放優惠券
- 傳單二維碼
- 掃描網頁二維碼登陸
做法
定義如下注冊服務器地址,生成二維碼(傳單、網頁)供用戶注冊掃描。用戶掃描該頁麵注冊時,就知道用戶通過特定來源進入,並記錄日誌。
https://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:其他參數
收集方式:
服務端數據采集
支付寶/微信公眾賬號編程是典型的Web端模式,一般會有三種類型日誌:
- Nginx/Apache 訪問日誌:用以監控、實時統計
10.1.168.193 - - [01/Mar/2012:16:12:07 +0800] "GET /Send?AccessKeyId=8225105404 HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"
- Nginx/Apache 錯誤日誌
2016/04/18 18:59:01 [error] 26671#0: *20949999 connect() to unix:/tmp/fastcgi.socket failed (111: Connection refused) while connecting to upstream, client: 10.101.1.1, server: , request: "POST /logstores/test_log HTTP/1.1", upstream: "fastcgi://unix:/tmp/fastcgi.socket:", host: "ali-tianchi-log.cn-hangzhou-devcommon-intranet. sls.aliyuncs.com"
- 應用層日誌:應用層日誌要把事件產生的時間、地點、結果、延時、方法、參數等記錄詳細,對於擴展類字段一般放在最後
{
"time":"2016-08-31 14:00:04",
"localAddress":"10.178.93.88:0",
"methodName":"load",
"param":["31851502"],
"result":....
"serviceName":"com.example",
"startTime":1472623203994,
"success":true,
"traceInfo":"88_1472621445126_1092"
}
- 應用層錯誤日誌:錯誤發生時間、代碼行、錯誤碼、原因等
2016/04/18 18:59:01 :/var/www/html/SCMC/routes/example.php:329 [thread:1] errorcode:20045 message:extractFuncDetail failed: account_hsf_service_log
做法
- 日誌寫到本地文件,通過Logtail配置正則表達式寫到指定Logstore
- Docker中產生日誌可以使用容器服務集成日誌服務
- Java程序可以使用Log4J Appender日誌不落盤, LogHub Producer Library(客戶端高並發寫入);Log4J Appender
- C#、Python、Java、PHP、C等可以使用SDK寫入
- Windows服務器可以使用Logstash采集
終端用戶日誌接入
- 移動端:可以使用移動端SDK IOS, Android、或MAN(移動數據分析)接入
- ARM設備:ARM平台可以使用Native C交叉編譯
- 商家平台設備:X86 平台設備可以用SDK、ARM平台可以使用Native C交叉編譯
Web/M 站頁麵用戶行為
頁麵用戶行為收集可以分為兩類:
- 頁麵與後台服務器交互:例如下單,登陸、退出等。
- 頁麵無後台服務器交互:請求直接在前端處理,例如滾屏,關閉頁麵等。
做法
- 第一種可以參考服務端采集方法
- 第二種可以使用Tracking Pixel/JS Library收集頁麵行為,參考Tracking Web接口
服務器日誌運維
例如:
- Syslog日誌
Aug 31 11:07:24 zhouqi-mac WeChat[9676]: setupHotkeyListenning event NSEvent: type=KeyDown loc=(0,703) time=115959.8 flags=0 win=0x0 winNum=7041 ctxt=0x0 chars="u" unmodchars="u" repeat=0 keyCode=32
- 應用程序Debug日誌
__FILE__:build/release64/sls/shennong_worker/ShardDataIndexManager.cpp
__LEVEL__:WARNING
__LINE__:238
__THREAD__:31502
offset:816103453552
saved_cursor:1469780553885742676
seek count:62900
seek data redo
log:pangu://localcluster/redo_data/41/example/2016_08_30/250_1472555483
user_cursor:1469780553885689973
- Trace日誌
[2013-07-13 10:28:12.772518] [DEBUG] [26064] __TRACE_ID__:661353951201 __item__:[Class:Function]_end__ request_id:1734117 user_id:124 context:.....
做法
- 參考服務端采集方法
不同網絡環境下數據采集
LogHub在各Region提供 訪問點,每個Region提供三種方式接入點:
- 內網(經典網):本Region內服務訪問,帶寬鏈路質量最好(推薦)
- 公網(經典網):可以被任意訪問,訪問速度取決於鏈路質量、傳輸安全保障建議使用HTTPS
- 私網(專有網VPC):本Region內VPC網絡訪問
更多請參見網絡接入,總有一款適合你。
其他
- 參見LogHub完整采集方式。
- 參見日誌實時消費,涉及流計算、數據清洗、數據倉庫和索引查詢等功能。
最後更新:2016-10-08 19:21:45
上一篇:
采集-IIS訪問日誌__最佳實踐_日誌服務-阿裏雲
下一篇:
采集-日誌管理__最佳實踐_日誌服務-阿裏雲
處理非結構化數據__快速開始_大數據計算服務-阿裏雲
運營商錯誤碼(電信)__常見問題_短信服務-阿裏雲
怎樣為一個子用戶授予隻讀訪問RDS的權限___雲數據庫(RDS)授權問題_授權常見問題_訪問控製-阿裏雲
企業郵箱開通指南__購買續費_購買指導_企業郵箱-阿裏雲
轉義字符__附錄_SQL_大數據計算服務-阿裏雲
ALIYUN::ESS::ScalingGroupEnable__資源列表_資源編排-阿裏雲
連接實例__快速入門(MySQL)_雲數據庫 RDS 版-阿裏雲
智能解析線路__解析記錄操作_產品使用手冊_雲解析-阿裏雲
為什麼沒有收到返券?___儲值卡_代金券及推薦碼_財務-阿裏雲
按量計費__計費說明_日誌服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲