事件抑制(基於查詢)— 進階抑制機制,告警觸發時先執行資料查詢,根據結果決定是否抑制。

概述

「按查詢資料抑制」(Inhibit by Query Data)是一種進階的告警抑制機制。當告警觸發時,系統會先執行設定的資料查詢,根據查詢結果決定是否抑制該告警:

  • 有查詢結果:抑制告警,不傳送通知
  • 無查詢結果:正常傳送告警通知

這種機制可以實現更加靈活和智慧的告警抑制策略,避免在特定條件下產生冗餘告警。

使用場景

場景一:基於即時狀態的告警抑制

當某個服務正在維護或已知存在問題時,透過查詢維護標記資料來抑制相關告警。

範例:如果監控系統中存在 maintenance_mode{service="app"} 指標且值為 1,則抑制該服務的所有告警。

場景二:依賴關係的串聯抑制

當上游服務已經告警時,抑制下游服務的相關告警,避免告警風暴。

範例:資料庫伺服器已經產生告警時,抑制所有依賴該資料庫的應用服務的連線失敗告警。

場景三:動態閾值判斷

結合即時查詢資料,實現更複雜的抑制邏輯。

範例:僅當叢集中其他節點正常執行時才抑制單節點告警,避免在全域故障時錯誤抑制。

設定說明

設定介面

設定介面截圖

設定步驟

1. 選擇抑制類型

在告警規則的抑制設定中,選擇 「Inhibit by Query Data」(按查詢資料抑制)類型。

2. 設定告警過濾條件

定義需要被抑制的告警必須滿足的條件,支援兩種過濾方式:

標籤過濾

根據告警的標籤(Labels)進行比對。

  • 標籤:選擇或輸入標籤名稱
  • 運算子:支援 ==(等於)、!=(不等於)、=~(正則比對)、!~(正則不比對)
  • 標籤值:輸入比對的值

範例

标签: rulename
运算符: ==
标签值: 告警
屬性過濾

根據告警的屬性(Attributes)進行比對。

範例

属性: 业务组
运算符: ==
属性值: n9e

提示:可以新增多個過濾條件,所有條件必須同時滿足(AND 關係)。

3. 設定查詢資料

設定需要執行的資料查詢,當查詢傳回至少一條資料時,告警將被抑制。

查詢

資料來源類型

選擇資料來源類型,目前支援 Prometheus。

資料來源

選擇具體的資料來源實例。

查詢設定
Prometheus 查詢

在「內建指標」輸入框中填寫 PromQL 運算式。

支援範本變數

  • {{$labels.xxx}}:引用告警的標籤值
  • {{$value}}:引用告警的觸發值
  • {{$event}}:引用整個告警事件物件

範例

mem_active{ident="{{$labels.ident}}"}

該查詢會查詢與告警事件相同 ident 標籤的 mem_active 指標,如果查詢到資料,則抑制告警。

4. 儲存設定

完成以上設定後,點選「儲存」按鈕使設定生效。

設定範例

範例 1:基於主機存活狀態抑制告警

場景:當主機的 mem_active 指標有資料時(表示主機存活),抑制該主機的網路告警。

設定

  1. 標籤過濾

    rulename == 网络告警
    
  2. 查詢設定

    • 資料來源類型:Prometheus
    • 資料來源:prom
    • PromQL:mem_active{ident="{{$labels.ident}}"}

邏輯:如果能查詢到該主機的記憶體活動指標,說明主機正常執行,此時的網路告警可能是誤報,因此抑制。

範例 2:維護視窗期間抑制告警

場景:透過維護模式標記抑制正在維護的服務告警。

設定

  1. 標籤過濾

    service == web-app
    
  2. 查詢設定

    • 資料來源類型:Prometheus
    • 資料來源:prom
    • PromQL:maintenance_mode{service="{{$labels.service}}"} == 1

邏輯:如果該服務的維護模式標記為 1,則抑制所有相關告警。

注意事項

查詢效能

  • 每次告警觸發時都會執行查詢,請確保查詢語句效能良好
  • 避免使用複雜的聚合查詢或大時間範圍的查詢

範本變數

  • 範本變數在查詢執行時會被取代為實際值
  • 如果標籤不存在,{{$labels.xxx}} 會被取代為空字串
  • 建議在設定前確認告警事件包含所需的標籤

過濾條件

  • 標籤過濾和屬性過濾是 AND 關係,必須全部滿足

資料來源可用性

  • 查詢失敗時,告警不會被抑制,會正常傳送通知

最佳實踐

  1. 先測試後上線:使用「測試」功能驗證設定是否符合預期
  2. 合理使用屬性過濾:利用屬性過濾可以更精確地定位需要抑制的告警
  3. 避免過度抑制:確保抑制邏輯不會誤殺重要告警
  4. 文件化設定:在規則備註中說明抑制邏輯,方便團隊維護

常見問題

Q:抑制的告警是否會儲存到歷史記錄?

A:被抑制的告警會儲存到歷史告警記錄中。

Q:如何除錯查詢設定?

A:可以使用「測試」按鈕模擬告警觸發,檢視查詢執行結果和抑制判斷邏輯。

Q:查詢逾時會影響告警傳送嗎?

A:不會。如果查詢逾時或失敗,告警會正常傳送,不會被抑制。

參考資料

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云