机器指标监控技术方案
文章目录
- 机器指标监控技术方案
- 架构图
- 组件简介
- 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 对告警进行分组、去重,并发送通知(邮件/钉钉等)。