概述
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" }}
測試功能
在配置完成後,您可以使用頁面提供的測試功能來驗證您的判斷邏輯是否正確:
- 點擊「測試」按鈕
- 查看測試結果,確認是否符合預期
- 根據需要調整判斷邏輯
故障排除
常見問題
-
模板解析失敗
- 檢查 Go Template 語法是否正確
- 確認變數名拼寫無誤
-
模板執行失敗
- 檢查是否使用了不存在的標籤或屬性
- 確認數據類型是否匹配
-
事件未按預期刪除
- 確認模板返回值是否為字符串 “true”
- 使用測試功能驗證邏輯
調試建議
- 使用簡單的條件開始測試
- 逐步增加複雜度
- 查看系統日誌了解執行結果
- 利用測試功能驗證邏輯正確性
通過合理使用 Event Drop 處理器,您可以實現精確的事件過濾,減少不必要的告警噪音,提高告警系統的效率。