夜鶯 v9 PLUS 標籤詞表:把機器維度的標籤(如 ident、IP)對應成業務可讀的中文名/owner/部門,讓告警通知、儀表板、事件列表都顯示人話。
[PLUS] 標籤詞表是夜鶯企業版(PLUS)獨有功能。
概述
標籤詞表 = 一份「外部維度資訊注入到事件標籤」的對應表。
側欄路徑:整合中心 → 標籤詞表,URL /label-mappings。
為什麼需要它?告警事件裡通常只能看到 ident=10.99.1.106、pod=pay-svc-7f8d9-xkqzm 這種機器/容器維度的硬 ID。但發到值班群裡大家想看的是:
- 這台機器屬於哪個業務/部門?
- 這個 pod 在哪個叢集/環境?
- 這條告警的負責人是誰?
把外部 CMDB / Excel / CloudWatch 維護的維度資訊(部門 / owner / 叢集 / 環境等)配成「標籤詞表」,夜鶯會自動按主標籤匹配,把對應的欄位注入到告警事件標籤裡。最終通知範本和儀表板裡都能用 {{.TagsMap.dept}} 這種引用。
舉例:
- 詞表來源
node_meta{instance, dept, owner, env}這個 Prometheus 指標; - 主標籤設為
instance; - 一條告警事件觸發時 instance=10.99.1.106 ,詞表自動把
dept=基礎平台、owner=張三、env=test注入到事件標籤裡。
新建 / 編輯標籤詞表

表單分為 2 個區域:
① 基礎設定
| 欄位 | 必填 | 說明 |
|---|---|---|
| 名稱 | 是 | 詞表辨識名,建議見名知意,如 cmdb-host-dept、k8s-pod-owner |
| 授權團隊 | 是(多選) | 哪些團隊可以管理 / 檢視這份詞表,做權限隔離 |
| 啟用 | 預設開 | 關掉後不再更新詞表內容,已注入到事件裡的標籤不受影響 |
| 備註 | 否 | 多寫一點 — 詞表關停後接手人能看懂 |
② 資料來源
| 欄位 | 必填 | 說明 |
|---|---|---|
| 類型 | 是 | 3 種:Prometheus(從指標 + label 中取)、CSV(上傳 csv 檔案)、CloudWatch(AWS 資源標籤) |
| 更新詞表頻率 | 是 | cron 表達式,預設 @every 10m;CMDB 資料更新慢的可以放到 @every 1h |
| 設定方式 | 是 | 「使用已有資料來源」 直接複用 /datasources 裡的 Prometheus 實例;「直接設定」 單獨填一份連線資訊(適用於詞表資料來源不進資料來源列表的場景) |
| 資料來源 | 是 | 設定方式選「使用已有」時顯示 |
| PromQL | 是(Prometheus 類型) | 查詢語句,要讓返回的時序帶有你要做對應的所有 label。例:node_meta{job="cmdb"} 返回標籤集合 {instance, dept, owner, env, ...} |
| 詞表標籤擷取 | 否 | 選要從查詢結果裡保留的標籤(白名單)。不選預設全部保留 |
| 主標籤(用於查詞表) | 是 | 用哪個標籤當「查詢鍵」匹配事件。例:選 instance,則事件裡只要有 instance=... 就會觸發匹配 |
填好後點 詞表預覽 按鈕,會用目前設定去查一次資料來源,把「主標籤值 → 其他標籤」的對應列表展示出來 — 儲存前一定先預覽,確認結果是不是你想要的。
Prometheus 類型的關鍵約束:PromQL 必須返回有標籤的時序(一般是元資訊指標,如 Categraf 的
node_meta或 cAdvisor 的kube_pod_info)。如果只返回{value=...}沒有標籤,詞表會是空的。
CSV / CloudWatch 類型
- CSV:上傳一份 .csv 檔案,第一列是主標籤值,後續列是要注入的標籤(首行作為標籤名)。適合 CMDB 沒介面、臨時維護一份 Excel 的情況。
- CloudWatch:從 AWS 資源標籤拉取,主要適合 AWS 環境下用 EC2/RDS Tag 做對應。需要先在 資料來源 裡配好 CloudWatch 接入。
在告警和儀表板裡使用
詞表儲存並生效後(首次抓取由「更新詞表頻率」決定,最長等一個週期),所有後續觸發的告警事件都會自動帶上注入的標籤。常見用法:
- 通知範本:
{{.TagsMap.dept}}引用部門、{{.TagsMap.owner}}顯示負責人。例:訊息開頭加一行值班聯繫:{{.TagsMap.owner}} ({{.TagsMap.dept}})。 - 告警規則的標籤過濾:在告警規則的「事件標籤」裡加
dept = 基礎平台,可以做團隊級別的規則隔離。 - 儀表板變數:儀表板的 label 變數也能識別詞表注入的標籤,用於切片/分組展示。
- 聚合規則:活躍告警 的聚合規則範本可以用
{{.TagsMap.dept}}把整個平台告警按部門收斂。
常見問題
Q1:詞表儲存後告警標籤沒自動注入,為什麼?
A:按這個順序排查:
- 時機:詞表是按「更新詞表頻率」定時抓取的。剛儲存可能還沒抓第一次,等一個週期再看(預設 10 分鐘)。
- 主標籤匹配:告警事件裡的標籤 key 要和詞表的「主標籤」完全一致。如果事件裡只有
ident沒有instance,詞表是按instance配的,就匹配不上。 - PromQL 是否真的有標籤:進資料來源頁面手工跑一下 PromQL,確認返回時序帶有期望的標籤。
- 啟用開關:詞表必須是啟用狀態。
Q2:詞表資料更新慢,能不能手工觸發立刻重新整理?
A:目前 UI 沒有「手工重新整理」按鈕,只能改「更新詞表頻率」為更短的 cron 來加速一次。臨時需求建議改成 @every 1m,重新整理後再改回正常頻率。
Q3:多個詞表同時存在,覆蓋關係怎麼算?
A:標籤按 key 唯一注入。如果兩個詞表都注入了 owner 這個 key,後處理的覆蓋先處理的(按詞表 ID 順序)。建議設計上讓不同詞表注入不同的標籤 key,避免歧義。
Q4:CSV 類型的詞表怎麼更新?要重新上傳嗎?
A:是的,CSV 是靜態快照。改了 CMDB 後匯出新 csv 重新上傳即可。如果是高頻變化的資料,推薦用 Prometheus 類型 + 把 CMDB 資料 expose 成一個 metric。