什么類型的監控,才決定我凌晨要不要起床處理?
之前聊的《多維度立體化監控)》,是非常完善的監控體系,但其中還缺了一環“用戶視角的監控”,這一環,一定程度上決定了:凌晨收到告警,我要不要立刻起床處理。
什么是用戶視角的監控?
把系統內部當作黑盒:
- 用戶怎么訪問系統,用戶視角的監控就怎么訪問系統;
- 用戶調用哪些接口,用戶視角的監控就調用哪些接口;
用戶視角的監控有什么特點?
此類監控的粒度較粗,并不直接監控web-server, service, db, cache…
為什么要有用戶視角的監控?
非用戶視角進行的監控有什么不足?
如上圖所示,立體化監控的八大維度,除了用戶視角的監控,另外七大維度,不管是機器監控,日志監控,接口監控,都是系統內部發起的,當系統外部與系統之間出現問題的時候,例如:
- “某個省的光纖被挖斷”;
- “某條網絡鏈路出現丟包”;
- “某個地域供應商往頁面里又插入小廣告了”;
常態監控是檢測不出來的。
只有站在用戶視角的監控,才能檢測出類似的問題。
凌晨三點,告警短信響了,到底要不要起床檢查系統?
這個問題,是和技術人密切相關的問題。
如何系統設計的合理,不管是任何一臺 nginx, tomcat, service, cache, db 掛了,由于系統的高可用架構設計,理論上都不應該影響一線用戶的訪問。
于是乎,只要用戶視角的監控不告警,是可以第二天再起床處理其他監控的告警的。
畫外音:這幫不靠譜的架構師,每次都說能高可用,任何一個地方掛了,用戶就受影響了。
如何進行用戶視角的監控?
主要有三類方法:
- 用戶所在的地方,租機房布點監控;
- 端(APP/browser)上布點監控;
- 使用第三方監控平臺;
如何租機房布點監控?
如上圖所示,在用戶所在城市租賃機房(只需要一臺服務器),部署監控小程序,對系統進行外網訪問監控,就能夠檢測網絡鏈路,路由延時。
缺點:額,各個城市租賃一臺服務器,成本有點高(不止費用,管理成本也高)。
如何端上布點監控?
如上圖所示,假設用戶使用的是APP產品,可以在APP上部署一個小的監控sdk,定期上報一些數據,根據地域IP訪問的同比環比“趨勢”判定某個地域用戶的網絡情況。
缺點:會損耗用戶一些流量。另外,既然是“趨勢判定”,沒有在自己機房內布點那么精確。
如何使用第三方監控平臺?
既然是每個公司都有的痛點,實施起來又這么麻煩,自然有創業公司做這個事情。
可以購買第三方監控平臺的服務,在配置后臺配置:
- 待監控的頁面,或者http接口;
- 頻率,閾值;
- 告警接收人;
等信息,就能夠快速實時全國各城市,甚至全世界各個國家的用戶視角監控了,非常帥氣。
第三方監控平臺是怎么實現全國,全世界布點監控的?
額,他們租了機房。
缺點:有點貴,一般是按照調用次數來收費的。
簡單總結:
- 用戶視角監控,把系統當作黑盒的一種粗粒度監控;
- 用戶視角監控,能檢測出局部地域的用戶訪問異常;
- 用戶視角監控,有自主租賃機房布點,端上布點趨勢檢測,使用第三方服務三種方式;
知其然,知其所以然。
思路比結論更重要。