不可缺少的程式埋點

farsun發表於2021-09-09

埋點目的

對於本次修改的資料統計分析程式的埋點,只是為了統計資料中出現的一些不易發現的錯誤,全部讓程式主動跑出來。但是隻要是主動丟擲統計資料,都屬於埋點。

資料埋點是資料分析的準備工作,只有埋點了才可以獲得資料進行分析。在做足資料埋點之後,才能拿到想要的目標資料:

  1. 行為資料:時間、地點、人物、互動、互動的內容;
  2. 質量資料:瀏覽器載入情況、錯誤異常等;
  3. 環境資料:瀏覽器相關的後設資料以及地理、運營商等;
  4. 運營資料:PV、UV、轉化率、留存率(很直觀的資料)

整體調整Python專案規範性之後加入錯誤資料埋點就屬於質量資料部分。

埋點方案

埋點分為前端埋點和後端埋點,常見的埋點方案有

  1. 前端程式碼埋點:直接在前端嵌入程式碼收集目標資料
  2. 前端無埋點:常見的前端埋點技術。全部採集,按需選取
  3. 後端程式碼埋點:直接在後端嵌入程式碼收集目標資料

此次主要針對不使用第三方資料分析平臺的專案進行的後端程式碼埋點(適用於資料統計分析監控程式這種場景)

後端埋點的設計必然要考慮以下幾點:

  1. 高靈活:可以隨時隨地手工埋點
  2. 小影響:對原始碼侵入少
  3. 已更新:埋點內容變化時,只需要修改埋點介面,而不能去程式碼中一處一處的修改

在一些公共庫或者封裝的自定義框架裡面不進行埋點,所有的埋點都在業務層。比如資料庫連線池出現連線數溢位的時候錯誤需要經過處理,然後按照自定義的統一風格丟擲相關資訊到業務層,便於業務層判斷公共庫和自定義框架執行時是否有錯誤。

後端埋點具體實施方案

直接在後端指定位置處寫入埋點程式碼收集資料。每個方法中在共享共有資訊這一塊有一些不同。

  1. 每個需要用到傳送訊息的檔案中都import一份配置資訊,然後在需要的地方,根據配置資訊手動埋點。
  2. 將訊息傳送封裝成一個MixIn類,使用繼承混入到各個類中。每次都需要經過建立連線傳送訊息斷開連線。
  3. 將埋點資訊封裝成一個模組,提供全域性的初始化函式和埋點訊息生成函式,在程式入口處呼叫初始化模組的初始化函式進行初始化,然後在程式的任何地方都可以訊息生成函式。此種方法類似於使用第三方資料分析平臺提供sdk時的使用方法。

方案選取:

  • 由於專案是python編寫的,埋點資料傳送到kafka,封裝好的第三方python模組可以採集自己需要一切資訊。因此採用最後一種方式,寫成可插拔的第三方sdk的形式,可以直接封裝一些新增的方法,包含一些可以用的資訊,例如自動採集報錯資訊所在行數。
  • 對於非python專案,提供python指令碼供其他語言程式進行呼叫。例如Erlang編寫的轉推流服務中呼叫Python指令碼丟擲報錯資訊及其他資料。


記得幫我點贊哦!

念念不忘,必有迴響,小夥伴們幫我點個贊吧,非常感謝。

> 我是職場亮哥,YY高階軟體工程師、四年工作經驗,拒絕鹹魚爭當龍頭的斜槓程式設計師。
>
> 聽我說,進步多,程式人生一把梭
>
> 如果有幸能幫到你,請幫我點個【贊】,給個關注,如果能順帶評論給個鼓勵,將不勝感激。

本人所有文章、回答都與版權保護平臺有合作,著作權歸職場亮哥所有,未經授權,轉載必究!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2826662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章