伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何構建高可用Prometheus監控體系

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-08-01 09:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

從0到1構建高可用Prometheus監控體系:避坑指南與性能調優實戰

核心價值:本文將分享我在生產環境中構建Prometheus監控體系的完整實戰經驗,包含踩過的坑、調優技巧和最佳實踐,幫你少走彎路,快速搭建企業級監控系統。

為什么選擇Prometheus?

在云原生時代,傳統監控工具已經無法滿足微服務架構的復雜需求。Prometheus憑借其Pull模式多維數據模型強大的查詢語言PromQL,成為了CNCF畢業項目中的監控標桿。

但是,從Demo到生產環境,這中間有著巨大的鴻溝。我見過太多團隊在生產環境中遭遇Prometheus的各種坑:內存爆炸、查詢超時、數據丟失...

架構設計:高可用的基石

核心架構原則

聯邦集群模式是我強烈推薦的生產架構:

# 聯邦配置示例
global:
scrape_interval:15s
evaluation_interval:15s

scrape_configs:
-job_name:'federate'
 scrape_interval:15s
 honor_labels:true
 metrics_path:'/federate'
 params:
  'match[]':
   -'{job=~"kubernetes-.*"}'
   -'{__name__=~"job:.*"}'
 static_configs:
  -targets:
   -'prometheus-shard1:9090'
   -'prometheus-shard2:9090'

分片策略

根據業務維度進行分片,而不是簡單的hash分片:

?基礎設施分片:監控物理機、網絡設備

?應用分片:按業務線劃分

?中間件分片:數據庫、緩存、消息隊列

生產環境避坑指南

坑1:內存使用失控

現象:Prometheus內存占用持續增長,最終OOM

根因:高基數標簽導致時間序列爆炸

# 排查高基數標簽
curl'http://localhost:9090/api/v1/label/__name__/values'| jq'.data[]'|wc-l

# 查看內存中的序列數
curl'http://localhost:9090/api/v1/query?query=prometheus_tsdb_symbol_table_size_bytes'

解決方案

# 限制標簽基數
metric_relabel_configs:
-source_labels:[__name__]
 regex:'high_cardinality_metric.*'
 action:drop
-source_labels:[user_id]
 regex:'.*'
 target_label:user_id
 replacement:'masked'

坑2:查詢性能問題

現象:復雜查詢超時,Grafana面板加載緩慢

根因:查詢時間范圍過大,聚合操作效率低

#  錯誤寫法:大時間范圍聚合
rate(http_requests_total[1d])

#  正確寫法:使用recording rules
jobrate5m

坑3:存儲空間問題

生產環境中,存儲增長往往超出預期:

# 存儲優化配置
storage:
tsdb:
 retention.time:30d
 retention.size:100GB
 min-block-duration:2h
 max-block-duration:36h

性能調優實戰

內存調優

根據監控規模調整JVM參數(如果使用Java應用)和系統參數:

# 系統級調優
echo'vm.max_map_count=262144'>> /etc/sysctl.conf
echo'fs.file-max=65536'>> /etc/sysctl.conf

# Prometheus啟動參數
./prometheus 
 --storage.tsdb.path=/data/prometheus 
 --storage.tsdb.retention.time=30d 
 --storage.tsdb.retention.size=100GB 
 --query.max-concurrency=20 
 --query.max-samples=50000000

Recording Rules優化

將復雜查詢預計算,提升查詢性能:

groups:
-name:http_requests
 interval:30s
 rules:
  -record:jobrate5m
   expr:sum(rate(http_requests_total[5m]))by(job)
  
  -record:jobrate5m
   expr:sum(rate(http_requests_total{status=~"5.."}[5m]))by(job)
   
  -record:job:http_requests_error_rate
   expr:jobrate5m/jobrate5m

存儲層優化

使用遠程存儲解決長期存儲問題:

# 遠程存儲配置
remote_write:
-url:"http://thanos-receive:19291/api/v1/receive"
 queue_config:
  max_samples_per_send:10000
  batch_send_deadline:5s
  max_shards:200

高可用部署實踐

多副本部署

# Kubernetes部署配置
apiVersion:apps/v1
kind:StatefulSet
metadata:
name:prometheus
spec:
replicas:2
selector:
 matchLabels:
  app:prometheus
