埋點目的
對于本次修改的數(shù)據(jù)統(tǒng)計分析程序的埋點,只是為了統(tǒng)計數(shù)據(jù)中出現(xiàn)的一些不易發(fā)現(xiàn)的錯誤,全部讓程序主動跑出來。但是只要是主動拋出統(tǒng)計數(shù)據(jù),都屬于埋點。
數(shù)據(jù)埋點是數(shù)據(jù)分析的準備工作,只有埋點了才可以獲得數(shù)據(jù)進行分析。在做足數(shù)據(jù)埋點之后,才能拿到想要的目標數(shù)據(jù):
- 行為數(shù)據(jù):時間、地點、人物、交互、交互的內(nèi)容;
- 質(zhì)量數(shù)據(jù):瀏覽器加載情況、錯誤異常等;
- 環(huán)境數(shù)據(jù):瀏覽器相關的元數(shù)據(jù)以及地理、運營商等;
- 運營數(shù)據(jù):PV、UV、轉(zhuǎn)化率、留存率(很直觀的數(shù)據(jù))
整體調(diào)整Python項目規(guī)范性之后加入錯誤數(shù)據(jù)埋點就屬于質(zhì)量數(shù)據(jù)部分。
埋點方案
埋點分為前端埋點和后端埋點,常見的埋點方案有
- 前端代碼埋點:直接在前端嵌入代碼收集目標數(shù)據(jù)
- 前端無埋點:常見的前端埋點技術。全部采集,按需選取
- 后端代碼埋點:直接在后端嵌入代碼收集目標數(shù)據(jù)
此次主要針對不使用第三方數(shù)據(jù)分析平臺的項目進行的后端代碼埋點(適用于數(shù)據(jù)統(tǒng)計分析監(jiān)控程序這種場景)
后端埋點的設計必然要考慮以下幾點:
- 高靈活:可以隨時隨地手工埋點
- 小影響:對源代碼侵入少
- 已更新:埋點內(nèi)容變化時,只需要修改埋點接口,而不能去代碼中一處一處的修改
在一些公共庫或者封裝的自定義框架里面不進行埋點,所有的埋點都在業(yè)務層。比如數(shù)據(jù)庫連接池出現(xiàn)連接數(shù)溢出的時候錯誤需要經(jīng)過處理,然后按照自定義的統(tǒng)一風格拋出相關信息到業(yè)務層,便于業(yè)務層判斷公共庫和自定義框架執(zhí)行時是否有錯誤。
后端埋點具體實施方案
直接在后端指定位置處寫入埋點代碼收集數(shù)據(jù)。每個方法中在共享共有信息這一塊有一些不同。
- 每個需要用到發(fā)送消息的文件中都import一份配置信息,然后在需要的地方,根據(jù)配置信息手動埋點。
- 將消息發(fā)送封裝成一個MixIn類,使用繼承混入到各個類中。每次都需要經(jīng)過建立連接發(fā)送消息斷開連接。
- 將埋點信息封裝成一個模塊,提供全局的初始化函數(shù)和埋點消息生成函數(shù),在程序入口處調(diào)用初始化模塊的初始化函數(shù)進行初始化,然后在程序的任何地方都可以消息生成函數(shù)。此種方法類似于使用第三方數(shù)據(jù)分析平臺提供sdk時的使用方法。
方案選?。?/p>
- 由于項目是python編寫的,埋點數(shù)據(jù)發(fā)送到kafka,封裝好的第三方python模塊可以采集自己需要一切信息。因此采用最后一種方式,寫成可插拔的第三方sdk的形式,可以直接封裝一些新增的方法,包含一些可以用的信息,例如自動采集報錯信息所在行數(shù)。
- 對于非python項目,提供python腳本供其他語言程序進行調(diào)用。例如Erlang編寫的轉(zhuǎn)推流服務中調(diào)用Python腳本拋出報錯信息及其他數(shù)據(jù)。
參考:
念念不忘,必有回響,小伙伴們幫我點個贊吧,非常感謝。
我是職場亮哥,YY高級軟件工程師、四年工作經(jīng)驗,拒絕咸魚爭當龍頭的斜杠程序員。
聽我說,進步多,程序人生一把梭
如果有幸能幫到你,請幫我點個【贊】,給個關注,如果能順帶評論給個鼓勵,將不勝感激。
職場亮哥文章列表:更多文章
本人所有文章、回答都與版權(quán)保護平臺有合作,著作權(quán)歸職場亮哥所有,未經(jīng)授權(quán),轉(zhuǎn)載必究!