您好,登錄后才能下訂單哦!
本篇內容主要講解“如何結合Kvass與Thanos實現大規模容器集群的監控”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何結合Kvass與Thanos實現大規模容器集群的監控”吧!
有同學可能會問,Thanos 不就是為了解決 Prometheus 的分布式問題么,有了 Thanos 不就可以實現大規模的 Prometheus 監控了嗎?為什么還需要個 Kvass? Thanos 解決了 Prometheus 的分布式存儲與查詢的問題,但沒有解決 Prometheus 分布式采集的問題,如果采集的任務和數據過多,還是會使 Prometheus 達到的瓶頸,不過對于這個問題,我們在系列的第一篇 大規模場景下 Prometheus 的優化手段 中就講了一些優化方法:
從服務維度拆分采集任務到不同 Prometheus 實例。
使用 Prometheus 自帶的 hashmod 對采集任務做分片。
但是,這些優化方法還是存在一些缺點:
配置繁瑣,每個 Prometheus 實例的采集配置都需要單獨配。
需要提前對數據規模做預估才好配置。
不同 Prometheus 實例采集任務不同,負載很可能不太均衡,控制不好的話仍然可能存在部分實例負載過高的可能。
如需對 Prometheus 進行擴縮容,需要手動調整,無法做到自動擴縮容。
Kvass 就是為了解決這些問題而生,也是本文的重點。
Kvass 項目是騰訊云開源的輕量級 Prometheus 橫向擴縮容方案,其巧妙的將服務發現與采集過程分離,并用 Sidecar 動態給 Prometheus 生成配置文件,從而達到無需手工配置就能實現不同 Prometheus 采集不同任務的效果,并且能夠將采集任務進行負載均衡,以避免部分 Prometheus 實例負載過高,即使負載高了也可以自動擴容,再配合 Thanos 的全局視圖,就可以輕松構建只使用一份配置文件的超大規模集群監控系統。下面是 Kvass+Thanos 的架構圖:
更多關于 Kvass 的詳細介紹,請參考 如何用 Prometheus 監控十萬 container 的 Kubernetes 集群 ,文章中詳細介紹了原理和使用效果。
首先下載 Kvass 的 repo 并進入 examples 目錄:
git clone https://github.com/tkestack/kvass.git cd kvass/examples
在部署 Kvass 之前我們需要有服務暴露指標以便采集,我們提供了一個 metrics 數據生成器,可以指定生成一定數量的 series,在本例子中,我們將部署 6 個 metrics 生成器副本,每個會生成 10045 series,將其一鍵部署到集群:
kubectl create -f metrics.yaml
接著我們來部署 Kvass:
kubectl create -f kvass-rbac.yaml # Kvass 所需的 RBAC 配置 kubectl create -f config.yaml # Prometheus 配置文件 kubectl create -f coordinator.yaml # Kvass coordinator 部署配置
其中,config.yaml
的 Prometheus 配置文件,配了對剛才部署的 metrics 生成器的采集:
global: scrape_interval: 15s evaluation_interval: 15s external_labels: cluster: custom scrape_configs: - job_name: 'metrics-test' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] regex: metrics action: keep - source_labels: [__meta_kubernetes_pod_ip] action: replace regex: (.*) replacement: ${1}:9091 target_label: __address__ - source_labels: - __meta_kubernetes_pod_name target_label: pod
coordinator.yaml
我們給 Coordinator 的啟動參數中設置每個分片的最大 head series 數目不超過 30000:
--shard.max-series=30000
然后部署 Prometheus 實例(包含 Thanos Sidecar 與 Kvass Sidecar),一開始可以只需要單個副本:
kubectl create -f prometheus-rep-0.yaml
如果需要將數據存儲到對象存儲,請參考上一篇 Thanos 部署與實踐 對 Thanos Sidecar 的配置進行修改。
為了得到全局數據,我們需要部署一個 thanos-query:
kubectl create -f thanos-query.yaml
根據上述計算,監控目標總計 6 個 target, 60270 series,根據我們設置每個分片不能超過 30000 series,則預期需要 3 個分片。我們發現,Coordinator 成功將 StatefulSet 的副本數改成了 3。
$ kubectl get pods NAME READY STATUS RESTARTS AGE kvass-coordinator-c68f445f6-g9q5z 2/2 Running 0 64s metrics-5876dccf65-5cncw 1/1 Running 0 75s metrics-5876dccf65-6tw4b 1/1 Running 0 75s metrics-5876dccf65-dzj2c 1/1 Running 0 75s metrics-5876dccf65-gz9qd 1/1 Running 0 75s metrics-5876dccf65-r25db 1/1 Running 0 75s metrics-5876dccf65-tdqd7 1/1 Running 0 75s prometheus-rep-0-0 3/3 Running 0 54s prometheus-rep-0-1 3/3 Running 0 45s prometheus-rep-0-2 3/3 Running 0 45s thanos-query-69b9cb857-d2b45 1/1 Running 0 49s
我們再通過 thanos-query 來查看全局數據,發現數據是完整的(其中 metrics0 為指標生成器生成的指標名):
如果需要用 Grafana 面板查看監控數據,可以添加 thanos-query 地址作為 Prometheus 數據源: http://thanos-query.default.svc.cluster.local:9090
。
到此,相信大家對“如何結合Kvass與Thanos實現大規模容器集群的監控”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。