template:
 spec:
  containers:
  -name:prometheus
   image:prom/prometheus:v2.45.0
   args:
    -'--storage.tsdb.path=/prometheus'
    -'--config.file=/etc/prometheus/prometheus.yml'
    -'--web.console.libraries=/etc/prometheus/console_libraries'
    -'--web.console.templates=/etc/prometheus/consoles'
    -'--web.enable-lifecycle'
    -'--web.enable-admin-api'
   resources:
    requests:
     memory:"4Gi"
     cpu:"1000m"
    limits:
     memory:"8Gi"
     cpu:"2000m"

數據一致性保證

使用Thanos實現長期存儲和全局查詢:

# Thanos Sidecar
-name:thanos-sidecar
image:thanosio/thanos:v0.31.0
args:
 -sidecar
 ---tsdb.path=/prometheus
 ---prometheus.url=http://localhost:9090
 ---objstore.config-file=/etc/thanos/objstore.yml

關鍵指標監控

Prometheus自監控

監控Prometheus自身的健康狀態:

# TSDB指標
prometheus_tsdb_head_series
prometheus_tsdb_head_samples_appended_total
prometheus_config_last_reload_successful

# 查詢性能指標
prometheus_engine_query_duration_seconds
prometheus_engine_queries_concurrent_max

告警規則設計

groups:
-name:prometheus.rules
 rules:
 -alert:PrometheusConfigReloadFailed
  expr:prometheus_config_last_reload_successful==0
  for:5m
  labels:
   severity:warning
  annotations:
   summary:"Prometheus配置重載失敗"
   
 -alert:PrometheusQueryHigh
  expr:rate(prometheus_engine_query_duration_seconds_sum[5m])>0.1
  for:2m
  labels:
   severity:warning
  annotations:
   summary:"Prometheus查詢延遲過高"

故障排查技巧

常用排查命令

# 檢查配置語法
./promtool check config prometheus.yml

