實現前端監控系統的胡思亂想

2021-10-07 14:14:36 字數 1307 閱讀 3522

實現乙個系統,統計前端頁面效能、頁面js報錯、使用者操作行為、pv/uv、使用者裝置等資訊,並進行必要的監控報警。方案你會如何設計,用什麼技術點,什麼樣的系統架構,難點會在**等等??

這個問題,因為確實沒有相關的專案經驗,也確實了解的不多?‍♂️。僅憑平日的一些積累和調研,先記錄一下個人想法吧??

調研了一波發現,其實有很多成熟的前端監控框架,比如webfunny,通過向html頁面中插入一段簡單的js探針**,實現無埋點監控前端頁面的使用者行為。感覺有些 ? ?,接下來就這個話題簡單談談個人看法。

就我目前能力所知,乙個成熟的監控系統,大致可以分為四個階段:日誌採集、日誌儲存、統計分析、監控告警。

腳手架搭建 :理由:

效能監控:使用resource timing api 和 performance timing api,可以計算許多重要的指標,比如頁面效能統計的起始點時間、首屏時間等。

異常監控:前端捕獲異常分為全域性捕獲和區域性捕獲。區域性捕獲作為補充,對某些特殊情況進行捕獲,但分散,不利於管理。所以,我會選擇全域性捕獲的方式,即通過全域性的介面,將捕獲**集中寫在乙個地方。具體在實現專案中,我應該會採用badjs-report,它重寫了 window.onerror 進行上報異常,無需編寫任何捕獲錯誤的**。

前端埋點:埋點的方案有手動埋點,即在需要監控的地方插入監控邏輯,但是工作量可能會很大;還有無埋點,前端自動採集全部事件,上報埋點資料,但是缺點是伺服器壓力會很大。我可能傾向於採用宣告式埋點,將埋點**和具體的業務邏輯解耦,只用關心需要埋點的控制項,並且為這些控制項宣告需要的埋點資料即可,主要是為了降低埋點的成本吧。在dom元素上增添埋點資訊,比如

// key表示埋點的唯一標識;act表示埋點方式

埋點

監控告警:這裡我認為最便捷、高效的方式,就是接入內部的告警組了吧,尤其是在阿里,似乎什麼輪子都有,那可能需要考慮就是觸發告警的閾值和時機了。

我認為,可能整個系統比較複雜的就是如何高效合理的進行監控資料上傳。除了異常報錯資訊本身,還需要記錄使用者操作日誌,如果任何日誌都立即上報,這無異於自造的ddos攻擊。那就需要考慮前端日誌的儲存,日誌如何上傳,上傳前如何整理日誌等問題。

webfunny-無埋點監控

嶽鷹-web前端監控

fundebug - 不放過每乙個bug

error reporting, monitoring, and resolution with bugsnag

前端異常監控-betterjs

深夜的胡思亂想

時間過得好快呀五天都過去了 然而感覺沒什麼起色依舊是乙個什麼都不會的蒟蒻 老師講課聽不懂 講過的題講的時候還記得,並且理解,講完就忘了 感覺自己好失敗呀 看到別人用自己的智慧型一道道刷題,可以為了刷題不顧一切,在同學身邊條理清晰地講題的樣子 覺得自己的努力太少 有些不甘 還是自身的問題有什麼資格抱怨...

忍不住的胡思亂想

我有一千個理由放棄世界。卻沒有乙個理由擁有世界。因為我放棄了世界。世界也不再想來召喚我。我不想有被背叛的感覺。我發過許許多多的誓。卻沒有幾個成立的。無疑的。人是善變的。我不敢想象我會多麼的狼狽。也不願意想象。時間在不斷的流逝。我不知道自己在流逝的時間內乾了什麼。因為忘記了。有些事情是永恆的。但有些事...

關於設計模式的胡思亂想

設計模式是乙個指導,並不強制。有很多地方並不需要設計模式介入,因為設計模式是分離變化,很多 是一次性的,不會變。如果我們一開始寫程式的時候就加入設計模式,這樣就顯得過度設計,既耗時又費力。並且設計模式大多數會增加 量,不必要的設計又有了乙個額外的弊端。設計模式並不能解決所有的問題,都是解決特定的問題...