事件標籤重寫處理器(Relabel)— 對告警事件標籤進行刪除、保留、重新命名、合併與值修改。

概述

Relabel 事件處理器是 Nightingale 告警通知流程中對事件標籤進行重新標記與處理的重要環節。該處理器的功能與在資料上報時對資料進行 relabel 類似,允許您對告警事件的標籤進行各種操作,包括刪除、保留、重新命名、合併與修改標籤值等。

主要功能

  • 標籤刪除:刪除不需要的標籤(labeldrop)
  • 標籤保留:只保留指定的標籤(labelkeep)
  • 標籤重新命名:對標籤 key 進行重新命名(labelmap)
  • 標籤合併:根據已有標籤建構新標籤(replace)
  • 值修改:修改標籤的 value 內容(replace)

使用步驟

1. 選擇處理器類型

在告警規則設定頁面,選擇「處理器」類型為 Relabel

2. 設定操作類型

根據需求選擇合適的 Action:

  • 刪除標籤:選擇 labeldrop
  • 保留標籤:選擇 labelkeep
  • 重新命名標籤:選擇 labelmap
  • 修改/建構標籤:選擇 replace

3. 設定比對條件

regex 欄位中設定標籤 key 的比對條件,支援正則表示式。

4. 設定取代內容(如需要)

根據選擇的操作類型,設定相應的 replacement、target_label 等參數。

5. 測試設定

儲存設定後,新的告警事件將按照設定的規則進行標籤處理。

使用場景與設定範例

場景 1:刪除不需要的標籤

img

如上圖中的告警事件,有非常多的標籤,如果有的標籤我們不太關心想去掉,可以透過 labeldrop 操作將這些標籤 drop 掉,比如如果想刪掉 listening_10 和 host 標籤,可以設定如下:

設定參數:

  • Action: labeldrop
  • Regex: listening_10|host

img

儲存之後,listening_10 和 host 會被刪除。

img

場景 2:只保留指定的標籤

img

如上圖中的告警事件,有非常多的標籤,如果只想保留我們關心的標籤,可以透過 labelkeep 操作,比如我們只想保留 service、name 和 addr 標籤,可以設定如下:

設定參數:

  • Action: labelkeep
  • Regex: service|^name$|addr

注意:name 這樣寫 ^name$ 是因為其他標籤包含了 name,進行嚴格比對

image-20240717112440461

儲存之後,新的告警事件,只會保留 service|name|addr 三個標籤。

image-20240717112033348

場景 3:重新命名標籤 key

img

如上圖,想將 __name__ 重新命名為 name,則可以使用如下設定:

設定參數:

  • Action: labelmap
  • Regex: __(name)__
  • Replacement: $1 或固定值 name

新的 name 標籤增加之後,之前的 __name__ 標籤還會保留,需要再設定一個 labeldrop 刪除掉。

img

儲存之後,新的告警事件,__name__ 會改為 name。

img

場景 4:建構新的標籤

img

如上圖的告警事件,如果我們想建構一個包括了 ident+listening_10 內容的新標籤,我們可以使用 replace 操作,將 ident+listening_10 合併到一起:

設定參數:

  • Action: replace
  • Target_label: addr
  • Source_labels: ["ident", "listening_10"]
  • Separator: :

img

儲存之後,新的告警事件,會有一個新的 addr 標籤。

img

場景 5:修改標籤的 value

img

如上圖,如果我們修改 addr 標籤,將連接埠部分去掉,可以使用 replace 操作:

設定參數:

  • Action: replace
  • Target_label: addr
  • Source_labels: ["addr"]
  • Regex: ([^:]+):.*
  • Replacement: ${1}

img

儲存之後,新的告警事件,addr 中的連接埠會去掉。

img

常見使用場景

1. 標籤清理

清理告警事件中的冗餘標籤,只保留業務關心的核心標籤。

2. 標籤標準化

統一標籤命名規範,將不規範的標籤 key 重新命名為標準格式。

3. 環境區分

透過標籤合併,建構包含環境資訊的新標籤,便於告警分類。

4. 敏感資訊處理

去除或修改包含敏感資訊的標籤內容。

注意事項

  • 正則表示式:所有比對條件都支援正則表示式,確保語法正確
  • 操作順序:多個 relabel 操作按設定順序執行,注意操作間的依賴關係
  • 標籤保留:使用 labelmap 重新命名標籤時,原標籤仍會保留,需額外設定 labeldrop 刪除
  • 充分測試:建議在正式環境使用前進行充分測試
  • 效能影響:複雜的正則表示式可能影響處理效能,建議最佳化比對條件

常見問題

Q1:設定了 Relabel 但告警事件標籤沒變,怎麼排查?

A:依此順序:

  1. 比對條件:regex 寫錯的機率最大 — 用 即時查詢 看實際事件標籤,對照正則比對;
  2. 操作類型選錯:labelmap 不刪原標籤,需要再設定一個 labeldrop;
  3. 處理器順序:在告警規則的「流水線設定」裡,relabel 處理器需要在告警通知節點之前;
  4. 生效時機:Relabel 處理新觸發的事件,已經存在的事件不會被回溯重寫。

Q2:labelkeep 和 labeldrop 都用了,誰優先?

A:按處理器設定順序執行。先 labeldrop 再 labelkeep 等於「先刪一批,再只保留一批」,最終留下交集。建議別同時用,選一個語意清晰的就行。

Q3:標籤 value 含特殊字元(如 []{}、空格),正則怎麼寫?

A:

  • 在 regex 裡對特殊字元跳脫\[\{\ (空格通常不用跳脫);
  • 或者用更寬鬆的 .* 比對;
  • ^$ 限定邊界避免誤比對,如 ^name$(精確比對 name)。

Q4:可以從其他標籤的 value 提取部分字串成為新標籤嗎?

A:可以 — 用 replace + 正則擷取群組:

Action: replace
Source_labels: [original_label]
Regex: ^([a-z]+)-(\d+)$       # 捕获前缀和数字
Target_label: prefix
Replacement: ${1}              # 引用第 1 个捕获组

效果:original_label=web-01 → 新增 prefix=web 標籤。

參考資料

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