文章目錄
- 機器指標監控技術方案
- 架構圖
- 組件簡介
- Prometheus 簡介
- 核心特性
- 適用場景
- Grafana 簡介
- 核心特性
- 適用場景
- Alertmanager 簡介
- 核心特性
- 適用場景
- 數據采集
- 機器Node Exporter
- MySQL Exporter
- Redis Exporter
- ES Exporter
- RocketMQ Exporter
- Springcloud Exporter
- Nacos
- 數據存儲
- 短期存儲
- 長期存儲
- 方案 1:Thanos(推薦)?
- 方案 2:VictoriaMetrics
- 方案 3:M3DB(Uber 開源)?
- 數據查詢展示
- 快速導入模板?
- 機器指標監控模板
- MySQL 指標監控模板
- Redis 指標監控模板
- ES 指標監控模板
- RocketMQ 指標監控模板
- Springcloud 指標監控模板
- 指標異常告警
- AlertManager
- 核心特性
- 適用場景
- 協作流程
機器指標監控技術方案
架構圖
組件簡介
Prometheus 簡介
Prometheus 是一款開源的 監控和告警工具,由 Cloud Native Computing Foundation (CNCF) 托管,專為云原生環境設計。它采用 Pull(拉取) 模式采集指標數據,并支持強大的 PromQL 查詢語言,適用于 微服務、容器、中間件和基礎設施 的監控。
核心特性
? 多維度數據模型?:基于 metric_name{labels}=value 的鍵值對存儲,支持靈活查詢。
? 高效存儲?:采用時間序列數據庫(TSDB),支持高效查詢和壓縮存儲。
? 服務發現?:支持 Kubernetes、Consul、Nacos 等動態發現監控目標。
? 告警規則?:可定義靈活的告警條件(如 CPU > 90%),并推送至 Alertmanager。
? 豐富的 Exporter 生態?:支持 Node Exporter(機器監控)、MySQL Exporter(數據庫監控)等。
適用場景
📌 監控 Spring Cloud 微服務(JVM、HTTP 請求、線程池)
📌 監控 中間件(RocketMQ、MySQL、Redis、Elasticsearch)
📌 監控 服務器資源(CPU、內存、磁盤、網絡)
Grafana 簡介
Grafana 是一款開源的 數據可視化和監控分析平臺,支持多種數據源(如 Prometheus、MySQL、Elasticsearch),能夠將復雜的監控數據轉化為 直觀的儀表盤,幫助團隊快速發現和診斷問題。
核心特性
? 多數據源支持:可集成 Prometheus、InfluxDB、Elasticsearch、Loki 等。
? 豐富的可視化組件:折線圖、柱狀圖、儀表盤、熱力圖、日志面板等。
? 動態儀表盤:支持變量過濾(如按服務名、實例篩選數據)。
? 告警可視化:可在儀表盤直接查看告警狀態。
? 團隊協作:支持共享儀表盤、權限管理、版本回滾。
適用場景
📊 可視化 Prometheus 監控數據(如機器指標、微服務性能)
📊 日志分析(結合 Elasticsearch 或 Loki)
📊 業務數據監控(如訂單量、API 成功率)
Alertmanager 簡介
Alertmanager 是 Prometheus 生態中的 告警管理組件,負責對 Prometheus 觸發的告警進行 去重、分組、路由和通知,確保告警信息能高效、準確地送達相關人員。
核心特性
🔔 告警分組(Grouping)??:合并同類告警(如多臺機器高 CPU 告警合并為一條)。
🔔 告警抑制(Inhibition)??:避免冗余告警(如機器宕機時,忽略該機器上的服務告警)。
🔔 多通知渠道:支持郵件、Slack、釘釘、企業微信、Webhook 等。
🔔 靜默(Silence)??:臨時屏蔽特定告警(如維護期間)。
🔔 高可用:支持多實例集群部署,避免單點故障。
適用場景
🚨 微服務異常告警(如 HTTP 錯誤率飆升、JVM OOM)
🚨 中間件告警(如 RocketMQ 消息堆積、MySQL 慢查詢)
🚨 服務器告警(如磁盤空間不足、CPU 過載)
數據采集
exporter list https://prometheus.io/docs/instrumenting/exporters/
機器Node Exporter
https://github.com/prometheus/node_exporter
MySQL Exporter
https://github.com/prometheus/mysqld_exporter
Redis Exporter
https://github.com/oliver006/redis_exporter
ES Exporter
https://github.com/prometheus-community/elasticsearch_exporter
RocketMQ Exporter
https://github.com/apache/rocketmq-exporter
Springcloud Exporter
https://micrometer.io/docs/registry/prometheus
Nacos
使用動態服務發現
https://blog.csdn.net/qaknar826/article/details/147055927
scrape_configs:
- job_name: ‘spring-cloud-apps’
nacos_sd_configs:- server: ‘nacos-server-ip:8848’ # Nacos 地址
group_name: ‘DEFAULT_GROUP’
namespace_id: ‘your-namespace-id’
metrics_path: ‘/actuator/prometheus’
relabel_configs: - source_labels: [__meta_nacos_service_name]
target_label: application
- server: ‘nacos-server-ip:8848’ # Nacos 地址
數據存儲
短期存儲
Prometheus 默認使用 本地時間序列數據庫(TSDB)? 存儲數據,默認保留 15天?
(storage.tsdb.retention.time=15d)
數據存儲在 --storage.tsdb.path 指定的目錄(默認 data/)
一個月內的短期存儲推薦默認的本地時序數據庫
長期存儲
方案 1:Thanos(推薦)?
- 基于 Prometheus TSDB,支持無限擴展存儲。
- 支持全局查詢、數據壓縮、降采樣(Downsampling)。
- 集成對象存儲(如 S3、MinIO、阿里云 OSS)。
方案 2:VictoriaMetrics
- 高性能時序數據庫,兼容 PromQL。
- 存儲效率比 Prometheus TSDB 高 10 倍。
- 支持單機版和集群版。
方案 3:M3DB(Uber 開源)?
- 分布式時序數據庫,適合大規模監控。
- 需要額外部署集群管理組件(如 etcd)。
方案對比
暫時無法在飛書文檔外展示此內容
推薦選擇: - 中小規模?:VictoriaMetrics(簡單高效)。
- 大規模/云原生?:Thanos + 對象存儲(如 S3)。
數據查詢展示
使用Grafana展示,Grafana支持使用模板。
模板庫:https://grafana.com/grafana/dashboards/
快速導入模板?
- 左側菜單 → Dashboards → New → Import。
- 輸入模板 ID 1860?(Node Exporter 官方模板)。
- 選擇 Prometheus 數據源,點擊 Import。
機器指標監控模板
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
MySQL 指標監控模板
https://grafana.com/grafana/dashboards/7362-mysql-overview/
Redis 指標監控模板
Redis官方出的
https://grafana.com/grafana/dashboards/12776-redis/
Prometheus官方出的
https://grafana.com/grafana/dashboards/11835-redis-dashboard-for-prometheus-redis-exporter-helm-stable-redis-ha/
ES 指標監控模板
https://grafana.com/grafana/dashboards/9746-elasticsearch-example/
RocketMQ 指標監控模板
https://grafana.com/grafana/dashboards/14612-rocketmq/
Springcloud 指標監控模板
https://grafana.com/grafana/dashboards/4701-jvm-micrometer/
指標異常告警
AlertManager
Alertmanager 是 Prometheus 生態中的 告警管理組件,負責對 Prometheus 觸發的告警進行 去重、分組、路由和通知,確保告警信息能高效、準確地送達相關人員。
核心特性
🔔 告警分組(Grouping)??:合并同類告警(如多臺機器高 CPU 告警合并為一條)。
🔔 告警抑制(Inhibition)??:避免冗余告警(如機器宕機時,忽略該機器上的服務告警)。
🔔 多通知渠道:支持郵件、Slack、釘釘、企業微信、Webhook 等。
🔔 靜默(Silence)??:臨時屏蔽特定告警(如維護期間)。
🔔 高可用:支持多實例集群部署,避免單點故障。
適用場景
🚨 微服務異常告警(如 HTTP 錯誤率飆升、JVM OOM)
🚨 中間件告警(如 RocketMQ 消息堆積、MySQL 慢查詢)
🚨 服務器告警(如磁盤空間不足、CPU 過載)
協作流程
- Prometheus 采集指標(如機器、微服務、中間件數據)。
- Grafana 可視化 Prometheus 數據,提供實時監控儀表盤。
- Prometheus 觸發告警規則,推送至 Alertmanager。
- Alertmanager 對告警進行分組、去重,并發送通知(郵件/釘釘等)。