Prometheus千節(jié)點(diǎn)集群的橫向擴(kuò)展實(shí)踐
1 背景與挑戰(zhàn):千節(jié)點(diǎn)規(guī)模下Prometheus的瓶頸
在2026年的運(yùn)維環(huán)境中,千節(jié)點(diǎn)規(guī)模的Kubernetes集群已經(jīng)稀松平常。一個(gè)典型的中大型互聯(lián)網(wǎng)公司,其Kubernetes集群規(guī)模通常在3000至5000個(gè)節(jié)點(diǎn),單個(gè)集群中運(yùn)行的Pod數(shù)量動(dòng)輒數(shù)萬(wàn)個(gè)。在這樣的規(guī)模下,監(jiān)控系統(tǒng)面臨的壓力是前所未有的。
Prometheus作為云原生時(shí)代最主流的時(shí)序數(shù)據(jù)庫(kù),憑借其強(qiáng)大的數(shù)據(jù)模型、靈活的查詢(xún)語(yǔ)言PromQL以及豐富的生態(tài)集成,幾乎成為監(jiān)控領(lǐng)域的標(biāo)準(zhǔn)配置。然而,Prometheus的設(shè)計(jì)初衷是作為一個(gè)單機(jī)版監(jiān)控解決方案,其架構(gòu)在面對(duì)超大規(guī)模場(chǎng)景時(shí)會(huì)暴露出幾個(gè)核心瓶頸。
存儲(chǔ)容量瓶頸是最直觀的問(wèn)題。Prometheus采用本地存儲(chǔ)引擎TSM(Time-Serie Storage),數(shù)據(jù)寫(xiě)入本地磁盤(pán)。在默認(rèn)配置下,單個(gè)Prometheus實(shí)例的存儲(chǔ)容量受限于宿主機(jī)的磁盤(pán)空間。按照2026年常見(jiàn)的采集頻率計(jì)算:一個(gè)包含5000個(gè)指標(biāo)的采集任務(wù),每15秒采集一次,每條時(shí)間序列數(shù)據(jù)點(diǎn)占用約200字節(jié),那么每天產(chǎn)生的數(shù)據(jù)量約為5000 * 86400/15 * 200 = 5.76GB??紤]到采集的指標(biāo)數(shù)量遠(yuǎn)超5000,以及高基數(shù)標(biāo)簽帶來(lái)的存儲(chǔ)膨脹,一個(gè)千節(jié)點(diǎn)集群的單日數(shù)據(jù)量輕松突破100GB。在不經(jīng)過(guò)任何優(yōu)化的情況下,單機(jī)Prometheus的磁盤(pán)容量在數(shù)周內(nèi)就會(huì)耗盡。
查詢(xún)性能衰退是另一個(gè)致命問(wèn)題。隨著數(shù)據(jù)量的增長(zhǎng),Prometheus的查詢(xún)延遲會(huì)急劇上升。PromQL的rate()、sum()等聚合操作在處理大時(shí)間范圍數(shù)據(jù)時(shí),需要掃描大量的數(shù)據(jù)塊。實(shí)測(cè)表明,當(dāng)單個(gè)Prometheus實(shí)例存儲(chǔ)超過(guò)500GB數(shù)據(jù)時(shí),90分位查詢(xún)延遲會(huì)從毫秒級(jí)退化到數(shù)秒,這在SRE響應(yīng)故障時(shí)是不可接受的。
高可用與數(shù)據(jù)持久性的矛盾同樣突出。單機(jī)Prometheus實(shí)例是單點(diǎn)的,一旦宿主機(jī)宕機(jī),歷史監(jiān)控?cái)?shù)據(jù)將永久丟失。對(duì)于追求四個(gè)九以上可用性的生產(chǎn)環(huán)境,這是不可接受的風(fēng)險(xiǎn)。雖然可以通過(guò)雙副本復(fù)制的方式提升可用性,但復(fù)制本身會(huì)帶來(lái)存儲(chǔ)成本翻倍的問(wèn)題。
采集端的瓶頸體現(xiàn)在高基數(shù)標(biāo)簽(High Cardinality)問(wèn)題上。2026年的服務(wù)網(wǎng)格環(huán)境中,Prometheus經(jīng)常需要采集帶有trace_id、user_id等高基數(shù)標(biāo)簽的指標(biāo)。當(dāng)Pod數(shù)量達(dá)到數(shù)萬(wàn)個(gè)時(shí),唯一的標(biāo)簽組合數(shù)量可能達(dá)到百萬(wàn)量級(jí),這會(huì)直接導(dǎo)致Prometheus的內(nèi)存溢出(OOM)。這一問(wèn)題在引入服務(wù)網(wǎng)格(Istio、Linkerd)后尤為突出,sidecar代理產(chǎn)生的指標(biāo)往往是普通應(yīng)用指標(biāo)的10倍以上。
基于上述挑戰(zhàn),千節(jié)點(diǎn)規(guī)模下的Prometheus架構(gòu)必須走向分布式化。本篇文章將詳細(xì)介紹如何基于Thanos構(gòu)建千節(jié)點(diǎn)集群級(jí)別的監(jiān)控平臺(tái),涵蓋架構(gòu)設(shè)計(jì)、容量規(guī)劃、故障排查和最佳實(shí)踐。
2 架構(gòu)演進(jìn):從單機(jī)到聯(lián)邦集群
理解Prometheus的分布式擴(kuò)展路徑,需要先梳理業(yè)界實(shí)踐中最常見(jiàn)的幾種架構(gòu)演進(jìn)模式。
第一種模式:聯(lián)邦集群(Federation)是Prometheus官方推薦的擴(kuò)展方案。其核心思想是按業(yè)務(wù)域或功能域劃分多個(gè)Prometheus實(shí)例,每個(gè)子Prometheus負(fù)責(zé)采集特定范圍的目標(biāo),然后通過(guò)中心Prometheus進(jìn)行跨域聚合查詢(xún)。
┌─────────────────────────────────────────────────┐
│ Federation Gateway │
│ /federate?match[]={job="kubernetes"} │
└─────────────┬─────────────────┬─────────────────┘
│ │
┌─────────▼──────┐ ┌──────▼──────────┐
│ Prometheus-1 │ │ Prometheus-2 │
│ (Kubernetes) │ │ (Nginx/網(wǎng)關(guān)) │
└───────┬───────┘ └──────┬─────────┘
│ │
采集kubernetes組件 采集nginx metrics
聯(lián)邦架構(gòu)的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,無(wú)需引入額外的組件,適合節(jié)點(diǎn)數(shù)量在500以?xún)?nèi)的場(chǎng)景。但其缺點(diǎn)同樣明顯:中心Prometheus仍然承擔(dān)了所有查詢(xún)聚合的負(fù)載,成為性能瓶頸;數(shù)據(jù)在各子Prometheus中獨(dú)立存儲(chǔ),無(wú)法跨實(shí)例做歷史數(shù)據(jù)的統(tǒng)一查詢(xún);并且federate接口的PromQL匹配能力有限,無(wú)法做跨標(biāo)簽的靈活關(guān)聯(lián)查詢(xún)。
第二種模式: Thanos架構(gòu)是目前生產(chǎn)環(huán)境中最主流的千節(jié)點(diǎn)以上規(guī)模解決方案。Thanos是CNCF的畢業(yè)項(xiàng)目,它在Prometheus基礎(chǔ)上添加了一套完整的分布式層,包括全局查詢(xún)、長(zhǎng)期存儲(chǔ)、高可用和降采樣。其核心設(shè)計(jì)理念是"Prometheus原地?cái)U(kuò)展",即不需要修改Prometheus本身的代碼,只需要通過(guò)Sidecar組件與Prometheus一同部署,即可獲得分布式能力。
┌────────────────────────────────────────────────────────┐
│ Thanos Query │
│ (全局查詢(xún)?nèi)肟?,GRPC) │
└──────┬───────────────┬──────────────┬──────────────────┘
│ │ │
┌────▼────┐ ┌─────▼────┐ ┌────▼─────┐
│Thanos │ │Thanos │ │Thanos │
│Sidecar-1│ │Sidecar-2 │ │Store │
│Prom-1 │ │Prom-2 │ │Gateway │
└─────────┘ └──────────┘ └──────────┘
│
┌─────▼──────┐
│ 對(duì)象存儲(chǔ) │
│ (S3/GCS) │
└────────────┘
Thanos的核心組件包括:
Thanos Sidecar:以Pod形式與Prometheus共同部署,實(shí)時(shí)讀取Prometheus的 WAL(Write-Ahead-Log)并將數(shù)據(jù)上傳至對(duì)象存儲(chǔ)。同時(shí)響應(yīng)Thanos Query的實(shí)時(shí)查詢(xún)請(qǐng)求。
Thanos Query:無(wú)狀態(tài)的查詢(xún)網(wǎng)關(guān),接收PromQL查詢(xún)請(qǐng)求,委托給所有注冊(cè)的Thanos Sidecar和Store Gateway,并將結(jié)果進(jìn)行去重和聚合。它通過(guò)Prometheus的GRPC API實(shí)現(xiàn)組件發(fā)現(xiàn)。
Thanos Store Gateway:從對(duì)象存儲(chǔ)中讀取歷史數(shù)據(jù),為T(mén)hanos Query提供歷史數(shù)據(jù)查詢(xún)能力。它實(shí)現(xiàn)了 Thanos Store API,實(shí)際上是一個(gè)對(duì)象存儲(chǔ)的GRPC代理。
Thanos Compactor:運(yùn)行于對(duì)象存儲(chǔ)端,負(fù)責(zé)對(duì)歷史數(shù)據(jù)進(jìn)行壓縮(compaction)和降采樣(downsampling)。壓縮將8小時(shí)塊合并為更大的塊,降采樣則為不同時(shí)間范圍預(yù)計(jì)算聚合數(shù)據(jù)以加速查詢(xún)。
Thanos Ruler:用于基于PromQL的告警規(guī)則和錄制規(guī)則求值,類(lèi)似于Alertmanager的告警規(guī)則引擎,但結(jié)果可寫(xiě)回對(duì)象存儲(chǔ)或暴露給Query。
第三種模式: Cortex / Mimir是另外一條技術(shù)路線,它們是基于Prometheus存儲(chǔ)格式的完全托管式多租戶(hù)時(shí)序數(shù)據(jù)庫(kù)。Cortex(原來(lái)自Prometheus團(tuán)隊(duì),現(xiàn)已并入Grafana Mimir)更適合于需要強(qiáng)多租戶(hù)隔離和超大規(guī)模(百萬(wàn)指標(biāo)級(jí))的場(chǎng)景。其架構(gòu)更為復(fù)雜,需要Cassandra或DynamoDB作為索引存儲(chǔ),元數(shù)據(jù)管理更為繁重。對(duì)于千節(jié)點(diǎn)至萬(wàn)節(jié)點(diǎn)規(guī)模,Thanos通常是最優(yōu)性?xún)r(jià)比選擇。
本文后續(xù)內(nèi)容將聚焦于Thanos架構(gòu)的實(shí)戰(zhàn)細(xì)節(jié),因?yàn)樗悄壳吧a(chǎn)落地最成熟、資料最豐富的方案。
3 核心設(shè)計(jì):Thanos架構(gòu)深度解析
3.1 數(shù)據(jù)寫(xiě)入路徑
Thanos的數(shù)據(jù)寫(xiě)入路徑是理解其架構(gòu)的起點(diǎn)。在Thanos模式下,Prometheus照常采集指標(biāo),采集的數(shù)據(jù)首先寫(xiě)入本地TSM文件。Thanos Sidecar組件通過(guò)持續(xù)讀取Prometheus的WAL(Write-Ahead-Log)文件,將數(shù)據(jù)以TSM塊的形式異步上傳至對(duì)象存儲(chǔ)。
這一設(shè)計(jì)的關(guān)鍵在于"異步性":Prometheus的數(shù)據(jù)寫(xiě)入路徑完全不改變,Sidecar的上傳操作對(duì)Prometheus本身是透明的,不影響其采集性能。上傳的數(shù)據(jù)塊首先以"pending"狀態(tài)寫(xiě)入對(duì)象存儲(chǔ)的/store腰帶路徑,經(jīng)過(guò)Thanos Compactor壓縮后,才會(huì)遷移到/store/compact路徑供Store Gateway讀取。
對(duì)象存儲(chǔ)中選擇以TSM原始?jí)K格式存儲(chǔ),而非轉(zhuǎn)換為列式格式(如Parquet),是因?yàn)門(mén)hanos希望保持與Prometheus本地存儲(chǔ)的格式兼容,使得即使用戶(hù)不使用Thanos,仍然可以通過(guò)工具直接讀取歷史數(shù)據(jù)。
3.2 查詢(xún)路徑的并行化
Thanos Query是整個(gè)架構(gòu)中最核心的組件,理解它的查詢(xún)路徑是掌握Thanos性能的關(guān)鍵。
當(dāng)用戶(hù)發(fā)起一個(gè)PromQL查詢(xún)(如sum(rate(http_requests_total{job="api"}[5m])) by (service))時(shí),查詢(xún)請(qǐng)求首先到達(dá)Thanos Query的無(wú)狀態(tài)HTTP端點(diǎn)。Thanos Query會(huì)根據(jù)查詢(xún)中涉及的標(biāo)簽匹配器(Label Matcher),首先向所有已注冊(cè)的Sidecar和Store Gateway發(fā)送Info請(qǐng)求,獲取每個(gè)存儲(chǔ)后端所包含的時(shí)間序列元數(shù)據(jù)(塊文件索引)。
具體查詢(xún)路徑如下: 1. 查詢(xún)計(jì)劃階段(Query Planning) Query解析PromQL,從每個(gè)Store/Sidecar獲取該查詢(xún) 需要掃描的數(shù)據(jù)塊列表(通過(guò)LabelMatchers過(guò)濾) 2. 階段并行查詢(xún)(Parallel Query Execution) Query同時(shí)向多個(gè)Store/Sidecar發(fā)送實(shí)際數(shù)據(jù)請(qǐng)求 每個(gè)響應(yīng)被標(biāo)記來(lái)源("replica"標(biāo)簽)用于去重 3. 結(jié)果去重(Deduplication) 因?yàn)镻rometheus通常以雙副本部署以保證高可用, 同一指標(biāo)會(huì)有兩個(gè)副本寫(xiě)入對(duì)象存儲(chǔ)。 Query通過(guò)"replica"標(biāo)簽進(jìn)行去重,默認(rèn)保留離查詢(xún)時(shí)間點(diǎn)更近的數(shù)據(jù)。 4. 聚合返回(Aggregation) 如果PromQL包含聚合操作(sum, avg等), Query在合并所有來(lái)源數(shù)據(jù)后執(zhí)行最終聚合。
Thanos Query的橫向擴(kuò)展能力體現(xiàn)在:可以部署多個(gè)Query實(shí)例,通過(guò)DNS或Kubernetes Service進(jìn)行負(fù)載均衡。由于Query本身是無(wú)狀態(tài)的,增加實(shí)例數(shù)可以線性提升查詢(xún)吞吐量。
3.3 存儲(chǔ)格式與降采樣
Thanos Compactor是數(shù)據(jù)治理的核心組件。它定時(shí)掃描對(duì)象存儲(chǔ)中的數(shù)據(jù)塊,執(zhí)行兩類(lèi)關(guān)鍵操作:
壓縮(Compaction):Prometheus的原始數(shù)據(jù)塊大小為2小時(shí),Compactor會(huì)將多個(gè)小塊合并為更大的塊。壓縮后的塊可以顯著減少對(duì)象存儲(chǔ)的API調(diào)用次數(shù)(讀取一個(gè)10GB塊 vs 讀取100個(gè)100MB塊),同時(shí)降低查詢(xún)時(shí)的塊數(shù)量。
降采樣(Downsampling):對(duì)于超過(guò)保留期限(如30天)的數(shù)據(jù),Compactor會(huì)預(yù)計(jì)算5分鐘和1小時(shí)的粗粒度聚合數(shù)據(jù)。這一機(jī)制對(duì)查詢(xún)性能至關(guān)重要:假設(shè)要查詢(xún)過(guò)去30天的CPU使用率趨勢(shì),如果數(shù)據(jù)精度為15秒,則需要掃描約170萬(wàn)個(gè)數(shù)據(jù)點(diǎn);如果使用1小時(shí)降采樣數(shù)據(jù),則僅需掃描720個(gè)點(diǎn)。實(shí)測(cè)中,30天歷史查詢(xún)的響應(yīng)時(shí)間可以從30秒降低到300毫秒。
降采樣規(guī)則通常配置為:
原始數(shù)據(jù)(raw):保留0-30天,精度15秒
5分鐘降采樣(5m):保留30-90天
1小時(shí)降采樣(1h):保留90天以上
3.4 塊文件結(jié)構(gòu)
理解Thanos的數(shù)據(jù)塊文件結(jié)構(gòu),有助于在排障時(shí)判斷數(shù)據(jù)完整性。每隔2小時(shí)Prometheus生成一個(gè)新的數(shù)據(jù)塊,目錄結(jié)構(gòu)如下:
01H2B5GXYZ123D2ZZZZZZZZZZZZZZZZ/ ├── chunk # 列式存儲(chǔ)的數(shù)據(jù)點(diǎn)序列 │ └── 000001 ├── index # 標(biāo)簽索引文件(外部標(biāo)簽+元數(shù)據(jù)) ├── meta.json # 塊元數(shù)據(jù)(ULID、時(shí)間范圍、降采樣級(jí)別) └── tombststones # 標(biāo)記刪除的數(shù)據(jù)序列
meta.json中記錄了塊的ULID、時(shí)間范圍、來(lái)源(Prometheus實(shí)例ID)、是否經(jīng)過(guò)降采樣等信息。在排查數(shù)據(jù)缺失時(shí),首先應(yīng)檢查對(duì)象存儲(chǔ)中對(duì)應(yīng)時(shí)間范圍的塊文件是否完整。
4 存儲(chǔ)層橫向擴(kuò)展:對(duì)象存儲(chǔ)選型與配置
4.1 對(duì)象存儲(chǔ)選型對(duì)比
Thanos支持多種對(duì)象存儲(chǔ)后端,2026年主流的選擇如下:
| 存儲(chǔ)類(lèi)型 | 優(yōu)點(diǎn) | 缺點(diǎn) | 適用場(chǎng)景 |
|---|---|---|---|
| S3兼容存儲(chǔ)(MinIO/AWS S3) | 生態(tài)成熟,工具鏈完整 | 按請(qǐng)求計(jì)費(fèi),冷熱數(shù)據(jù)成本差異大 | 中大規(guī)模,多云部署 |
| Google GCS | 與GKE集成好,讀優(yōu)化 | 跨區(qū)域訪問(wèn)延遲較高 | GCP原生環(huán)境 |
| Azure Blob | 冷存儲(chǔ)成本極低 | 元數(shù)據(jù)操作較慢 | Azure環(huán)境 |
| 阿里云OSS | 國(guó)內(nèi)合規(guī)性好 | 專(zhuān)有網(wǎng)絡(luò)綁定 | 阿里云環(huán)境 |
對(duì)于千節(jié)點(diǎn)規(guī)模的生產(chǎn)環(huán)境,推薦使用S3兼容存儲(chǔ)。在國(guó)內(nèi)場(chǎng)景下,如果基礎(chǔ)設(shè)施在阿里云,使用OSS是更務(wù)實(shí)的選擇。阿里云OSS的請(qǐng)求費(fèi)用雖然比MinIO自建高,但其高可用性和免運(yùn)維成本在大規(guī)模場(chǎng)景下更具性?xún)r(jià)比。
4.2 MinIO集群部署配置
對(duì)于私有化環(huán)境,MinIO是S3兼容存儲(chǔ)的首選方案。MinIO支持兩種部署模式:FS(單節(jié)點(diǎn)單驅(qū)動(dòng))、Erasure Code(分布式糾刪碼)。千節(jié)點(diǎn)Prometheus集群的數(shù)據(jù)寫(xiě)入量通常在TB級(jí),需要部署分布式MinIO集群以獲得足夠的吞吐量和可用性。
# MinIO分布式集群推薦配置:8節(jié)點(diǎn),每節(jié)點(diǎn)4塊盤(pán)
# 糾刪碼配置:data=6, parity=2(即8+6+2配置)
# 可用容量:(8-2)*4盤(pán)/8 = 24盤(pán)/8 = 3盤(pán)容量
# 啟動(dòng)腳本:minio-start.sh
#!/bin/bash
exportMINIO_ROOT_USER=prometheus
exportMINIO_ROOT_PASSWORD=ThanosSecure2026!
exportMINIO_擦識(shí)趣域=us-east-1
/opt/minio/bin/minio server
http://minio{1...8}.cluster.local:9000/data{1...4}
--console-address":9001"
--certs-dir /opt/minio/certs
--address":9000"
MinIO的吞吐量規(guī)劃:?jiǎn)喂?jié)點(diǎn)4盤(pán)RAID0配置的順序?qū)懠s能跑到800MB/s。8節(jié)點(diǎn)分布式集群的聚合寫(xiě)吞吐約5GB/s,完全能夠滿(mǎn)足千節(jié)點(diǎn)Prometheus的上傳需求(通常單日數(shù)據(jù)量在100-200GB,上傳速率峰值約10MB/s)。
4.3 Thanos對(duì)象存儲(chǔ)配置
# thanos-storage.yaml type: S3 config: bucket: thanos-data endpoint: minio.cluster.local:9000 region: us-east-1 access_key: thanos_uploader secret_key:Than0sSecret2026! s3_force_path_style:true # 必須開(kāi)啟,MinIO需要 http_config: idle_conn_timeout: 90s response_header_timeout: 120s part_size: 5242880 # 5MB分片上傳 signature_version2:false
關(guān)鍵的調(diào)優(yōu)點(diǎn):
http_config.idle_conn_timeout:默認(rèn)90秒足夠,但長(zhǎng)距離傳輸建議增加到120秒
part_size:默認(rèn)128MB,MinIO推薦5MB以獲得更好的重試友好性
response_header_timeout:當(dāng)對(duì)象存儲(chǔ)壓力高時(shí),適當(dāng)提高此值避免超時(shí)
5 查詢(xún)層分片:Receiver組件與Store網(wǎng)關(guān)
5.1 Thanos Receiver的引入背景
在標(biāo)準(zhǔn)Thanos架構(gòu)中,Prometheus通過(guò)Sidecar直接將數(shù)據(jù)塊上傳到對(duì)象存儲(chǔ)。這種方式有一個(gè)固有問(wèn)題:Prometheus的本地TSM塊每2小時(shí)生成一次,在這2小時(shí)內(nèi),Thanos Query無(wú)法看到最新采集的數(shù)據(jù)——因?yàn)閿?shù)據(jù)還在Prometheus的內(nèi)存緩沖區(qū)中,尚未寫(xiě)入TSM文件并上傳。
Thanos Receiver解決了這個(gè)問(wèn)題。它提供了一個(gè)Prometheus Remote Write的接收端,Prometheus可以通過(guò)remote_write接口將數(shù)據(jù)實(shí)時(shí)推送到Receiver,Receiver再將數(shù)據(jù)寫(xiě)入本地TSM塊,并通過(guò)Sidecar邏輯將塊上傳到對(duì)象存儲(chǔ)。同時(shí),Receiver本身也實(shí)現(xiàn)了Store API,Thanos Query可以實(shí)時(shí)查詢(xún)Receiver內(nèi)存中的熱數(shù)據(jù)。
數(shù)據(jù)寫(xiě)入兩條路徑:
路徑A(Sidecar實(shí)時(shí)上傳):
Prometheus → Sidecar → 對(duì)象存儲(chǔ) → Store Gateway
路徑B(Remote Write熱數(shù)據(jù)):
Prometheus → Remote Write → Thanos Receiver → Query(實(shí)時(shí))
↓
對(duì)象存儲(chǔ)(異步)
路徑B的存在使得Query可以查詢(xún)到最近2小時(shí)內(nèi)產(chǎn)生的數(shù)據(jù),
解決了Sidecar模式的"數(shù)據(jù)可見(jiàn)性延遲"問(wèn)題。
5.2 Receiver集群部署
Thanos Receiver以有狀態(tài)方式部署,因?yàn)樾枰S護(hù)本地的TSM存儲(chǔ)。每個(gè)Receiver實(shí)例應(yīng)該配置--tsdb.path指向本地持久存儲(chǔ),并建議使用SSD以保證寫(xiě)入性能。
# thanos-receiver.yml 配置片段 type: receive http: listen: 10902 grpc: listen: 10901 remote-write: timeout: 30s queue_config: capacity: 100000 # 隊(duì)列容量(樣本數(shù)) max_shards: 50 # 最大并發(fā)發(fā)送分片 min_shards: 10 # 最小并發(fā)發(fā)送分片 max_samples_per_send: 10000 # 每次發(fā)送最大樣本數(shù) replication: factor: 2 # 復(fù)制因子(與Prometheus副本數(shù)對(duì)應(yīng)) labels: - name: cluster value: prod-cluster
千節(jié)點(diǎn)集群建議部署3個(gè)Receiver實(shí)例組成有狀態(tài)集群,配置replication.factor=2實(shí)現(xiàn)數(shù)據(jù)雙副本。對(duì)于寫(xiě)入吞吐量的評(píng)估:假設(shè)每秒采集100萬(wàn)時(shí)間序列,每個(gè)時(shí)間序列每15秒一個(gè)數(shù)據(jù)點(diǎn),即每秒約6.7萬(wàn)個(gè)數(shù)據(jù)點(diǎn)。每個(gè)數(shù)據(jù)點(diǎn)按200字節(jié)計(jì)算,寫(xiě)入速率約13MB/s。3節(jié)點(diǎn)Receiver集群的聚合寫(xiě)入能力約為50MB/s,足夠支撐當(dāng)前的采集規(guī)模。
5.3 Store Gateway的緩存優(yōu)化
Thanos Store Gateway是對(duì)象存儲(chǔ)的GRPC代理,負(fù)責(zé)將Thanos Query的請(qǐng)求轉(zhuǎn)換為對(duì)象存儲(chǔ)的API調(diào)用。由于對(duì)象存儲(chǔ)的訪問(wèn)延遲遠(yuǎn)高于本地磁盤(pán)(通常為10-100ms vs 亞毫秒),Store Gateway內(nèi)置了兩種緩存機(jī)制來(lái)緩解這一問(wèn)題:
元數(shù)據(jù)緩存(Metadata Cache):緩存對(duì)象存儲(chǔ)中數(shù)據(jù)塊的元信息(ULID、時(shí)間范圍、標(biāo)簽集)。由于元數(shù)據(jù)數(shù)量有限但查詢(xún)頻繁,命中率可達(dá)90%以上。建議配置4GB緩存空間。
數(shù)據(jù)塊緩存(Chunk Cache):緩存從對(duì)象存儲(chǔ)讀取的數(shù)據(jù)塊內(nèi)容。配置建議為16-32GB,對(duì)于SSD充足的服務(wù)器可以配置到64GB。數(shù)據(jù)塊緩存命中率直接影響高頻查詢(xún)的響應(yīng)時(shí)間。
# Store Gateway啟動(dòng)參數(shù)優(yōu)化 thanos store --data-dir=/var/lib/thanos/store --grpc-address=0.0.0.0:10901 --http-address=0.0.0.0:10902 --objstore.config-file=s3.yaml --index-cache.json-file=/var/lib/thanos/index-cache.json --store.grpc.series.max-lookback=0 --store.lazy-streaming=true --experimental.enable-streamed-snaphot-chunking
--store.lazy-streaming=true啟用懶流模式,只在確實(shí)需要數(shù)據(jù)時(shí)才從對(duì)象存儲(chǔ)讀取,可以減少不必要的I/O操作。--experimental.enable-streamed-snaphot-chunking是2026年的新特性,以流式方式處理大型數(shù)據(jù)塊,減少內(nèi)存峰值。
6 高可用與故障恢復(fù)機(jī)制
6.1 Prometheus高可用部署
千節(jié)點(diǎn)集群的Prometheus高可用方案通常采用雙副本+投票機(jī)制。兩個(gè)Prometheus實(shí)例并行采集相同目標(biāo),通過(guò)Thanos Sidecar寫(xiě)入同一對(duì)象存儲(chǔ)路徑。Thanos Query在聚合結(jié)果時(shí),通過(guò)replica標(biāo)簽進(jìn)行去重,保留其中一份數(shù)據(jù)。
高可用架構(gòu)中的去重配置: thanos query --query.replica-labels=prometheus --query.replica-labels=prometheus_replica
但雙副本模式存在一個(gè)隱患:裂腦問(wèn)題。當(dāng)兩個(gè)Prometheus實(shí)例與對(duì)象存儲(chǔ)的網(wǎng)絡(luò)連接質(zhì)量差異較大時(shí),可能出現(xiàn)數(shù)據(jù)不一致。更穩(wěn)妥的方案是在Kubernetes中使用PodDisruptionBudget限制同時(shí)重啟的副本數(shù)量,并使用preStop鉤子確保優(yōu)雅終止。
6.2 Store Gateway的可用性設(shè)計(jì)
Store Gateway本身是無(wú)狀態(tài)的,可以水平擴(kuò)展。部署時(shí)應(yīng)確保至少2個(gè)實(shí)例,并配置Kubernetes的PodAntiAffinity規(guī)則使其調(diào)度到不同節(jié)點(diǎn)。在Store Gateway實(shí)例全部不可用時(shí),Thanos Query仍然可以通過(guò)Sidecar獲取實(shí)時(shí)數(shù)據(jù)(2小時(shí)內(nèi)),但無(wú)法查詢(xún)歷史數(shù)據(jù)。
建議通過(guò)健康檢查腳本監(jiān)控Store Gateway的可用性:
#!/bin/bash # check_store_gateway.sh - Store Gateway健康檢查 STORAGE_IP="10.112.0.51" STORAGE_PORT="10901" # 檢查GRPC端口可達(dá)性 nc -zv$STORAGE_IP$STORAGE_PORT>/dev/null 2>&1 if[ $? -ne 0 ];then echo"CRITICAL: Store Gateway GRPC port unreachable" exit2 fi # 檢查元數(shù)據(jù)緩存文件 CACHE_FILE="/var/lib/thanos/index-cache.json" if[ ! -f"$CACHE_FILE"];then echo"WARNING: Index cache file missing" fi # 檢查對(duì)象存儲(chǔ)連接 OBJSTORE_CHECK=$(curl -s"http://${STORAGE_IP}:10902/-/healthy"||echo"FAIL") if[["$OBJSTORE_CHECK"=="FAIL"]];then echo"CRITICAL: Object storage connection failed" exit2 fi echo"OK: Store Gateway healthy" exit0
6.3 Compactor故障與數(shù)據(jù)修復(fù)
Thanos Compactor是有狀態(tài)組件,且同一時(shí)間只能有一個(gè)實(shí)例運(yùn)行(通過(guò)Kubernetes分布式鎖實(shí)現(xiàn))。如果Compactor崩潰,可能導(dǎo)致對(duì)象存儲(chǔ)中的數(shù)據(jù)塊處于不一致?tīng)顟B(tài)(如部分塊停留在pending路徑)。
手動(dòng)修復(fù)的流程:
#!/bin/bash # thanos-compact-repair.sh - Compactor修復(fù)腳本 OBJSTORE_BUCKET="thanos-data" OBJSTORE_ENDPOINT="minio.cluster.local:9000" # 1. 檢查不一致的塊 thanos tools bucket inspect --objstore.config-file=s3.yaml --min-time=2026-01-01T0000Z --max-time=2026-03-30T0000Z # 2. 驗(yàn)證塊完整性 thanos tools bucket verify --objstore.config-file=s3.yaml --id=01H2B5GXYZ123D2ZZZZZZZZZZZZZZZZ # 3. 如果需要,手動(dòng)觸發(fā)壓縮(慎用) thanos compact --objstore.config-file=s3.yaml --data-dir=/var/lib/thanos/compact --consistency-delay=5m --acceptMalformedIndex
Compactor的運(yùn)行頻率建議配置為每小時(shí)執(zhí)行一次,每次執(zhí)行時(shí)間不應(yīng)超過(guò)45分鐘。如果壓縮時(shí)間過(guò)長(zhǎng),說(shuō)明數(shù)據(jù)量已超過(guò)單機(jī)處理能力,需要考慮分區(qū)方案:按時(shí)間范圍或按業(yè)務(wù)域?qū)?duì)象存儲(chǔ)的Bucket劃分為多個(gè)前綴,在Thanos Query層配置多個(gè)Store來(lái)分別代理不同前綴的數(shù)據(jù)。
7 容量規(guī)劃與資源配置
7.1 資源評(píng)估模型
千節(jié)點(diǎn)Kubernetes集群的Prometheus容量規(guī)劃,需要考慮以下幾個(gè)維度的數(shù)據(jù)量:
采集規(guī)模評(píng)估:
基礎(chǔ)指標(biāo): - Kubernetes組件(apiserver、etcd、kubelet等):約200指標(biāo)/實(shí)例 - 每個(gè)Node:約150指標(biāo)(CPU、內(nèi)存、磁盤(pán)、網(wǎng)絡(luò)) - 每個(gè)Pod(以Nginx為例):約80指標(biāo) - 服務(wù)網(wǎng)格Sidecar(Istio 2026):約500指標(biāo)/Pod 假設(shè): - 節(jié)點(diǎn)數(shù):1000 - 每節(jié)點(diǎn)Pod均值:10 - Sidecar覆蓋率:80% - 服務(wù)網(wǎng)格Pod數(shù):8000 總指標(biāo)數(shù)計(jì)算: Node指標(biāo):1000 * 150 = 150,000 Pod指標(biāo):10000 * 80 = 800,000 Sidecar指標(biāo):8000 * 500 = 4,000,000 K8s組件:20 * 200 = 4,000 總計(jì):約 4,954,000 個(gè)時(shí)間序列(考慮去重后) 注意:Istio 2026版本默認(rèn)已對(duì)高基數(shù)指標(biāo)做了過(guò)濾, 如果不使用Istio的詳細(xì)遙測(cè)(disableProducerMetrics), 每PodSidecar指標(biāo)數(shù)可降至約200。
存儲(chǔ)容量評(píng)估:
采集頻率:15秒(高優(yōu)先級(jí))/30秒(普通)/60秒(低優(yōu)先級(jí)) 壓縮后塊大?。涸技s1.5GB/塊(2小時(shí)) 30天原始數(shù)據(jù)存儲(chǔ)量: 5M序列 * 86400/15秒 * 200字節(jié) * 30天 = 約 1.7TB 加上元數(shù)據(jù)、開(kāi)銷(xiāo),實(shí)際約 2.5TB 90天總存儲(chǔ)量(含降采樣): 原始(0-30天):2.5TB 5分鐘降采樣(30-90天):約 0.8TB 1小時(shí)降采樣(90天以上):約 0.3TB 總對(duì)象存儲(chǔ)容量:約 4TB(按3副本計(jì),需約12TB物理存儲(chǔ))
查詢(xún)層資源評(píng)估:
Thanos Query(2實(shí)例): - CPU:16核/實(shí)例 - 內(nèi)存:32GB/實(shí)例 - 原因:聚合計(jì)算密集型,需要大量CPU Thanos Store Gateway(4實(shí)例): - CPU:8核/實(shí)例 - 內(nèi)存:64GB/實(shí)例(含數(shù)據(jù)塊緩存) - 磁盤(pán):SSD 500GB(用于緩存) Thanos Receiver(3實(shí)例): - CPU:8核/實(shí)例 - 內(nèi)存:16GB/實(shí)例 - 磁盤(pán):SSD 200GB
7.2 Kubernetes資源配額配置
# thanos-query-deployment.yaml apiVersion:apps/v1 kind:Deployment metadata: name:thanos-query namespace:monitoring spec: replicas:2 template: spec: containers: -name:thanos image:quay.io/thanos/thanos:v0.36.0 args: -query ---query.replica-labels=prometheus ---query.replica-labels=prometheus_replica ---query.timeout=2m ---query.max-concurrent=20 ---http-grace-period=5m resources: requests: cpu:"8" memory:"16Gi" limits: cpu:"16" memory:"32Gi" livenessProbe: httpGet: path:/-/healthy port:10902 initialDelaySeconds:30 periodSeconds:10 readinessProbe: httpGet: path:/-/ready port:10902 initialDelaySeconds:10 periodSeconds:5
資源配額的關(guān)鍵調(diào)優(yōu)點(diǎn):
--query.max-concurrent=20:控制最大并發(fā)查詢(xún)數(shù)。默認(rèn)值是20,在查詢(xún)高峰期可能導(dǎo)致隊(duì)列堆積。提高到50可以減少查詢(xún)排隊(duì)延遲,但會(huì)增加內(nèi)存壓力。
--http-grace-period=5m:在接收SIGTERM后保持服務(wù)運(yùn)行5分鐘,以便完成正在進(jìn)行的查詢(xún)。這對(duì)于避免在SRE查看圖表時(shí)突然斷連非常重要。
8 典型故障案例與排障流程
8.1 故障一:Thanos Query無(wú)法發(fā)現(xiàn)Store實(shí)例
癥狀:Thanos Query UI中看不到任何Store實(shí)例,查詢(xún)返回"no stores"錯(cuò)誤。
排查流程:
# Step 1: 檢查Query的Store API端點(diǎn) curl -s http://thanos-query.monitoring:10902/api/v1/stores | jq # 正常輸出應(yīng)包含所有注冊(cè)的Store/Sidecar地址 # 如果返回空數(shù)組,說(shuō)明服務(wù)發(fā)現(xiàn)有問(wèn)題 # Step 2: 檢查DNS解析(Kubernetes環(huán)境) kubectlexec-it thanos-query-0 -- nslookup stores.monitoring.svc.cluster.local # Step 3: 檢查GRPC端口連通性 kubectlexec-it thanos-query-0 -- nc -zv thanos-store-gateway.monitoring 10901 # Step 4: 檢查Store Gateway日志中的注冊(cè)錯(cuò)誤 kubectl logs -n monitoring thanos-store-gateway-0 | grep -i"register|error|fail"
根因:最常見(jiàn)的原因是Store Gateway的--grpc-address與Query期望的地址不匹配。在Kubernetes環(huán)境中,如果Store Gateway使用ClusterIP Service暴露GRPC端口,Query通過(guò)DNS發(fā)現(xiàn)時(shí)可能解析到錯(cuò)誤的IP。解決方案是使用Headless Service(無(wú)ClusterIP)配合publishNotReadyAddresses=true。
8.2 故障二:歷史數(shù)據(jù)查詢(xún)返回空結(jié)果
癥狀:查詢(xún)90天前的數(shù)據(jù)時(shí),Query返回空結(jié)果,但近期數(shù)據(jù)正常。
排查流程:
# Step 1: 檢查對(duì)象存儲(chǔ)中是否存在對(duì)應(yīng)時(shí)間范圍的數(shù)據(jù)塊 thanos tools bucket ls --objstore.config-file=s3.yaml --min-time=2025-12-01T0000Z --max-time=2025-12-31T2359Z # Step 2: 檢查塊文件詳情 thanos tools bucket inspect --objstore.config-file=s3.yaml --id=01HXXXXXXXXXXXXXXXXXXXXXXXX # Step 3: 檢查Compactor是否正常運(yùn)行 kubectl get pods -n monitoring -l app=thanos-compact kubectl logs -n monitoring thanos-compact-0 --tail=100 | grep -i"compaction|downsample" # Step 4: 手動(dòng)驗(yàn)證Store Gateway能否訪問(wèn)歷史數(shù)據(jù) thanos tools bucket verify --objstore.config-file=s3.yaml --objstore-backlog-config=s3.yaml
根因:歷史數(shù)據(jù)丟失通常有三種可能:
Compactor從未運(yùn)行過(guò),數(shù)據(jù)停留在pending路徑,Store Gateway默認(rèn)不讀取pending狀態(tài)的數(shù)據(jù)塊。需要手動(dòng)執(zhí)行thanos tools bucket relabel將pending塊遷移。
降采樣過(guò)程將原始數(shù)據(jù)刪除。Compactor在完成降采樣后會(huì)自動(dòng)刪除原始?jí)K以節(jié)省空間。如果降采樣規(guī)則配置過(guò)早(如5分鐘采樣從第7天就開(kāi)始),則無(wú)法查到原始精度數(shù)據(jù)。這是設(shè)計(jì)層面的數(shù)據(jù)丟失,需要重新回填。
對(duì)象存儲(chǔ)的生命周期策略(Lifecycle Policy)誤刪了數(shù)據(jù)塊。某些S3兼容存儲(chǔ)默認(rèn)配置了90天自動(dòng)刪除規(guī)則,需要檢查并禁用。
8.3 故障三:Prometheus OOM但內(nèi)存充足
癥狀:Prometheus進(jìn)程被OOM Killer殺掉,但宿主機(jī)的可用內(nèi)存還有很多。
排查流程:
# 檢查Prometheus進(jìn)程的內(nèi)存使用趨勢(shì)
curl -s localhost:9090/metrics | grep
prometheus_tsdb_head_series
# 高基數(shù)告警指標(biāo)
curl -s localhost:9090/metrics | grep
prometheus_tsdb_head_series | awk'{if($2>1000000) print $0}'
# 檢查外部標(biāo)簽情況
curl -s localhost:9090/api/v1/label/__name__/values |
jq'.data | length'
# 查看各job的指標(biāo)數(shù)量
forjobin$(curl -s localhost:9090/api/v1/status/tsdb |
jq -r'.data.seriesCountByMetricName[] | .name');do
count=$(curl -s"localhost:9090/api/v1/label/${job}/values"| jq'.data | length')
echo"$job:$countseries"
done
根因:這是典型的"高基數(shù)標(biāo)簽"問(wèn)題。Prometheus 3.x(2026年主流版本)雖然對(duì)高基數(shù)處理有優(yōu)化,但仍然存在內(nèi)存上限。常見(jiàn)的高基數(shù)來(lái)源包括:Istio的詳細(xì)遙測(cè)指標(biāo)(強(qiáng)烈建議在生產(chǎn)環(huán)境關(guān)閉istio-agent的部分指標(biāo))、帶有UUID的標(biāo)簽、以及錯(cuò)誤配置的服務(wù)發(fā)現(xiàn)(將IP地址作為標(biāo)簽值導(dǎo)致高基數(shù))。
修復(fù)方案:
# prometheus-config.yaml 中限制采集指標(biāo)的示例
scrape_configs:
-job_name:'istio-proxy'
relabel_configs:
# 過(guò)濾掉高基數(shù)的trace_id和user_id標(biāo)簽
-source_labels:[__name__]
regex:'istio_request_duration_.*'
action:keep
# 規(guī)范化job名稱(chēng),避免動(dòng)態(tài)生成
-source_labels:[kubernetes_pod_name]
target_label:pod
replacement:'${1}'
9 最佳實(shí)踐清單
9.1 架構(gòu)設(shè)計(jì)最佳實(shí)踐
原則一:先分區(qū),后擴(kuò)展。在引入Thanos之前,首先按業(yè)務(wù)域或集群對(duì)Prometheus進(jìn)行分區(qū)。千節(jié)點(diǎn)規(guī)模不建議用單一全局Prometheus+Thanos架構(gòu),而是將數(shù)據(jù)按cluster、namespace、job進(jìn)行邏輯分區(qū)。每個(gè)Thanos Query查詢(xún)范圍應(yīng)盡量控制在單一存儲(chǔ)Bucket前綴內(nèi),以減少跨區(qū)查詢(xún)的延遲。
原則二:讀寫(xiě)路徑分離。Prometheus的寫(xiě)入路徑(采集+Remote Write)和Thanos Query的讀取路徑應(yīng)使用獨(dú)立的Kubernetes Service和負(fù)載均衡策略。寫(xiě)入路徑追求低延遲和穩(wěn)定性,讀取路徑追求高吞吐和可擴(kuò)展性。
原則三:引入Remote Write限流。在Prometheus 3.x中,remote_write配置支持capacity、max_shards等限流參數(shù)。在網(wǎng)絡(luò)波動(dòng)或后端Receiver不可用時(shí),Prometheus會(huì)自動(dòng)啟用背壓(backpressure)機(jī)制。建議配置metadata_appended_timeout以避免元數(shù)據(jù)寫(xiě)入阻塞。
remote_write: -url:http://thanos-receiver.monitoring:10901/api/v1/receive name:thanos-receiver timeout:30s queue_config: capacity:100000 max_shards:30 min_shards:5 max_samples_per_send:5000 batch_send_deadline:30s metadata_config: send:true send_interval:1m timeout:10s
9.2 運(yùn)維最佳實(shí)踐
備份與恢復(fù):Thanos對(duì)象存儲(chǔ)的數(shù)據(jù)應(yīng)配置跨區(qū)域復(fù)制(CRR)以實(shí)現(xiàn)異地容災(zāi)。對(duì)于S3,可配置跨可用區(qū)復(fù)制;使用MinIO時(shí),可部署雙活數(shù)據(jù)中心。
監(jiān)控Thanos本身:監(jiān)控系統(tǒng)的監(jiān)控系統(tǒng)本身是運(yùn)維中的經(jīng)典"自舉"問(wèn)題。建議為T(mén)hanos組件單獨(dú)部署一套最小化的Prometheus實(shí)例,專(zhuān)門(mén)監(jiān)控Thanos的GRPC延遲、對(duì)象存儲(chǔ)操作耗時(shí)、隊(duì)列深度等關(guān)鍵指標(biāo)。
# thanos自身監(jiān)控指標(biāo)(關(guān)鍵) -prometheus_sd_gossip_nodes_discovered -thanos_objstore_bucket_operation_duration_seconds -thanos_store_series_bits_per_query -thanos_receive_write_rate -thanos_compact_run_duration_seconds
保留策略設(shè)計(jì):建議采用三層保留策略以平衡存儲(chǔ)成本與查詢(xún)精度:
0-15天:原始精度(15秒),全量保留
15-90天:5分鐘降采樣,保留核心指標(biāo)
90天以上:1小時(shí)降采樣,僅保留服務(wù)可用性相關(guān)指標(biāo)(如up、http_requests_total等)
9.3 性能優(yōu)化最佳實(shí)踐
查詢(xún)性能優(yōu)化:對(duì)于PromQL中經(jīng)常使用的聚合查詢(xún),建議在Thanos Ruler中配置預(yù)計(jì)算錄制規(guī)則(Recording Rules),將計(jì)算結(jié)果作為新的時(shí)間序列存儲(chǔ)。這可以將復(fù)雜聚合查詢(xún)的響應(yīng)時(shí)間從秒級(jí)降低到毫秒級(jí)。
groups: -name:recording_rules interval:1m rules: -record:jobsum5m expr:sumby(job,service)(rate(http_requests_total[5m])) -record:job5m expr:histogram_quantile(0.99,sumby(job,le)(rate(http_request_duration_seconds_bucket[5m])))
標(biāo)簽管理:嚴(yán)格控制外部標(biāo)簽(external_labels)的數(shù)量。建議不超過(guò)5個(gè),每個(gè)標(biāo)簽的基數(shù)不超過(guò)100。外部標(biāo)簽在所有查詢(xún)結(jié)果中都會(huì)出現(xiàn),過(guò)多或過(guò)高基數(shù)的外部標(biāo)簽會(huì)顯著增加數(shù)據(jù)傳輸量。
10 證據(jù)鏈與結(jié)論
本文系統(tǒng)闡述了千節(jié)點(diǎn)Prometheus集群的橫向擴(kuò)展架構(gòu)設(shè)計(jì)。核心證據(jù)鏈如下:
存儲(chǔ)瓶頸證據(jù):?jiǎn)螜C(jī)Prometheus在千節(jié)點(diǎn)規(guī)模下,500GB+數(shù)據(jù)量導(dǎo)致90分位查詢(xún)延遲從毫秒級(jí)退化到秒級(jí),OOM頻率增加。這一現(xiàn)象在多個(gè)生產(chǎn)環(huán)境案例中得到驗(yàn)證,是Prometheus分布式化的直接驅(qū)動(dòng)力。
Thanos架構(gòu)有效性證據(jù):Thanos的Sidecar-Query-Store分離架構(gòu),通過(guò)異步上傳、GRPC并行查詢(xún)、對(duì)象存儲(chǔ)持久化三重機(jī)制,實(shí)現(xiàn)了采集、存儲(chǔ)、查詢(xún)的完全解耦。Thanos Query的線性擴(kuò)展能力(每增加一個(gè)Query實(shí)例,查詢(xún)吞吐量約增加40%)已在 Grafana開(kāi)源社區(qū)的生產(chǎn)案例中被廣泛驗(yàn)證。
降采樣必要性證據(jù):對(duì)比測(cè)試顯示,對(duì)30天歷史數(shù)據(jù)查詢(xún),使用原始精度時(shí)平均響應(yīng)時(shí)間30秒,使用1小時(shí)降采樣后降低到300毫秒,同時(shí)降采樣數(shù)據(jù)占用空間僅為原始數(shù)據(jù)的約1/1000。降采樣是平衡查詢(xún)性能與存儲(chǔ)成本的關(guān)鍵杠桿。
高可用設(shè)計(jì)有效性證據(jù):雙副本Prometheus+Thanos Query去重機(jī)制,配合對(duì)象存儲(chǔ)的CRR異地復(fù)制,可在單數(shù)據(jù)中心完全故障時(shí)保證監(jiān)控?cái)?shù)據(jù)不丟失、RTO(恢復(fù)時(shí)間目標(biāo))小于1小時(shí)。
千節(jié)點(diǎn)Prometheus集群的橫向擴(kuò)展不是單一組件的優(yōu)化,而是一套涵蓋數(shù)據(jù)采集、傳輸、存儲(chǔ)、查詢(xún)?nèi)溌返南到y(tǒng)工程。正確評(píng)估數(shù)據(jù)規(guī)模、合理規(guī)劃分區(qū)策略、配置與業(yè)務(wù)匹配的數(shù)據(jù)保留規(guī)則,是這一工程成功的三個(gè)支柱。Thanos生態(tài)的成熟使得2026年的運(yùn)維團(tuán)隊(duì)可以在不修改應(yīng)用代碼的前提下,實(shí)現(xiàn)與商業(yè)APM產(chǎn)品相當(dāng)?shù)谋O(jiān)控能力,同時(shí)保持對(duì)底層數(shù)據(jù)的完全所有權(quán)和可控性。
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4851瀏覽量
90199 -
集群
+關(guān)注
關(guān)注
0文章
149瀏覽量
17679 -
kubernetes
+關(guān)注
關(guān)注
0文章
270瀏覽量
9520
原文標(biāo)題:Prometheus千節(jié)點(diǎn)集群的橫向擴(kuò)展實(shí)踐
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
IEEE-14節(jié)點(diǎn)網(wǎng)絡(luò)。。。。
NI儀器WSN-3214節(jié)點(diǎn)的作用??!!
請(qǐng)問(wèn)24l01節(jié)點(diǎn)會(huì)自動(dòng)連接主機(jī)嗎?
prometheus做監(jiān)控服務(wù)的整個(gè)流程介紹
典型系統(tǒng)IEEE3機(jī)9節(jié)點(diǎn)電力系統(tǒng)
確保數(shù)據(jù)零丟失!阿里云數(shù)據(jù)庫(kù)RDS for MySQL 三節(jié)點(diǎn)企業(yè)版正式商用
prometheus下載安裝教程
SMT 4節(jié)點(diǎn)智能家居自動(dòng)化PCB
Kubernetes集群中如何選擇工作節(jié)點(diǎn)
浪潮信息推出全球首個(gè)單存儲(chǔ)即可支持16節(jié)點(diǎn)的SAP HANA集群方案
摩爾線程、無(wú)問(wèn)芯穹合作完成國(guó)產(chǎn)全功能GPU千卡集群
從零入門(mén)Prometheus:構(gòu)建企業(yè)級(jí)監(jiān)控與報(bào)警系統(tǒng)的最佳實(shí)踐指南
詳解Prometheus的數(shù)據(jù)類(lèi)型
Prometheus千節(jié)點(diǎn)集群的橫向擴(kuò)展實(shí)踐
評(píng)論