主動監測在APM中應用的一些思考

圖片描述

文章來源:www.liangsonghua.me
做者介紹:京東資深工程師-梁鬆華,長期關注穩定性保障、敏捷開發、JAVA高級、微服務架構前端

當用戶碰到問題時極少會選擇反饋,沉默的是大多數,如今很多APP好比知乎都提供了搖一搖彈出用戶反饋入口,減小進入功能模塊的時間成本,不過遺憾的是,針對同一個問題一百我的有一百種描述方法,用戶反饋的語法分析和文本分類是一個大工程。另外經過排查傳統基礎層的方法很難快速定位到問題,好比運營商光纜被挖斷,致使某地區CDN圖片異常告警居高不下,因爲用戶到後端資源的不透明性,問題可能出如今緩存配置多是由於小運營商非法調度也可能出如今源站,當你排查一圈後忽然恢復了,諸如此類問題,經過主動監測能夠快速定位到問題後端

那麼什麼是主動監測呢?主動監測是使用SDK在APP編譯或者運行時自動地對代碼進行注入下發監測任務,模擬用戶真實請求,而後動態採集上報數據的一種技術,主動監測能夠根據須要均衡採集,避免全採樣或者頻繁上報數據致使用戶移動數據流量的流失,它還支持ping、traceroute、nslookup、抓包等網絡性能問題定位的手段,另外能夠提供完整的訪問瀑布圖包括錯誤元素緩存

主動監測能夠用於大網波動感知、CDN監控、網絡劫持監測安全

大網波動感知比較好理解,就是經過不一樣省份不一樣運營商的用戶去探測訪問節點,而後獲得各地區到各運營商的平均延遲和丟包狀況,從而判斷區域間鏈路故障狀況網絡

經過主動監測可讓CDN服務更加透明,能夠考覈前期選型、後期質量達標狀況,能夠評估變動效果,好比回源使用https、調整加速資源、調整解析調度策略等變動對用戶頁面加載速度的影響,能夠檢測出現異常時是否由CDN引發的,我以前碰到過一塊兒支付成功頁證書鏈接不安全的問題,因爲下發資源是千人千面的,同時JS回調中混着非京東域名圖片鏈接,傳統排查方法在較爲低效。另外在大促高峯時期,可能須要藉助第三方CDN提供商抗量,咱們能夠監測對比各三方的加速效果,包括但不限於可用率、下載速度、覆蓋率、DNS解析時間、首包時間、建連時間,同時能夠監測第三方證書配置狀況架構

最後說說網絡劫持監測,流量劫持通常是經過鏈路劫持插入特定報文或者搶答,另一種是DNS劫持,它返回非真實網站IP地址,這兩種都會使得客戶端獲取到錯誤數據,進而顯示廣告或者點擊彈窗跳轉,網上有一個前端神器Subresource Integrity,它是經過生成文件的惟一hash值進行對比校驗的,可是對於大致量公司來講,涉及到多團隊協做推動和後期新增模塊約束保證,難度比較大,這個時候能夠藉助主動監測監控和處理劫持問題,劫持數據返回時間會比正常的時延低一個級別,TCP握手時候的TTL返回值會明顯不一致,咱們能夠利用這些特色進行異常檢測,另外能夠利用白名單機制維護元素域名白名單、主機IP白名單、CNAME信息,可是會形成APP動態加載配置數據膨脹,須要必定的取捨,重點保障核心利益域名微服務

DNS劫持涉及到買賣流量這個灰色產業鏈,想避免DNS劫持的話儘可能不要使用運營商默認的DNS,可使用移動解析(HttpDns),它基於HTTP協議向公司的DNS服務發送域名解析請求,替代了基於DNS協議向運營商Local DNS發起解析請求的傳統方式性能

文章來源:www.liangsonghua.me
做者介紹:京東資深工程師-梁鬆華,長期關注穩定性保障、敏捷開發、JAVA高級、微服務架構網站

相關文章
相關標籤/搜索