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