天天看點

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

背景與趨勢

這部分首先介紹了數字化下系統運維對工程師挑戰(包括一專多能、需要更多觀測分析),然後介紹了可觀測的定義(更早、更全面資料的采集與觀測),再到可觀測系統的挑戰(各種監控系統并存孤立以及門檻高),并總結了傳統告警運維系統的六大痛點。詳細内容可以參考

這篇

的背景部分,這裡不再贅述。

被觀測系統的複雜性:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

各種孤立并存的監控系統:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

傳統監控運維系統的痛點:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

方案基礎

本節介紹了整體方案的基礎前提:一個統一的可觀測平台。以便在這個基礎上再去解決告警風暴、監控品質差、通知單一重複等問題。

典型的可觀測平台解決方案

基于上一節的背景和趨勢介紹,我們可以看到一個典型的可觀測平台應該具備這樣的特性:

  • 對包括日志、時序、鍊路、跟蹤和事件的統一的存儲、處理、分析、展示以及響應的基礎中台能力。
  • 支撐上層業務方(開發營運、監控、安全、使用者營運)的觀測分析需求(與定制能力)。
  • 同時可以對接上下遊系統的生态支援。
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

資料統一接入與查詢分析

這樣的可觀測平台,具備将各種異構的資料(日志、名額、時序、事件等)進行統一存儲和管理的能力:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

基于統一的存儲,我們可以建構統一的查詢和分析文法,進而一套文法适配不同的資料,并且讓不同的資料之間進行聯合查詢也變成了可能。如圖,可以以标準SQL為基礎,進行了部分DSL擴充和 SQL 函數擴充,并融合了PromQL,進而讓不同類型的資料查詢和分析變得統一。

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

例如下面的例子:

  • 我們可以通過标準 SQL 語句對日志進行查詢分析
  • 通過 PromQL 擴充的 SQL 函數對名額資料進行分析
  • 再通過嵌套查詢,對名額資料的分析結果進行再聚合
  • 還可以進一步通過機器學習函數,給查詢和分析賦予 AI 的能力
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

告警統一監測與管理通知

在雲原生可觀測性平台上我們就提供了一套現代化的智能運維告警系統。新版告警提供對日志、時序等各類資料的告警監控,亦可接受三方告警,對告警進行降噪、事件管理、通知管理等

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

可以看到新版告警由4個子產品組成:

  • 告警監控:對存儲在平台中的各類資料進行監控,産生高品質的告警。
  • 開放告警:接收平台外的現有十幾種監控系統的告警(例如Zabbix、Grafana告警、Promethues告警等)
  • 告警管理:對上述兩種方式的告警進行集中管理:包括路由合并、降噪抑制、事務管理等。
  • 通知管理:對告警進行人性化通知多管道通知,包括動态分派、告警更新、節假日與值班組等。

統一的可觀測态勢大盤

在此基礎上我們就可以得到基于業務的統一的告警态勢大盤:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

智能監控

有了一個可觀測基礎平台,現代化告警系統就可以從兩個環節對告警降噪進行治理:

  1. 首先是告警監控環節,也就是告警産生的源頭進行降噪。
  2. 其次是告警管理環節,也就是對來源前一個環節(告警監控+開放告警接收的三方告警),進行全局基于業務的降噪。

傳統告警監控的困難和挑戰

這裡我們詳細解讀一下傳統告警監控的挑戰:

  • 監控對象和監控名額急劇增加。如果要全方位的覆寫這些監控對象和名額,需要配置大量的監控規則,并且它們的門檻值也可能是各不相同的,是以會有很大的工作量。
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考
  • 監控規則無法自适應:基于人為定義的門檻值,很大程度上依賴于人的經驗,随着系統的演化和業務的發展,這些規則往往不能很好地适應,由此不可避免地導緻漏報、誤報等問題。無法做到資料的自适應,是以需要人為介入,不斷調整門檻值。例如下圖:
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考
    • 上面是一個名額,有規則性的毛刺。如果通過門檻值來判斷是否需要告警,當一個毛刺點異常的時候,可能由于不滿足門檻值,導緻告警漏報。
    • 下面是另一個名額,可能随着系統的進化,新版本釋出之後,該名額的值會發生一個陡增。此時如果是固定門檻值告警的話,會将陡增之後的所有資料都認為是異常點,導緻告警頻繁觸發。此時需要人為介入去調整門檻值。
  • 監控規則泛化能力弱:不同的業務、甚至同一業務的不同版本,名額的規律性、門檻值都有可能是不同的。是以我們需要為不同的業務、不同的版本去做監控規則的适配。例如下圖,雖然兩個名額整體上有着比較相似的波動規律,但是由于它們的取值範圍、以及局部的抖動情況會有差異,是以需要分别去做監控。
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

智能監控1:智能巡檢

基于上述問題,智能巡檢可以一定程度的優化,其具備以下幾個優勢:

  • 智能前置:現在有很多系統是在告警觸發後,進行智能的管理,但是這無法避免告警誤報、漏報等問題。智能巡檢可以将 AI 的能力前置到監控層,進而在源頭上避免潛在的告警問題,挖掘出真正有效的資料價值。
  • 監控自适應:可以基于曆史資料自動學習和進化,進行動态的門檻值判斷,進而讓告警更加精準。另外對資料的學習也是實時的,可以更加快速地發現異常問題。
  • 動态回報:除了自動學習之外,還可以通過使用者的回報,對告警進行确認或者誤報标記,将 AI 能力與人的經驗相結合,相輔相成,進一步完善模型,減少誤報。

