事件附加資訊增強(基於查詢)— 告警觸發後,從資料來源查詢資訊並附加為註解,豐富告警內容。
概述
附加資訊增強(Annotation enrich by query data)是一種告警增強的方式。在告警發生後,它能透過關聯查詢的方式,從資料來源中查詢相關資訊,並附加到告警中,提供更豐富的告警資料。
- 有查詢到資料:將資料新增到告警 annotation 中
- 未查詢到資料:正常傳送原告警
這種機制可以增強告警資訊,方便維運人員快速定位告警問題。
使用場景
場景一:指標告警查詢 DB 資料
如果是設定的指標類的告警,可以在告警觸發時,查詢 DB 資料取得更多資訊。比如查詢 Doris 資料來源中的日誌。
場景二:服務回應逾時告警,查詢指標資料
如果是應用層 5XX 告警,可以在告警觸發時,查詢 CPU/記憶體/主機負載指標,並追加到告警訊息中,便於輔助定位問題。
場景三:日誌告警查詢指標資料
如果是設定的錯誤日誌類告警,可以在告警觸發時,查詢經驗指標資料取得更多資訊。比如查詢 Prometheus 中可能與錯誤日誌相關的指標。
設定說明
設定步驟
1. 設定資料查詢

這裡需要選擇資料來源類型,並設定查詢語句進行查詢。資料來源可以在這裡選擇,也可以開啟使用告警事件中的資料來源。 這裡選擇告警事件,主要是方便設定與預覽資料使用,查詢語句中可以將告警事件中的資訊新增為變數。
如果是 Prometheus 資料來源,查詢語句設定可參考:
up{instance=~"{{$labels.instance}}.*"}
如果是 DB 類資料來源,要求 SQL 中新增 limit 子句,並指定資料庫名。查詢語句設定可參考:
SELECT * FROM test_db.ewall_event WHERE event_date > '2025-11-20 17:00:01' and event_type != '{{$labels.app}}' limit 2;
這裡查詢的資料,傳回結果是一個陣列。 強烈建議查詢語句中限制傳回結果數量,否則產生的告警訊息過於龐大,可讀性差。
對於 Doris 資料來源的查詢,強烈建議在查詢中指定一個具體時間範圍,否則就是全表掃描。例如:
SELECT scope_name,message FROM service_app.app_log WHERE message LIKE '%{{$labels.provider}}%' AND timestamp >= DATE_SUB(NOW(), INTERVAL 2 MINUTE) AND timestamp <= NOW() LIMIT 2
2. 資料預覽

這裡可以看到真實使用的查詢語句和查詢資料。如果預覽查不到資料,可以檢查預覽的查詢語句,變數是否被成功渲染。
3. 資料追加

資料追加的設計,主要用於將查詢結果新增到告警訊息中。這裡需要設定追加資料的 key/value。 對於 value 設定,我們支援使用 golang 的範本語法拼接查詢結果。
典型的設定如下:
实例标签: {{ $labels.instance }}
查询结果:{{ range $item := $A }} - {{ $item.handler }} ({{ $item.code }}) {{ end }}
查询1结果:
{{ range $item := $A }} - {{ $item.job }} ({{ $item.value }}) {{ end }}
查询2结果:
{{ range $item := $B }} - {{ $item.job }} {{ toTime $item.timestamp }} ({{ $item.value }}) {{ end }}
$labels 變數引用的是告警事件中的標籤,$A $B 則引用的對應的查詢結果。查詢傳回結果的欄位名稱,可以參考上面的資料預覽結果進行設定。
4. 測試

測試整體設定結果。
注意事項
查詢效能
- 每次告警觸發時都會執行查詢,請確保查詢語句效能良好
- 避免使用複雜的聚合查詢或大時間範圍的查詢
查詢結果數量
- 避免傳回過多資料,產生可讀性極差的告警訊息
資料來源一致
- 若開啟使用告警事件中的資料來源,使用者需自己保證,告警規則中使用的資料來源,與查詢處理器中的資料來源類型比對。例如,在告警規則頁面選擇了 Prometheus 資料來源,那麼它關聯的事件處理器需要也是需要是 Prometheus 類型的資料來源。
