夜鶯監控中的業務組概念和設計初衷

夜鶯中要管理很多東西,比如:告警規則、抑制規則、訂閱規則、自癒指令稿、儀表板,在建立這些東西的時候,都要先選擇一個業務組,因為這些東西都要歸屬到某個業務組。還有機器也是,安裝了 categraf 之後,categraf 就會自動向夜鶯註冊機器資訊,此時這個機器會出現在未歸組機器列表種,管理員需要把這個機器歸到某個業務組下,業務組的人才能使用。

業務組在夜鶯中使用頻繁,本篇講解夜鶯監控中的業務組的概念,以及相關的設計初衷。

需求來源

夜鶯中要管理很多東西,比如:告警規則、抑制規則、訂閱規則、自癒指令稿、機器等。如果各個東西都放在一個表格裡讓大家查看、管理,那就比較混亂了,需要有個機制來分門別類。

於是,我們引入了「業務組」的概念。業務組就是一個分組機制,比如 DBA 把 MySQL 的告警規則放到一個業務組裡(組名姑且叫 DBA/MySQL),把 Postgres 的告警規則放到另一個業務組裡(組名姑且叫 DBA/Postgres);比如 Kubernetes 維運人員,按照叢集對 Kubernetes 的宿主機做了拆分,不同的叢集的機器放到不同的業務組下,比如分成 K8S/叢集AK8S/叢集B 等等。

演進

早期版本的夜鶯,業務組渲染為扁平的列表,後來發現,其實業務組需要層級結構,比如上面的四個業務組:

  • DBA/MySQL
  • DBA/Postgres
  • K8S/叢集A
  • K8S/叢集B

渲染為樹形結構的話就更方便查看:

DBA
├── MySQL
└── Postgres
K8S
├── 叢集A
└── 叢集B

所以新版本的夜鶯,為了相容老版本,業務組儲存到 DB 的時候,仍然是扁平的列表,但在前端展示的時候,可以根據名稱裡的分隔符渲染為樹形結構。比如上面的例子,名稱裡的分隔符是 /,當然你也可以使用其他分隔符,比如 -_ 等等。在夜鶯的選單 系統設定-站點設定 裡,可以設定業務組展示模式和分隔符。

🟢 推薦使用 / 作為分隔符。

問題

在夜鶯裡,業務組是全域共享的,既可以把規則掛到業務組上,也可以把機器掛到業務組上,這有個好處,就是方便複用業務組,即業務組建立一次之後,在多個地方都可以使用。

但是這樣做也有一個問題,那就是不同的東西,其分組的顆粒度是不同的。比如我們對機器分組的話,可能會分的比較細,比如:

  • DBA/MySQL/Proxy/RegionA
  • DBA/MySQL/Proxy/RegionB

但當我們對告警規則、儀表板這些東西分組的時候,可能就不會分的那麼細了,比如 DBA 所有的儀表板,可能全部放在 DBA 下面就好了。

這個問題目前不好解決,除非業務組不搞成全域複用的,機器有機器的分組,告警規則有告警規則的分組,儀表板有儀表板的分組,這樣就會導致有些業務組要重複建立,在機器那建立完了還要在告警規則那再建立一次。魚與熊掌不可兼得。

劃分業務組的最佳實踐

雖然業務組既可以用於各類規則的分類,也可以用於機器的分組,但是顆粒度不同,通常機器的分組顆粒度更細,而規則的分組顆粒度較粗。通常,先按照機器分組來規劃業務組,然後各類規則、儀表板等掛到中間層級的業務組上就差不多了。下面咱們先說機器的分組。

不知道讀者是否聽過「服務樹」這個概念,業務組的劃分和「服務樹」是類似的,通常來講,頂層是對組織結構的建模,即頂層節點是部門、業務、團隊之類的這種資訊,比如:

  • 基礎架構/維運/容器雲 是維運團隊裡的容器雲團隊
  • 基礎架構/維運/資料庫 是維運團隊裡的資料庫維運團隊
  • XBU/業務1/產品1 是某個 BU 下面的業務1下面的產品1團隊
  • XBU/業務1/產品2 是某個 BU 下面的業務1下面的產品2團隊

