概述

Event Drop 處理器是一個靈活的事件過濾工具,允許您根據自訂的邏輯條件來決定是否刪除特定的告警事件。當標籤過濾和屬性過濾都無法滿足您的需求時,可以使用此處理器實現更加複雜的過濾邏輯。

工作原理

Event Drop 處理器使用 Go Template 語法來編寫判斷邏輯:

  • 如果模板執行結果為 true,則刪除該事件
  • 如果模板執行結果為 false 或其他值,則保留該事件

配置方法

1. 選擇處理器類型

在告警規則配置頁面中,選擇 “Event Drop” 作為處理器類型。

2. 編寫判斷邏輯

在判斷邏輯輸入框中,使用 Go Template 語法編寫您的過濾條件。

可用變數

在模板中,您可以使用以下預定義變數:

變數 描述 示例用法
$event 整個事件對象 $event.RuleName
$labels 事件的標籤映射 $labels.instance
$value 觸發值 $value

使用示例

示例1:根據標籤值過濾

{{ if eq $labels.service "mon" }}true{{ else }}false{{ end }}

此配置會刪除所有標籤 service 為 “mon” 的事件。

示例2:根據觸發值過濾

{{ if lt $value 10 }}true{{ else }}false{{ end }}

此配置會刪除所有觸發值小於 10 的事件。

示例3:根據實例名稱過濾

{{ if hasPrefix $labels.instance "test-" }}true{{ else }}false{{ end }}

此配置會刪除所有實例名稱以 “test-” 開頭的事件。

示例4:組合條件過濾

{{ if and (eq $labels.env "dev") (lt $value 5) }}true{{ else }}false{{ end }}

此配置會刪除環境為 “dev” 且觸發值小於 5 的事件。

常用模板函數

比較函數

  • eq: 等於 - {{ eq $value 100 }}
  • ne: 不等於 - {{ ne $labels.env "prod" }}
  • lt: 小於 - {{ lt $value 50 }}
  • le: 小於等於 - {{ le $value 50 }}
  • gt: 大於 - {{ gt $value 100 }}
  • ge: 大於等於 - {{ ge $value 100 }}

邏輯函數

  • and: 邏輯與 - {{ and (eq $labels.env "prod") (gt $value 100) }}
  • or: 邏輯或 - {{ or (eq $labels.env "dev") (eq $labels.env "test") }}
  • not: 邏輯非 - {{ not (eq $labels.env "prod") }}

字符串函數

  • hasPrefix: 前綴匹配 - {{ hasPrefix $labels.instance "web-" }}
  • hasSuffix: 後綴匹配 - {{ hasSuffix $labels.instance "-prod" }}
  • contains: 包含字符串 - {{ contains $labels.message "error" }}

測試功能

在配置完成後,您可以使用頁面提供的測試功能來驗證您的判斷邏輯是否正確:

  1. 點擊「測試」按鈕
  2. 查看測試結果,確認是否符合預期
  3. 根據需要調整判斷邏輯

故障排除

常見問題

  1. 模板解析失敗

    • 檢查 Go Template 語法是否正確
    • 確認變數名拼寫無誤
  2. 模板執行失敗

    • 檢查是否使用了不存在的標籤或屬性
    • 確認數據類型是否匹配
  3. 事件未按預期刪除

    • 確認模板返回值是否為字符串 “true”
    • 使用測試功能驗證邏輯

調試建議

  1. 使用簡單的條件開始測試
  2. 逐步增加複雜度
  3. 查看系統日誌了解執行結果
  4. 利用測試功能驗證邏輯正確性

通過合理使用 Event Drop 處理器,您可以實現精確的事件過濾,減少不必要的告警噪音,提高告警系統的效率。

更新时间 2025-03-12

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