日前,青云科技宣布開源 Thanos 的企業(yè)級發(fā)行版 Whizard,為企業(yè)帶來真正高可用、可擴展、可存儲與查詢海量監(jiān)控數(shù)據(jù)、易運維、安全的 Prometheus 長期存儲方案。
Prometheus 已經(jīng)成為云原生監(jiān)控領(lǐng)域事實上的標(biāo)準(zhǔn),但 Prometheus 并沒有解決企業(yè)用戶對高可用、可擴展、可存儲與查詢海量監(jiān)控數(shù)據(jù)、易運維等方面的需求。
Thanos 作為云原生社區(qū)主流的 Prometheus 長期存儲項目,提供了 Prometheus 高可用、可存儲與查詢海量監(jiān)控數(shù)據(jù)等能力,但也存在組件及參數(shù)眾多,上手門檻較高;運維及水平擴展均需手動配置,比較繁瑣且易出錯;某些組件無水平擴展能力;各組件安全配置繁瑣或欠缺等問題。
為了解決上述這些企業(yè)級用戶的需求,青云科技(qingcloud.com) KubeSphere 可觀測團隊于 2021 年立項開始開發(fā) Thanos 的企業(yè)級發(fā)行版 Whizard 并于 2022 年發(fā)布了第一版,至今已發(fā)布了 8 個大小版本。自 KubeSphere Enterprise v3.3.1 基于 Whizard 發(fā)布了可對海量 K8s 集群及邊緣節(jié)點進行監(jiān)控告警的 Whizard 可觀測中心以來,經(jīng)過 KubeSphere Enterprise v3.4.0,v3.5.0, v4.1.0 等多個企業(yè)版本的打磨,Whizard 已日臻成熟,具有很多獨特的功能與亮點。
功能亮點:
· 云原生化部署與運維:所有組件均支持以 CRD 的方式定義與維護,更易于配置與運維。包括 Thanos 的 Router, Ingester, Compactor, Store, Query, QueryFrontend, Ruler 等組件以及 Whizard 引入的 Service, Tenant, Storage 等。
· 基于租戶的自動水平擴展機制:基于 CPU 與 Memory 的 HPA 對于穩(wěn)定性要求更高的企業(yè)級有狀態(tài)工作負(fù)載并不是最好的選擇,為此 Whizard 創(chuàng)造性地引入了基于租戶的工作負(fù)載水平伸縮機制。Ingester,Compactor,Ruler 等均支持隨著租戶的創(chuàng)建與刪除進行水平伸縮,保證租戶工作負(fù)載穩(wěn)定運行的同時,提供了租戶級別的水平擴展與資源回收機制。
· 適配 K8s 多集群管理:為了對 K8s 多集群監(jiān)控告警提供更好的支持,Whizard 的維護者開發(fā)了 whizard-adapter ,可根據(jù) K8s/KubeSphere 集群的創(chuàng)建與刪除自動創(chuàng)建或刪除 Whizard 的租戶,進而觸發(fā) Thanos 有狀態(tài)工作負(fù)載的自動水平伸縮。
· 規(guī)則計算更好的擴展性:Thanos 原生的 Ruler 的水平擴展性并不好,無法滿足海量 K8s 集群(租戶)的 Alerting Rules 與 Recording Rules 的計算需求。為此 Whizard 的維護者為每個租戶引入了專屬的 Ruler,其可隨著租戶的生命周期自動創(chuàng)建與刪除;除了租戶專屬的 Ruler, Whizard 的維護者還引入了全局 Ruler 的分片機制,用于滿足跨海量集群(租戶)的全局規(guī)則(Alerting rules or Recording Rules)計算需求; 此外 Thanos Ruler 目前尚不支持將計算后的各租戶的 recording rules 分別寫入各自租戶的 Ingester,Whizard 的維護者為此也做了額外的支持。
· 更細(xì)粒度的規(guī)則管理:目前社區(qū)流行用 PrometheusRule 來管理 Prometheus recording rules 及 alerting rules,這種方式存在的問題是 PrometheusRule 里存在屬于多個規(guī)則組的多條規(guī)則,粒度過大,不宜并發(fā)編輯與維護。為了解決這個問題,Whizard 維護者引入了更細(xì)粒度的 RuleGroup 的 CRD 用于管理屬于一個規(guī)則組內(nèi)的所有規(guī)則;此外還引入了 3-tiers 的 RuleGroup 管理機制,RuleGroup 用于管理某一 namespace 下的規(guī)則組;ClusterRuleGroup 用于管理某一集群范圍內(nèi)的集群規(guī)則組;GlobalRuleGroup 用于管理擴跨多集群范圍的全局規(guī)則組;在做到更細(xì)粒度規(guī)則管理的同時,滿足了企業(yè)用戶對不同權(quán)限范圍的規(guī)則進行單獨管理的需求。
· 支持對象存儲網(wǎng)關(guān) Store 的按時間分片查詢:Thanos 通過將 Prometheus 的數(shù)據(jù)寫入對象存儲并支持從對象存儲查詢海量的監(jiān)控數(shù)據(jù),如果查詢的時間范圍過大,會導(dǎo)致 Store 占用資源過多,為止 Whizard 的維護者為 Store 加入了按時間分片查詢的機制,用戶可以根據(jù)要查詢的時間段分別創(chuàng)建不同的 Store CRD。
· 引入 Gateway 及 Agent Proxy 以對數(shù)據(jù)的寫入與讀取進行更好的控制:客戶端如 Prometheus Agent 或 Prometheus 無需直接與 Gateway 交互,通過 Whizard Agent Proxy 即可代理數(shù)據(jù)寫入與查詢請求至 Whizard Gateway,Whizard Gateway 進而可根據(jù)租戶的權(quán)限放行或拒絕查詢或?qū)懭胝埱蟆?/p>
· 支持企業(yè)級的安全需求:企業(yè)用戶通常對安全性有更高的需求。Whizard 除了支持組件間更方便的配置 tls 之外,還將 Thanos 的 WebUI 通過 Whizard Gateway 暴露出來并支持 Basic Auth 與 OAuth2-Proxy 兩種認(rèn)證方式,企業(yè)用戶可以更安全的訪問 Thanos 的 WebUI。
· 更方便的 2-Tiers 組件配置:Whizard 支持 Service 與 Comopnents 兩級組件配置,通用的配置可放在全局的 Servce 里做統(tǒng)一配置,各租戶的所有組件共用;特殊的定制化配置可放在單獨的 Component 里做個性化的定制。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!