在一些資料波動比較大,名額沒有固定門檻值的場景下(例如使用者通路量、外賣訂單量等),智能巡檢的優勢可以得到很好的展現。例如下圖,名額本身呈現出周期性地波動,假如一個新版本上線了之後,由于bug導緻網絡流量異常抖動。如果基于固定門檻值來判斷,此時處于名額值的上下界範圍内,就很難發現問題;但是基于智能巡檢,就可以很容易地判定這是一個異常點。

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

實作思路

智能巡檢的基本思路如下:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

我們采用無監督學習算法,自動識别實體的資料特征,根據資料特征選取不同的算法組合,針對資料流實時模組化,完成異常任務檢測。并根據使用者的打标資訊(對告警進行确認或者誤報回報),訓練監督模型,對算法進行不斷優化,進而提高監控的準确率。

目前異常檢測我們使用了兩種算法,它們的比較如下:

流式圖算法 流式分解算法
适用場景 适用于一般性時間序列的異常檢測場景,包括:
  • 機器級别的監控名額的異常巡檢,例如CPU占用率、記憶體使用率、硬碟讀寫速率等。
  • 業務名額的異常巡檢,例如QPS、流量、成功率、延時等。
  • 黃金名額的異常巡檢。
适用于對具有周期性的資料序列進行巡檢,且要求資料的周期性較為明顯。例如遊戲的通路量、客戶的訂單量。
相關論文 Time-Series Event Prediction with Evolutionary State Graph RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series

智能監控2:增強型規則引擎監控

對于時序類異常檢測,智能巡檢可以比較好的解決。但對于以下類型的監控,還需要使用增強型規則引擎來減少噪音:

  • 經典類監控:确定性的經典規則(例如基于關鍵字異常的監控)、需要支援多目标、自動恢複等經典功能的監控(例如某台機器當機監控以及上線的恢複通知),并在此基礎上使用黑白名單、機器學習算法降噪的監控。
  • 業務類監控:基于業務的定制化程度高的監控,例如大量異常非常見客戶國家的通路,某些非VIP客戶的購買異常記錄等。
  • 安全類監控:基于安全規則的監控(例如海量資料庫拖庫監控)、配置合規審計監控(例如建立了公網IP的ECS網絡主機執行個體需要告警)等。

使用基于統一的查詢分析引擎以及擴充的告警引擎(包括多源協同、資料感覺和靈活規則等),可以很好的覆寫這類場景并降低噪音:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

智能告警管理

智能告警管理從以下出發點進行降噪:

  1. 智能監控環節可以較好的降低噪音,但來源于三方的告警一般是未經過這樣的處理,是以需要在智能告警管理環節進行降噪。
  2. 智能告警監控環節在宏觀方面還是可能也産生較多告警(例如多個業務并行),告警智能管理也可以進一步合并或協同降噪。
  3. 全局角度,客戶還需要借助智能管理完成在分派(值班)、更新、通知管道、節假日感覺層面的進一步降噪優化。

我們可以通過告警智能管理來解決上述問題,如圖所示:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

智能降噪機制

告警智能降噪包含以下幾種機制:

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考
  • 智能合并可以有效的将重複的大量的告警合并,減少告警風暴。例如某服務的2個主機從20:00和20:01分别每分鐘不停觸發高CPU告警,收到2小時125條告警,經過降噪僅發送4次。
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考
  • 關聯抑制可以有效的将許多關聯的告警自動抑制,減少告警風暴,例如某K8S叢集發生OOM後,自動發送一條告警,而該叢集上海量的上層應用告警會被自動抑制:
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考
  • 靈活靜默可以根據配置在特定時間、節假日等屏蔽掉特定的告警通知,減少告警風暴的幹擾:
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

動态分派

動态分派保證了有效觸達外,也可以通過以下方式降噪:

  • 多管道:支援短信、語音、郵件、釘釘、企業微信、飛書、Slack等多種通知管道,同時還支援通過自定義 Webhook 進行擴充。可以根據告警的嚴重度和特定場景動态以合适的管道通知到人。
  • 動态通知:可以根據告警屬性動态分派通知,将正确的告警在正确時間給正确的人,有效減少無效通知。例如:測試環境的告警,通過短信通知到張三,并且隻在工作時間通知;而生産環境的告警,通過電話通知到張三和李四,并且無論何時,都要進行通知。
  • 通知更新:長時間未解決的告警要進行更新,而不是持續的無效重複通知。例如某告警觸發後,通過短信通知到了某員工,但是該問題長時間未被處理,導緻告警一直沒有恢複,此時需要通知更新,通過語音的方式通知到上一層負責的上司。
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

值班管理

許多運維團隊由多人負責告警的處理,可以通過值班管理按需分派通知,減少對非值班的同學的告警噪音影響。值班管理在正常功能外提供了靈活的機制進一步提高降噪效果:

  • 節假日感覺(例如法定節假日與自定義感覺換班)
  • 工作時間感覺(例如自定義上班時間才換班)
  • 代班與以上或細膩度支援(例如特定時間段的換班)
可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

總結

本議題介紹了在一個現代化的可觀測平台上告警降噪的整體方案與技術實踐,平台提供了包括日志、時序、鍊路、事件等統一的資料接入與存儲、提供了統一的查詢分析文法,并在此基礎上分别從智能告警監控(包括智能巡檢與加強引擎)與智能告警管理(包括智能降噪、動态分派與值班管理等)環節展開介紹了如何解決傳統告警的告警風暴、監控品質低、不人性化等典型問題。

參考

可觀測平台下告警降噪實踐——GOPS分享背景與趨勢方案基礎智能監控智能告警管理總結參考

繼續閱讀