# 檢查規則語法
./promtool check rules /etc/prometheus/rules/*.yml

# 查看TSDB狀態
curl localhost:9090/api/v1/status/tsdb

# 分析查詢性能
curl'localhost:9090/api/v1/query?query=up&stats=all'

性能分析工具

使用Go的pprof分析Prometheus性能:

# 獲取CPU profile
go tool pprof http://localhost:9090/debug/pprof/profile

# 獲取內存profile
go tool pprof http://localhost:9090/debug/pprof/heap

最佳實踐總結

標簽設計原則

1.控制基數:單個標簽值不超過10萬

2.語義清晰:標簽名和值要有明確含義

3.層次合理:避免過深的標簽嵌套

查詢優化策略

1.使用Recording Rules預計算復雜指標

2.限制查詢時間范圍,避免大范圍聚合

3.合理使用函數,rate()比increase()性能更好

存儲規劃建議

1.SSD存儲:TSDB對IO要求較高

2.預留空間:至少預留50%存儲空間

3.定期清理:設置合理的retention策略

進階優化方向

1. 自動擴縮容

基于查詢負載和存儲使用情況,實現Prometheus集群的自動擴縮容。

2. 智能路由

根據查詢模式,將請求智能路由到最優的Prometheus實例。

3. 機器學習優化

使用機器學習算法預測資源需求,提前進行容量規劃。

總結

構建高可用的Prometheus監控體系是一個系統工程,需要在架構設計、性能調優、故障處理等多個維度下功夫。本文分享的實戰經驗和避坑指南,希望能幫助你快速搭建穩定可靠的監控系統。

記住,監控系統的價值不在于收集了多少指標,而在于能否在關鍵時刻提供準確的信息,幫助我們快速定位和解決問題。

關于作者:10年運維經驗,專注云原生監控體系建設,歡迎交流討論!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監控系統
    +關注

    關注

    21

    文章

    4184

    瀏覽量

    185101
  • Prometheus
    +關注

    關注

    0

    文章

    36

    瀏覽量

    2072

原文標題:從0到1構建高可用Prometheus監控體系:避坑指南與性能調優實戰

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Prometheus的架構原理從“監控”談起

    Prometheus是繼Kubernetes(k8s)之后,CNCF畢業的第二個開源項目,其來源于Google的Borgmon。本文從監控這件事說起,深入淺出Prometheus的架構原理、目標發現
    的頭像 發表于 10-10 15:47 ?5399次閱讀
    <b class='flag-5'>Prometheus</b>的架構原理從“<b class='flag-5'>監控</b>”談起

    Prometheus的基本原理與開發指南

    PromQL高級實戰 告警引擎深度解析 本地存儲與遠程存儲 梯度運維管理平臺監控模塊架構 01監控系統概述 導讀:本章從監控的作用、架構分類、指標監控發展史、指標
    的頭像 發表于 11-09 10:45 ?2326次閱讀
    <b class='flag-5'>Prometheus</b>的基本原理與開發指南

    prometheus監控服務的整個流程介紹

    最近有個新項目需要搞一套完整的監控告警系統,我們使用了開源監控告警系統Prometheus;其功能強大,可以很方便對其進行擴展,并且可以安裝和使用簡單;本文首先介紹Prometheus
    發表于 12-23 17:34

    django-prometheus數據監控

    django-prometheus.zip
    發表于 04-26 11:07 ?1次下載
    django-<b class='flag-5'>prometheus</b>數據<b class='flag-5'>監控</b>

    Prometheus服務監控系統

    prometheus.zip
    發表于 04-26 10:23 ?3次下載
    <b class='flag-5'>Prometheus</b>服務<b class='flag-5'>監控</b>系統

    使用Thanos+Prometheus+Grafana構建監控系統

    對于彈性伸縮和可用的系統來說,一般有大量的指標數據需要收集和存儲,如何為這樣的系統打造一個監控方案呢?本文介紹了如何使用 Thanos+Prometheus+Grafana
    的頭像 發表于 05-05 21:14 ?3651次閱讀

    關于Prometheus監控系統相關的知識體系

    今天浩道跟大家分享關于Prometheus監控系統相關的知識體系,讓你通過本文可以大體掌握其相關知識體系
    的頭像 發表于 10-20 09:06 ?2097次閱讀

    prometheus下載安裝教程

    Prometheus 是一個開放性的監控解決方案,用戶可以非常方便的安裝和使用 Prometheus 并且能夠非常方便的對其進行擴展。 在Prometheus的架構設計中,
    的頭像 發表于 01-13 16:07 ?9970次閱讀
    <b class='flag-5'>prometheus</b>下載安裝教程

    兩種監控工具prometheus和zabbix架構對比

    Prometheus 基本上是正相反,上手難度大一些,但由于定制靈活度,數據也有更多的聚合可能,起步后的使用難度遠小于 Zabbix。
    發表于 02-19 10:49 ?2016次閱讀

    基于kube-prometheus的大數據平臺監控系統設計

    本文介紹了如何基于 kube-prometheus 設計一個監控系統, 以靈活簡單的方式對 kubernetes 上的應用進行指標采集,并實現監控報警功能。
    的頭像 發表于 05-30 17:02 ?1295次閱讀

    40個步驟安裝部署Prometheus監控系統

    Prometheus是一套開源的監控&報警&時間序列數據庫的組合,起始是由SoundCloud公司開發的。隨著發展,越來越多公司和組織接受采用Prometheus,社區也十分活躍,他們便將它獨立成開源項目,并且有公司來運作。
    的頭像 發表于 08-14 11:53 ?5.5w次閱讀
    40個步驟安裝部署<b class='flag-5'>Prometheus</b><b class='flag-5'>監控</b>系統

    基于Prometheus開源的完整監控解決方案

    每一個被 Prometheus 監控的服務都是一個 Job,Prometheus 為這些 Job 提供了官方的 SDK ,利用這個 SDK 可以自定義并導出自己的業務指標,也可以
    發表于 10-18 09:15 ?1386次閱讀
    基于<b class='flag-5'>Prometheus</b>開源的完整<b class='flag-5'>監控</b>解決方案

    從零入門Prometheus:構建企業級監控與報警系統的最佳實踐指南

    測試環境 prometheus-2.26.0.linux-amd64.tar.gz下載地址:https://github.com/prometheus/prometheus/releases
    的頭像 發表于 02-10 11:28 ?1382次閱讀
    從零入門<b class='flag-5'>Prometheus</b>:<b class='flag-5'>構建</b>企業級<b class='flag-5'>監控</b>與報警系統的最佳實踐指南

    Zabbix與Prometheus運維監控系統的對比

    在當今云原生和微服務架構盛行的時代,監控系統已成為運維工程師不可或缺的核心工具。面對市場上眾多監控解決方案,Zabbix和Prometheus作為兩大主流選擇,各自擁有獨特的優勢和適用場景。本文將從架構設計、性能表現、功能特性、
    的頭像 發表于 09-18 14:57 ?775次閱讀

    使用VictoriaMetrics的Prometheus遠程存儲方案

    Prometheus單機存儲在生產環境跑到一定規模就會碰壁——單節點磁盤容量有限,TSDB默認保留15天數據,想存半年以上的監控數據基本不現實。更麻煩的是Prometheus沒有原生的
    的頭像 發表于 02-26 16:30 ?331次閱讀