汽車之家采集SDK埋點(diǎn)可視化實現(xiàn)之路
原創(chuàng)背景
采集sdk作為之家普遍采用的數(shù)據(jù)采集上報工具為各個業(yè)務(wù)線的app收集海量數(shù)據(jù)提供了有力的支持。通過采用代碼埋點(diǎn),sdk觸發(fā)的形式滿足了各個業(yè)務(wù)線對埋點(diǎn)數(shù)據(jù)精確控制、自定義數(shù)據(jù)和精細(xì)化數(shù)據(jù)分析的業(yè)務(wù)需求。但是復(fù)雜的自定義的數(shù)據(jù)格式和大量的上報數(shù)據(jù)量對埋點(diǎn)數(shù)據(jù)的查看和校對工作提出了很高的要求。
現(xiàn)有的埋點(diǎn)數(shù)據(jù)查看方法
1、通過抓包工具目前查看上報埋點(diǎn)信息普遍采用電腦安裝抓包工具,手機(jī)端設(shè)置代理,通過抓取查看上報接口請求數(shù)據(jù)的方式。
(1)客戶端app因為安全要求普遍對網(wǎng)絡(luò)代理進(jìn)行限制,需要開發(fā)人員提供特定的測試app 或者提供關(guān)閉限制的方法才能進(jìn)行抓包操作。
(2)正式環(huán)境的上報數(shù)據(jù)做了壓縮加密處理,抓包后數(shù)據(jù)可視性差。造成絕大多數(shù)的測試工作只能在測試環(huán)境用測試app對埋點(diǎn)信息進(jìn)行查看驗證,不能直接在正式環(huán)境查看正式上報數(shù)據(jù)。
(3)抓包工具對上報的數(shù)據(jù)格式兼容性差,需要把數(shù)據(jù)拷貝出來進(jìn)行格式化后才能查看其中關(guān)鍵數(shù)據(jù),操作不便。
2、查看上報日志對于正式環(huán)境的埋點(diǎn)數(shù)據(jù)通常只能通過查看平臺導(dǎo)出數(shù)據(jù)進(jìn)行驗證。
(1)現(xiàn)有的數(shù)據(jù)平臺決定了不能查看實時數(shù)據(jù),導(dǎo)出數(shù)據(jù)存在延后。
(2)如果發(fā)現(xiàn)問題數(shù)據(jù)需要再次結(jié)合抓包操作對埋點(diǎn)位置和埋點(diǎn)數(shù)據(jù)進(jìn)行驗證,需要二次操作。針對于已經(jīng)發(fā)現(xiàn)的數(shù)據(jù)查看不及時,app環(huán)境要求嚴(yán)格,數(shù)據(jù)格式不友好,無法驗證線上數(shù)據(jù)等問題,我們依托于現(xiàn)有采集sdk和正在開發(fā)的采集平臺項目開發(fā)了埋點(diǎn)可視化功能。目的是為了能夠?qū)崟r、便捷地查看埋點(diǎn)上報數(shù)據(jù)。
實現(xiàn)原理和具體使用方法
基本原理
1.sdk方面采用在原有采集sdk中新建入口,并增加獨(dú)立上報路徑的方式。能夠保證開啟上報之后不影響現(xiàn)有采集上報邏輯,確保正式環(huán)境數(shù)據(jù)的穩(wěn)定性,并將集成工作降到最低。
2.sdk新增埋點(diǎn)數(shù)據(jù)上報方法,數(shù)據(jù)采用壓縮加密后傳輸,傳遞到后臺服務(wù)進(jìn)行解壓、解密再次發(fā)送到web端,保證數(shù)據(jù)鏈路的安全。
3.數(shù)據(jù)的實時顯示是埋點(diǎn)可視化功能的基礎(chǔ),我們選擇使用websocket建立連接,并且通過動態(tài)碼的形式將sdk、服務(wù)端和web最終串聯(lián)形成完整的數(shù)據(jù)鏈路。
3.1 web端通過隨機(jī)生成動態(tài)碼按照已定規(guī)則拼接scheme跳轉(zhuǎn)連接并形成二維碼,同時依靠動態(tài)碼和服務(wù)端建立socket連接。sdk通過掃碼方式進(jìn)入控制頁面,從
scheme中獲取動態(tài) 碼。通過上報接口將埋點(diǎn)數(shù)據(jù)和動態(tài)碼上報到服務(wù)器,服務(wù)端解析數(shù)據(jù)并通過動態(tài)碼區(qū)分將埋點(diǎn)數(shù)據(jù)分發(fā)給不同的前端頁面,至此形成一個完整的數(shù)據(jù)傳遞鏈路。
3.2 sdk首次進(jìn)入動態(tài)碼生成規(guī)則
3.3 sdk 再次進(jìn)入流程
4.埋點(diǎn)可視化提供歷史記錄查詢界面 ,可以根據(jù)條件篩選查詢歷史數(shù)據(jù)。根據(jù)保存的數(shù)據(jù)結(jié)構(gòu)和操作特點(diǎn)選用Elasticsearch進(jìn)行數(shù)據(jù)存儲保證了對大量數(shù)據(jù)的篩選性能。
使用方法
1.功能入口請在OA搜索采集平臺進(jìn)入頁面,點(diǎn)擊服務(wù)系統(tǒng)選擇埋點(diǎn)可視化功能。
2.集成方式
對于已經(jīng)集成采集sdk的app只需要升級至最新版sdk;采集sdk具體集成和使用方式可以參考采集平臺中詳細(xì)的文檔資料。
3.為了更加便捷的使用埋點(diǎn)可視化功能我們提供了兩種開啟方式。
3.1 掃碼進(jìn)入
對于擁有掃碼能力的app 只需要簡單適配
通過掃描二維碼獲取scheme進(jìn)行跳轉(zhuǎn) 就能進(jìn)入到sdk埋點(diǎn)可視化控制頁面,自動獲取動態(tài)碼點(diǎn)擊開關(guān)就可打開埋點(diǎn)可視化功能。
web端默認(rèn)進(jìn)入掃碼登錄頁
3.2對于沒有掃碼能力的app可以直接調(diào)用api進(jìn)入控制頁
web端通過使用輸入APP端顯示的動態(tài)碼登錄
4.登錄完成后即可進(jìn)入數(shù)據(jù)顯示頁面。頁面頭部顯示了當(dāng)前連接的設(shè)備和正在上報的APP名稱,支持一鍵復(fù)制設(shè)備ID。頁面主體實時顯示上報數(shù)據(jù)并且根據(jù)常用的數(shù)據(jù)分類區(qū)分了 pv,click,,show,other 四種類型。點(diǎn)擊item即可顯示全部的詳細(xì)數(shù)據(jù)。數(shù)據(jù)詳情頁面對埋點(diǎn)數(shù)據(jù)進(jìn)行了排版,優(yōu)先顯示重點(diǎn)關(guān)注數(shù)據(jù)并對json數(shù)據(jù)進(jìn)行了格式化方便查看和復(fù)制。
5.我們還對歷史上報記錄提供了豐富的查詢功能,可以通過時間類型等篩選條件對已經(jīng)上報的數(shù)據(jù)進(jìn)行篩選查詢.
點(diǎn)擊查看詳情就可看到全部數(shù)據(jù)
?
總結(jié)
埋點(diǎn)可視化功能致力于讓查看埋點(diǎn)數(shù)據(jù)更加簡單便捷。項目已經(jīng)發(fā)布,我們還在不斷進(jìn)行豐富和完善。后期規(guī)劃的單類型專注模式、數(shù)據(jù)實時篩選、查詢數(shù)據(jù)導(dǎo)出功能、數(shù)據(jù)拷貝對比等功能已經(jīng)正在開發(fā)當(dāng)中。