91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Prometheus千節(jié)點(diǎn)集群的橫向擴(kuò)展實(shí)踐

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2026-03-31 14:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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)和可控性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(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)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    IEEE-14節(jié)點(diǎn)網(wǎng)絡(luò)。。。。

    請(qǐng)問(wèn)IEEE-14節(jié)點(diǎn)網(wǎng)絡(luò)里,支路的額定電壓和額定電流的單位是什么?謝謝謝謝!
    發(fā)表于 05-17 10:48

    NI儀器WSN-3214節(jié)點(diǎn)的作用??!!

    請(qǐng)問(wèn)有哪位大哥大姐大神知道NI儀器WSN-3214節(jié)點(diǎn)如何接線和各借口代表什么意思(各接口的作用)????!
    發(fā)表于 03-29 13:57

    請(qǐng)問(wèn)24l01節(jié)點(diǎn)會(huì)自動(dòng)連接主機(jī)嗎?

    24l01節(jié)點(diǎn)會(huì)自動(dòng)連接主機(jī)
    發(fā)表于 06-01 15:53

    prometheus做監(jiān)控服務(wù)的整個(gè)流程介紹

    最近有個(gè)新項(xiàng)目需要搞一套完整的監(jiān)控告警系統(tǒng),我們使用了開(kāi)源監(jiān)控告警系統(tǒng)Prometheus;其功能強(qiáng)大,可以很方便對(duì)其進(jìn)行擴(kuò)展,并且可以安裝和使用簡(jiǎn)單;本文首先介紹Prometheus的整個(gè)監(jiān)控流程
    發(fā)表于 12-23 17:34

    典型系統(tǒng)IEEE3機(jī)9節(jié)點(diǎn)電力系統(tǒng)

    典型系統(tǒng)IEEE3機(jī)9節(jié)點(diǎn)電力系統(tǒng)
    發(fā)表于 01-23 14:24 ?54次下載

    確保數(shù)據(jù)零丟失!阿里云數(shù)據(jù)庫(kù)RDS for MySQL 三節(jié)點(diǎn)企業(yè)版正式商用

    認(rèn)為已經(jīng)達(dá)成集群一致,數(shù)據(jù)狀態(tài)機(jī)也只會(huì)應(yīng)用已達(dá)成多數(shù)派的日志,故三節(jié)點(diǎn)能夠保證數(shù)據(jù)強(qiáng)一致,任何一個(gè)節(jié)點(diǎn)的不可用不會(huì)影響到集群達(dá)成一致性的決定。另外,在技術(shù)上將第三
    發(fā)表于 11-14 23:06 ?757次閱讀

    prometheus下載安裝教程

    Prometheus 是一個(gè)開(kāi)放性的監(jiān)控解決方案,用戶(hù)可以非常方便的安裝和使用 Prometheus 并且能夠非常方便的對(duì)其進(jìn)行擴(kuò)展。 在Prometheus的架構(gòu)設(shè)計(jì)中,
    的頭像 發(fā)表于 01-13 16:07 ?9942次閱讀
    <b class='flag-5'>prometheus</b>下載安裝教程

    SMT 4節(jié)點(diǎn)智能家居自動(dòng)化PCB

    電子發(fā)燒友網(wǎng)站提供《SMT 4節(jié)點(diǎn)智能家居自動(dòng)化PCB.zip》資料免費(fèi)下載
    發(fā)表于 06-26 10:49 ?1次下載
    SMT 4<b class='flag-5'>節(jié)點(diǎn)</b>智能家居自動(dòng)化PCB

    Kubernetes集群中如何選擇工作節(jié)點(diǎn)

    簡(jiǎn)要概述: 本文討論了在Kubernetes集群中選擇較少數(shù)量的較大節(jié)點(diǎn)和選擇較多數(shù)量的較小節(jié)點(diǎn)之間的利弊。
    的頭像 發(fā)表于 08-28 15:46 ?1386次閱讀
    Kubernetes<b class='flag-5'>集群</b>中如何選擇工作<b class='flag-5'>節(jié)點(diǎn)</b>

    浪潮信息推出全球首個(gè)單存儲(chǔ)即可支持16節(jié)點(diǎn)的SAP HANA集群方案

    近日,浪潮信息成功實(shí)現(xiàn)并推出全球首個(gè)單存儲(chǔ)即可支持16節(jié)點(diǎn)的SAP HANA集群方案,全閃存儲(chǔ)HF5000系列作為該方案的數(shù)據(jù)存儲(chǔ)底座,助力以最優(yōu)的性能和成本為企業(yè)創(chuàng)建大規(guī)模、易擴(kuò)展、高穩(wěn)定的業(yè)務(wù)數(shù)據(jù)處理能力。
    的頭像 發(fā)表于 04-01 10:03 ?1097次閱讀

    摩爾線程、無(wú)問(wèn)芯穹合作完成國(guó)產(chǎn)全功能GPU集群

    據(jù)介紹,此項(xiàng)訓(xùn)練歷時(shí)13.2天,過(guò)程穩(wěn)定而有序,集群整體運(yùn)行穩(wěn)定性達(dá)到了100%。相較于單機(jī)訓(xùn)練,集群擴(kuò)展效率提升了超過(guò)90%。
    的頭像 發(fā)表于 05-27 14:40 ?1427次閱讀

    從零入門(mén)Prometheus:構(gòu)建企業(yè)級(jí)監(jiān)控與報(bào)警系統(tǒng)的最佳實(shí)踐指南

    測(cè)試環(huán)境 prometheus-2.26.0.linux-amd64.tar.gz下載地址:https://github.com/prometheus/prometheus/releases
    的頭像 發(fā)表于 02-10 11:28 ?1361次閱讀
    從零入門(mén)<b class='flag-5'>Prometheus</b>:構(gòu)建企業(yè)級(jí)監(jiān)控與報(bào)警系統(tǒng)的最佳<b class='flag-5'>實(shí)踐</b>指南

    詳解Prometheus的數(shù)據(jù)類(lèi)型

    對(duì)于 Prometheus 生態(tài)的監(jiān)控系統(tǒng),PromQL 是必備技能,本文著重點(diǎn)講解這個(gè)查詢(xún)語(yǔ)言,摻雜一些生產(chǎn)實(shí)踐場(chǎng)景,希望對(duì)你有所幫助。
    的頭像 發(fā)表于 05-13 09:50 ?1543次閱讀
    詳解<b class='flag-5'>Prometheus</b>的數(shù)據(jù)類(lèi)型

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過(guò)數(shù)據(jù)分片和主從復(fù)制實(shí)現(xiàn)高可用性和橫向擴(kuò)展。集群將整個(gè)數(shù)據(jù)集分割成16384個(gè)哈希槽(hash slots),每個(gè)
    的頭像 發(fā)表于 07-17 11:04 ?1097次閱讀

    使用VictoriaMetrics的Prometheus遠(yuǎn)程存儲(chǔ)方案

    Prometheus單機(jī)存儲(chǔ)在生產(chǎn)環(huán)境跑到一定規(guī)模就會(huì)碰壁——單節(jié)點(diǎn)磁盤(pán)容量有限,TSDB默認(rèn)保留15天數(shù)據(jù),想存半年以上的監(jiān)控?cái)?shù)據(jù)基本不現(xiàn)實(shí)。更麻煩的是Prometheus沒(méi)有原生的高可用方案
    的頭像 發(fā)表于 02-26 16:30 ?270次閱讀