松花皮蛋的黑板報
  • 分享在京東工作的技術感悟,還有JAVA技術和業內最佳實踐,大部分都是務實的、能看懂的、可復現的

掃一掃
關注公眾號

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

博客首頁文章列表 松花皮蛋me 2019-07-08 13:00

當用戶碰到問題時極少會選擇反饋,沉默的是大多數,現在不少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發起解析請求的傳統方式

黑龙江6+1开奖结果查询