作者陳凱燁,騰訊雲前端開發工程師。負責 TKE 集群,彈性集群和雲原生監控等模塊控制台開發。
概述
Prometheus 是一套開源的系統監控報警框架。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成為受歡迎度僅次於 Kubernetes 的項目。
2020年11月20日,騰訊雲雲原生 Prometheus 服務正式開始免費公測。針對容器集群監控場景,提供了一整套包括監控、采集、存儲、告警、圖表等能力的監控服務。通過獨立部署與被監控對象解耦合,使得不受監控對象性能、穩定性、可靠性等因素的影響,托管模式使得用戶無需部署運維 Prometheus 監控實例,解放了運維人力,而新推出的模板功能可以解決在多個集群之間粘貼復制配置的重復性工作問題,實現一鍵同步多個集群配置,使得整個流程更專業、更可靠。本文會詳細介紹雲原生監控服務的基本功能以及使用方式。
騰訊雲容器團隊的雲原生監控服務,產品目前已正式公測,歡迎讀者試用(傳送門:https://console.cloud.tencent.com/tke2/prometheus )。
基本功能
實例管理
創建實例
- 登錄容器服務控制台,選擇左側導航欄中的【雲原⽣監控】
- 點擊⻚⾯上⽅的【新建】按鈕,進⼊【創建監控實例】⻚⾯。如下圖所示:
- 在【創建監控實例⻚⾯】,根據提示設置集群信息。如下圖所示:
-
地域: 選擇您希望部署該實例的地域,實例創建后 地域⽆法修改,建議您根據所在地理位置選擇靠近業務的地域,可降低訪問延遲,提高數據上報速度。
-
⽹絡:需選擇當前地域下已有的私有網絡和子網,創建后不可修改。若在該地域下沒有 vpc 資源可跳轉到私有⽹絡控制台新建 vpc。實例默認情況下只能監控本 vpc 網絡的集群,若您希望監控其他 vpc 集群,您需要使⽤雲聯⽹等服務進⾏ vpc ⽹絡打通。
-
數據存儲時間:選擇數據存儲時間,可選 15天/ 3個⽉/ 6個⽉/⼀年。實例創建成功后將⾃動為您創建對象存儲 COS 存儲桶並按照實際資源使⽤情況計費。詳情請參見對象存儲計費概述。
-
Grafana組件:此處需要設置登錄用戶名和密碼用於 Grafana 登陸。Grafana 默認只支持 vpc 內訪問,實例創建后,您可以根據業務需要開通 Grafana 外網訪問。
-
AlertManger:您可通過添加⾃定義的 AlertManger 地址,將實例產⽣的告警發往自建的 AlertManger。
基礎信息
實例創建完成后,將處於運行中狀態,您可點擊實例查看其基本信息。除了創建時指定的⼀些信息外,還包含⼀些創建完成后提供的信息:
-
對象存儲桶:雲原⽣監控使⽤對象存儲在進⾏數據持久化存儲,實例將在您賬號下創建⼀個對象存儲的桶⽤於存儲數據。
-
Prometheus 數據查詢地址:該接⼝⽤於提供數據查詢,targets 查詢,rules 查詢等。您可以使⽤該地址對接⾃建的 Grafana
-
Grafana:默認為您提供了內⽹地址,您可以選擇性開啟外⽹訪問,開啟后將⽣成固定的外⽹域名。
Prometheus數據查詢接口
Prometheus 數據查詢地址目前可支持以下幾個 path。
-
/api/v1/query:查詢最近⼀次抓取的數據。
-
/api/v1/query_range:查詢⼀段時間的數據。
-
/api/v1/targets:查詢監控目標的信息。
由於實例可能關聯了多個集群,您需要添加 cluster=[集群類型]-[集群id]參數,用於指定目標集群:
TKE 集群:/api/v1/targets?cluster=tke-cls-xxx
彈性集群:/api/v1/targets?cluster=eks-cls-xxx
邊緣集群:/api/v1/targets?cluster=tkeedge-cls-xxx
-
/api/v1/alerts:查詢告警狀態。
-
/api/v1/rules:查詢聚合和告警規則。
默認監控面板
實例創建的 Grafana 會提供⼀些常用的監控面板,包含了集群綜合信息,節點,工作負載,Pod 等。當您后續進行了集群關聯后,被關聯集群的數據就可以在默認監控面板中查看。
多集群管理
關聯集群
實例創建完成后,您需要需要監控的集群進行關聯。關聯之后,您就可以在集群中通過創建 SerivceMonitor,PodMonitor 等進行采集配置。
TKE 的標准集群以及彈性集群需要與該實例 Prometheus 所屬同一個 VPC 網絡,邊緣集群則不受這個限制。
采集配置
Prometheus Operator
雲原生監控為用戶提供了與 Prometheus Operator 兼容的能力,您可以修改 Prometheus Operator 所定義的采集相關的 CRD,例如 Prometheus CRD,ServiceMonitor,PodMonitor 等。具體可以參考【prometheus operator】
修改采集周期和額外 labels
當成功關聯集群后,會在被關聯集群的 prom-xxx 命名空間下創建⼀個名如【tke-cls-xxx】的 Prometheus CRD 資源。可以通過修改此資源來修改全局采集配置,額外的 labels 等等。
ServiceMonitor
雲原⽣監控⽀持創建【ServiceMonitor】,您可以通過控制台創建,也可以直接在集群⾥創建 ServiceMonitor。
選擇該集群中的任意 service 自動聚和成 Yaml。
PodMonitor
雲原監控支持創建【PodMonitor】,您可以通過控制台創建,也可以直接在集群⾥創建 PodMonitor。
Rawjob
雲原⽣監控⽀持直接創建 Prometheus 原⽣的 job,您可以通過控制台創建,也可以通過修改集群中 prom-xxx 命名空間下的 promtheus-config secret 來達到同樣效果
最終配置
您可以在控制台的集群數據采集配置右上⻆看到最終⽣成的 Prometheus 配置⽂件
您也可以在被關聯集群的 prom-xxx 命名空間下,通過查看 prometheus-tke-cls-xxx 的 secret 來查看最終配置
掛載⽂件到采集器
在配置采集項的時候,您可能需要為配置提供⼀些⽂件,例如證書,您可以通過以下⽅式向采集器掛載⽂件,⽂件的更新會實時同步到采集器內:
-
prom-xxx 命名空間下的 configmap 打上以下的 label:
prometheus.tke.tencent.cloud.com/scrape-mount = "true"
。其中所有的 key 就會被掛載到采集器的路徑
/etc/prometheus/configmaps/[configmap-name]/
。 -
prom-xxx 命名空間下的 secret 打上以下的 label:
prometheus.tke.tencent.cloud.com/scrape-mount = "true"
其中所有的 key 就會被掛載到采集器的路徑
/etc/prometheus/secret/[secret-name]/
默認采集配置
集群被關聯后,雲原⽣監控會在被關聯集群內創建默認的采集配置。將安裝以下兩個組件
-
kube-state-metrics:在 kube-system 下將安裝【kube-state-metrics】組件。
-
node exporter: 在 kube-system 下將安裝【node exporter】組件。
將添加以下采集項:
將添加以下聚合規則:
查看 targets
您可以通過控制台【查看 targets ⽬標】來查看當前所有被監控的對象的狀態。
聚合規則
簡介
聚合規則⽤於使⽤ PromQL 來⽣成新的指標,聚合規則將以 30 秒為周期進⾏計算。
創建聚合規則
告警
簡介
告警規則⽤於定義告警,告警規則將以 30 秒為周期進⾏計算。
創建告警規則
您可以通過控制台來創建告警規則,⼀個告警可以配置多條規則:
-
名稱:為⽤戶⾃定義告警名稱
-
規則名稱:⽤於識別規則,可通過該名稱在 Grafana 中查看其告警狀態
-
PromQL:規則語句
-
Labels:在發送告警時將額外帶上,這⾥的 Labels ⽆法在告警內容中引⽤
-
告警內容:⽤於⽣成告警內容的模板,您可以使⽤ {{$value}} 來引⽤告警觸發時的值,也可以使⽤ {{$labels.label-name}} 來引⽤某個 label 的值
-
持續時間:當規則處於告警狀態時間⼤於該值時才會觸發告警,配置告警規則時,您還需要配置對應的告警渠道信息
查看告警歷史
您可以在告警歷史界⾯查詢告警歷史記錄,默認查詢近 24 ⼩時的告警記錄,您可以通過時間篩選來查詢⽬標范圍內的記錄,您可以通過通過右邊搜索欄進⾏模糊過濾。
在集群內創建聚合或告警規則
您可以通過在集群內直接創建【PrometheusRule】來創建告警和聚合規則
-
默認會⾃動在規則的 PromQL 中注⼊ Prometheus CRD 中的 externalLables,從⽽使得該規則只對本集群⽣效,關閉 externalLabels 注⼊可以通過在【PrometheusRule】中打上以下 annottation 來關閉注⼊:
prometheus.tke.tencent.cloud.com/disable-labels-inject=""
-
若您創建的是告警規則,可通過添加以下 annotation 來指定告警渠道:
prometheus.tke.tencent.cloud.com/notification-inject="渠道id"
其中,渠道 id 即為控制台創建告警規則時所⽣成的告警 id。
因此,若您想使⽤集群內告警規則,您需要在控制台⾄少創建⼀起告警。
模板功能
簡介
模板一共分成兩種類型,聚合規則和告警策略模板、數據采集模板。用於管理多集群 prometheus 配置,並支持一鍵同步升級等功能。
創建模板
您可以通過控制台來創建模板,既可以復制已有模板,也可以創建一個空模板,然后添加自定義配置。
其中聚合規則和告警策略模板、數據采集等配置寫法保持一致。
-
名稱:模板名稱。
-
類型:默認模板只允許進行復制,不允許編輯和刪除。
-
關聯 Prometheus 實例數目:模板綁定了 Prometheus 實例的數目。
-
關聯 Prometheus Agent 數目:模板綁定了 Prometheus 實例的數目。
-
版本:代表當前模板的版本。
關聯實例列表
告警和聚合模板的關聯實例列表,在這個列表中,能夠對綁定的多個 Prometheus 實例進行同步告警策略和聚合規則。
關聯實例
支持同時關聯多個地域的 Prometheus 實例或者多個地域的集群,從而達到一鍵同步,管理多個集群的效果。
如果對模板解除關聯則所有模板相關配置被清除且不可恢復。
總結
本文詳細介紹了雲原生監控服務的基本功能和使用方式,在原有監控、采集、存儲、告警、圖表等能力的基礎上再增加了模板功能,使得支持對多集群架構服務進行監控。
【騰訊雲原生】雲說新品、雲研新術、雲游新活、雲賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!