如果公司的組織架構比較扁平,這個資訊的層級會少一些,如果公司組織架構的層級比較多,可以多加幾層。

頂層是對組織結構的建模,中層是對系統服務建模,通常中層分兩層,系統-模組,比如 Kubernetes 是一個系統,裡邊的 apiserver、etcd、scheduler 等是不同的模組。

最後說業務組的底層,底層通常是按照叢集劃分,比如量確實很大,叢集上面還可以引入地域的概念,如果量沒那麼大,只需要按叢集劃分即可,如果只有一個叢集,取消底層叢集節點都是可以的。

於是,最終容器雲平台的業務組可能是這麼劃分的:

  • 基礎架構/維運/容器雲/KubeUI/Webapi/華南叢集
  • 基礎架構/維運/容器雲/KubeUI/Webapi/華北叢集
  • 基礎架構/維運/容器雲/KubeUI/Report/華南叢集
  • 基礎架構/維運/容器雲/KubeUI/Report/華北叢集
  • 基礎架構/維運/容器雲/Kubernetes/etcd/華南叢集
  • 基礎架構/維運/容器雲/Kubernetes/etcd/華北叢集
  • 基礎架構/維運/容器雲/Kubernetes/apiserver/華南叢集
  • 基礎架構/維運/容器雲/Kubernetes/apiserver/華北叢集
  • 基礎架構/維運/容器雲/Kubernetes/scheduler/華南叢集
  • 基礎架構/維運/容器雲/Kubernetes/scheduler/華北叢集
  • 基礎架構/維運/容器雲/Kubernetes/node/華南叢集
  • 基礎架構/維運/容器雲/Kubernetes/node/華北叢集

業務組按照機器的顆粒度劃分完了之後,規則之類的應該掛在上層,比如 Webapi 的告警規則,可以專門建立一個 基礎架構/維運/容器雲/KubeUI/Webapi-Rules 的業務組,然後把 Webapi 的告警規則掛到這個業務組上。

如果 Webapi 和 Report 的告警規則都很少,直接一併建立一個 基礎架構/維運/容器雲/KubeUI-Rules 的業務組,把 Webapi 和 Report 的告警規則都掛到這個業務組上,也是可以的。

儀表板通常更少,直接建立一個 基礎架構/維運/容器雲-Dashboards 的業務組,容器雲團隊所有的儀表板都掛到這個業務組上,就可以了。

當然,上面的劃分邏輯只是一個思路參考,無法適合所有公司,比如有些企業主要用夜鶯監控一堆裝置(分散在不同地域、工廠),不是服務,那在業務組劃分的時候,可以考慮按照地域、工廠等維度進行劃分。

FAQ

找不到業務組操作入口

Question:V8 新版本,在人員組織下面怎麼找不到業務組的選單了,那如何對業務組增刪改查?

Answer:業務組出現在很多個功能選單下面,比如告警規則、抑制規則、儀表板、自癒指令稿等,可以直接在這些地方對業務組進行增刪改查,不需要到一個單獨的業務組選單去操作了。滑鼠挪到業務組上,會自動出現編輯 icon,點擊編輯 icon 可以對業務組進行編輯、刪除,業務組上面有個小加號的 icon,可以新增業務組。

常見問題

Q1:業務組怎麼命名?

A:建議 <業務>-<環境> 風格(如 pay-prodpay-testrisk-prod),看到名字立刻知道是哪個團隊的哪個環境。全用中文 — API 呼叫不友善。

Q2:業務組拆得太細 / 太粗的問題?

A:

  • 太細(幾十上百個):UI 卡頓、管理負擔大;
  • 太粗:權限隔離不夠,所有人能看所有資源。
  • 推薦:按「團隊 + 環境」維度拆分,單個元件少的可以一個業務組裡多個元件。

參考資料

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