有贊埋點質量保障

一、常見問題

我們收集日誌,目的還是爲了分析用戶行爲,挖掘潛在價值,最終能優化產品體驗。因此,“高質量”是最基本要求,這是保證分析效果準確性的基石。那麼,常見的質量問題有哪些呢?

  • 事件重複&丟失。重複是由於SDK自身或者前端開發疏忽的問題,導致相同事件重複發送;丟失可能是設備、網絡原因,或者是開發者漏埋導致。
  • 事件參數錯誤。常見的情況有:”必傳而未傳“、”非空而爲空“、”值類型不對“、”值內容不對”等。
  • 前端常見錯誤。比如值爲“undefined”、“null”,通常是前端代碼bug導致的值錯誤。
  • 事件斷流。這種case經常發生,前端在做改造升級的時候,可能導致事件上報不規範,或者誤下線。

二、保障機制

針對埋點質量問題,我們嘗試以下的保障機制,去解決。從業務開發的過程出發,在不同階段提供服務支持,形成一個解決問題的閉環,保障日誌處於高質量狀態。

2.1 準確登記

業務需要根據“埋點規範”,規劃好頁面、組件和事件,並且在埋點平臺上準確地登記。登記的信息越全,內容越細,越有利於自動化判定日誌的準確性。目前我們登記的要素有:

  • 頁面/組件類型,登記該元素的業務標識,以及是否有業務ID。日誌上報時,會有對應的字段記錄該信息。
  • 事件信息,事件的名稱/標識/描述,所屬頁面/組件,以及所處狀態等信息。
  • 事件參數,屬於該事件的一系列業務參數,比如一個點擊事件的參數可能是被點擊的商品的ID。對於參數的登記,我們支持標識/類型/是否必傳/參數結構的設置。其中類型支持int/string/float/list/map,用於申明值內容結構;參數結構支持對複雜的數據類型,進一步定義其細節。

2.2 實時校驗

做好了埋點的登記工作,開發就可以按照埋點方案做相應的開發了。如何快速驗證上報日誌的準確性,以及如何及時發現線上問題,是我們面臨的直接問題。因此,我們做了實時校驗。除了實時外,校驗還需要考慮更新及時性/完備性/擴展性,避免規範或校驗點的變更,帶來頻繁的修改代碼或重啓任務。另外,對於校驗結果,還需要要做到可解釋/可沉澱/可分析。

對於實時性,我們採用Flink開發校驗模塊,實現秒級日誌校驗;校驗規則更新的及時性上,每分鐘從埋點平臺同步;可沉澱,校驗結果除了推送給測試工具外,還會落到druid,用於後續分析。這些點的思路比較直接,就不贅述了。下面着重介紹下其他考慮點:

2.2.1 完備性/擴展性

完備性比較好理解,校驗需要支持的,除了底層的埋點規範外,還有分業務的頁面/組件的合法性、事件關聯頁面/組件的情況、事件參數格式內容等;擴展性的考慮點在於,校驗點會持續不斷完善,如何“以不變應萬變”。這點上,主要思路有兩個:

通過分析校驗規則,抽象語義,我們設定以下語法(示例)

{
    "compare":"length",
    "condition":[
        "sdk_type",
        "in",
        [
            "iOS",
            "Android",
            "js"
        ]
    ],
    "assert":"true",
    "assert_fail":"ERROR",
    "value":36,
    "key":"uuid",
    "fail_msg":"did/uuid invalid",
    "require":1
}

本示例的含義:在sdk_type爲iOS、Android或js的情況下,檢查uuid參數,保證其是必傳的字符串,且長度是36,如果不是則是ERROR級錯誤,錯誤信息爲“did/uuid invalid”。具體字段說明:

  • key:參數名
  • value_type:參數值類型,默認爲string,可指定int
  • compare:參數值檢查方式,支持:
  • in:在一系列值內
  • length:對於字符串類型,指定長度
  • regex:對字符串類型,指定正則
  • value:參數值約束,對於compare=in是一個list;對於compare=length是一個數值;對於compare=regex是一個正則字符串
  • assert:檢查結果需符合的值,true或false
  • assertfail:檢查失敗給出的異常等級,WARNING、ERROR、TESTWARNING
  • fail_msg:檢查失敗給出的錯誤信息
  • condition:檢查前置條件,符合該條件才進行檢查。
  • require:該參數是否必須,非必需情況下,若爲空則不檢查
開關&配置化

