夜鶯 v9 PLUS 標籤詞表:把機器維度的標籤(如 ident、IP)對應成業務可讀的中文名/owner/部門,讓告警通知、儀表板、事件列表都顯示人話。

[PLUS] 標籤詞表是夜鶯企業版(PLUS)獨有功能。

概述

標籤詞表 = 一份「外部維度資訊注入到事件標籤」的對應表。

側欄路徑:整合中心 → 標籤詞表,URL /label-mappings

為什麼需要它?告警事件裡通常只能看到 ident=10.99.1.106pod=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-deptk8s-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:按這個順序排查:

  1. 時機:詞表是按「更新詞表頻率」定時抓取的。剛儲存可能還沒抓第一次,等一個週期再看(預設 10 分鐘)。
  2. 主標籤匹配:告警事件裡的標籤 key 要和詞表的「主標籤」完全一致。如果事件裡只有 ident 沒有 instance,詞表是按 instance 配的,就匹配不上。
  3. PromQL 是否真的有標籤:進資料來源頁面手工跑一下 PromQL,確認返回時序帶有期望的標籤。
  4. 啟用開關:詞表必須是啟用狀態。

Q2:詞表資料更新慢,能不能手工觸發立刻重新整理?

A:目前 UI 沒有「手工重新整理」按鈕,只能改「更新詞表頻率」為更短的 cron 來加速一次。臨時需求建議改成 @every 1m,重新整理後再改回正常頻率。

Q3:多個詞表同時存在,覆蓋關係怎麼算?

A:標籤按 key 唯一注入。如果兩個詞表都注入了 owner 這個 key,後處理的覆蓋先處理的(按詞表 ID 順序)。建議設計上讓不同詞表注入不同的標籤 key,避免歧義。

Q4:CSV 類型的詞表怎麼更新?要重新上傳嗎?

A:是的,CSV 是靜態快照。改了 CMDB 後匯出新 csv 重新上傳即可。如果是高頻變化的資料,推薦用 Prometheus 類型 + 把 CMDB 資料 expose 成一個 metric。

參考資料

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