不同時期,校驗關注的點可能是不一樣的,不同階段,校驗的邏輯也會有所區別。比如初期在問題重災區,我們對未登記的事件,沒有直接發送異常告警,但後期會;在新校驗點試驗階段,其校驗登記會設定爲WARNING或TEST_WARNING,而上線穩定後,可能會改成ERROR。因此,在實現中,就特別注意使用開關或配置,達到功能點的可定製。

2.2.2 可解釋/可分析

校驗發現了問題,是爲了解決問題。因此對結果,要求是可解釋的:在哪個層次,哪個參數發生什麼樣的錯誤,原因是啥;可分析的:分析不同級別、不同維度組合的異常分佈、走勢,便於集中定位和解決問題。

實現上,我們會對校驗的層次、範圍、結果等級作區分,對於每條日誌可能產出多條校驗結果(1+n)。 其中的n,是指不同層次和字段,可能會有ERROR/WARNING/TEST_WARNING狀態;1指的是整體上,會有個最嚴重的狀態彙總。

簡化後的校驗結果格式,是這樣的(包含多個關鍵維度,維度所處層級,問題字段、級別等):

{
    "log_id":"571531737e29586094318d3bf64e9407",
    "timestamp":1556174577000,
    "event_type":"click",
    "sdk_version":"0.7.7",
    "sdk_type":"js",
    "display_url":"url",
    "scope":"OVERALL",
    "field1":"",
    "field2":"",
    "status":"SUCCESS",
    "value":""
}

有了這樣的校驗結果,可以做很多事:埋點錯誤重災區、錯誤趨勢、原因分佈等,實現可解釋和可分析。

2.3 定時監控

除了上線前的把關,事後的監控也是很有必要的。從質量角度,關心規範的實際約束情況;從流量角度,特別關注事件斷流和異常波動情況;另外,業務上有很多約束,也需要去做監控。

基於實時校驗結果,我們做到分鐘級的質量和流量監控,在業務層面,會有小時級的個性化監控。

監控的“低誤報”是一個很重要的考慮點,氾濫的監控等於沒監控,在這點上,我們對監控做了一系列優化,如設定流量門檻、結合歷史流量飽和度判定斷流等。

2.4 專項優化

發現問題是手段,解決問題纔是目的。

對於質量問題,會反饋到業務方去整改;除了業務上,還有許多基礎SDK或開發上的通病問題,需要單獨去做分析,成立專項,集中整改。比如SDK的重複率和丟失率問題,需要具體分析問題,推動底層優化。

這類工作主要是:問題分析>追根溯源>確定解法>持續跟蹤。這裏邊涉及到許多特定場景的細節問題,就不展開講了。

2.5 評估模型

如何去評估質量狀態,是一個值得深思的問題。如果不能正確評價,就會摸不清重點,不知道如何優化,以及狀態是在改善還是惡化。我們的衡量維度目前是這樣的:

需要注意的是,各維度的權重,不應該是一成不變的,而要隨着問題的重點而調整;甚至考慮的問題,也要不斷去做優化,加入新的考量點。

有了一套這樣的評估模型,質量的狀態就可以以“分數”的形式直觀地呈現。對於問題的關鍵點,也可以有重點有方向地去解決。

2.6 質量中心

日常的質量問題,需要統一的呈現和管理,便於業務方有整體的感知,集中解決。

此外,對於彙總信息,也會以日報/週報的形式提醒到。

三、現狀&規劃

在以上介紹的一整套體系化的質量保障工作下,有讚的埋點質量有了大幅度提升。從狀態未知到數字化的衡量;從缺少管理到集中化的呈現,並能提供優化輔助功能;從“不及格”的低質量到絕大部分問題被解決,質量問題已經不是業務分析的絆腳石。

我們的質量保障工作已經取得不錯的成果,並形成良性的循環。但是還有許多可以優化的點:

  • 支持更豐富的校驗功能,將複雜的校驗配置可視化
  • 結合流量預測做監控告警,優化誤報率
  • 評估模型優化,結合現狀,調整維度和權重
  • 更完善的質量中心,集成快捷的優化操作
  • 明確獎懲機制,推動業務方主動關心和優化質量問題,讓前文提到的閉環,順暢運行通過這些方向的努力,相信有讚的埋點質量會持續保持高質量狀態,更有力地爲業務分析保駕護航。

本文轉載自公衆號有贊coder(ID:youzan_coder)

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzAxOTY5MDMxNA==&mid=2455759980&idx=1&sn=f3ba532ad6a3be84e82db6416f858733&chksm=8c686a49bb1fe35f501d98318a5fb23c3d6315b9e0945b7a92f13db18f76fcf93175be21e91e&scene=27#wechat_redirect

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章