通过 「电力监控系统」 类比 + 分层架构图,直观说明其核心原理:


一、Prometheus 核心定位

比喻智能电网监控中心

  • 每个家庭(服务)装有电表(Exporter),Prometheus 是定时抄表(Pull)、存储用电曲线(时间序列)、分析异常用电(Alert)的「中央监控大脑」。

二、核心架构图例

                          +---------------------+
                          |     Prometheus      |
                          |   (监控中心)         |
                          +----------+----------+
                                     |  Pull (主动抄表)
         +---------------------------+---------------------------+
         |                           |                           |
+--------+---------+       +---------+---------+       +---------+---------+
|  Exporter        |       |  Exporter         |       |  Exporter         |
|  (电表)           |       |  (电表)            |       |  (电表)            |
|  - Node Exporter |       |  - MySQL Exporter |       |  - App Exporter   |
|    (CPU/内存)     |       |    (DB状态)         |       |    (业务指标)       |
+------------------+       +-------------------+       +-------------------+
           ▲                           ▲                           ▲
           │ 实际指标 (电压/电流)          │ 实际指标 (查询延迟)          │ 实际指标 (订单量)
           │                           │                           │
+------------------+       +-------------------+       +-------------------+
| 被监控目标         |       | 被监控目标          |       | 被监控目标          |
|  - 服务器          |       |  - MySQL          |       |  - 订单服务         |
+------------------+       +-------------------+       +-------------------+

核心组件解析

  1. Exporter(电表)

    • 作用:将目标(服务器/DB/应用)的指标暴露为 Prometheus 可读的 HTTP 接口(如 http://host:9100/metrics)。
    • 常见类型

      • Node Exporter:监控服务器资源(CPU/内存/磁盘)。
      • MySQL Exporter:监控数据库状态(连接数/慢查询)。
      • 自定义 Exporter:暴露业务指标(如订单数/错误率)。
  2. Prometheus Server(监控中心)

    • 拉取模型(Pull):主动定时(如 15s)从 Exporter 拉取指标数据。
    • 时序数据库(TSDB):高效存储时间序列数据(指标名 + 时间戳 + 值)。
    • 服务发现:自动发现 Kubernetes/Docker 等动态目标。
  3. Alertmanager(告警调度台)

    • 接收告警:处理 Prometheus 触发的报警规则(如 CPU > 80% 持续 5min)。
    • 路由去重:按标签路由给不同团队(短信/邮件/钉钉),合并重复告警。
  4. Grafana(可视化大屏)

    • 连接 Prometheus:绘制实时仪表盘(CPU 负载曲线、错误率热力图)。

三、关键概念图解

1. 时间序列数据模型

指标名:http_requests_total  
标签(设备ID/状态):{method="POST", path="/order", status="200"}  
数据点:  
  (时间戳 1600000000 → 值 42)  
  (时间戳 1600000015 → 值 57)  
  • 组成要素

    • 指标名:测量对象(如 http_requests_total)。
    • 标签:维度标识(如 method="GET", status="404")。
    • 时间戳 + 值:某一时刻的测量值。

💡 比喻

  • 时间序列 = 电表每天记录的「用电量曲线」
  • 标签 = 电表所属的「楼层/房间号」

2. 四种核心指标类型

类型含义示例类比
Counter(计数器)只增不减(累计值)HTTP 请求总数电表总用电量(累加)
Gauge(仪表盘)可升可降(瞬时值)CPU 使用率实时电压值
Histogram(直方图)采样分布(如分位数)请求延迟分布(P90/P99)电压波动区间统计
Summary(摘要)客户端计算的分布(更精准)同上,但计算在客户端电表本地统计报告

四、工作流程详解

1. 数据采集与存储流程

1. Prometheus Server 定时(15s)向 Exporter 发送 HTTP 请求:
   GET http://node-exporter:9100/metrics

2. Exporter 返回当前指标数据:
   node_cpu_seconds_total{cpu="0", mode="idle"}  →  1000.5
   node_memory_free_bytes  →  2048000000

3. Prometheus 存储数据到 TSDB:
   ┌───────────────────┬────────────┬───────┐
   │   Metric + Labels │ Timestamp  │ Value │
   ├───────────────────┼────────────┼───────┤
   │ node_cpu_seconds..│ 1600000000 │ 1000.5│
   │ node_memory_free..│ 1600000000 │ 2.04e9│
   └───────────────────┴────────────┴───────┘

2. 告警触发流程

Prometheus Server 中定义告警规则:
  ALERT HighCPU
  IF node_cpu_usage > 80%  ← 持续5分钟
  LABELS { severity="critical" }

触发流程:
  Prometheus Server → 评估规则 → 触发告警 → 推送至 Alertmanager → 路由去重 → 发送邮件

3. PromQL 查询示例

查询1:实时CPU使用率
  100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100

查询2:HTTP错误率(5分钟内)
  sum(rate(http_requests_total{status!~"2.."}[5m])) 
  / 
  sum(rate(http_requests_total[5m]))

💡 比喻

  • PromQL = 电力分析师写的「用电报告公式」
  • rate() = 计算每秒用电增长率
    sum() = 整栋楼总用电量

五、技术优势总结

特性实现方式用户价值
主动拉取(Pull)定时从 Exporter 拉取数据避免被监控目标过载
强大的查询语言PromQL 灵活聚合分析1行代码计算复杂指标
多维数据模型指标 + 标签自由组合按任意维度切片分析
原生集成 Kubernetes自动发现 Pod/Service动态监控容器化环境

🔧 生产贴士

  • 长期存储:集成 Thanos 或 Cortex 解决历史数据存储问题
  • 高可用:部署多个 Prometheus + Alertmanager 集群

六、典型监控场景

+----------------+          +----------------+          +----------------+
| 基础设施监控     |          | 微服务监控       |          | 业务指标监控     |
| (CPU/内存/磁盘) |          | (请求延迟/错误率) |          | (订单量/支付成功率)|
|                |          |                |          |                |
|  Node Exporter |          |  Spring Actuator|          | 自定义 Exporter |
+--------+-------+          +--------+-------+          +--------+-------+
         |                           |                           |
         v                           v                           v
+-----------------------------------------------------------------------+
|                          Prometheus Server                            |
+-----------------------------------------------------------------------+
         |                           |                           |
         v                           v                           v
+----------------+          +----------------+          +----------------+
|  Grafana       |          |  Alertmanager  |          |  长期存储       |
|  (实时仪表盘)   |          |  (告警通知)     |          |  (Thanos)      |
+----------------+          +----------------+          +----------------+

通过此架构,Prometheus 实现了从 「硬件指标」→「应用性能」→「业务状态」 的全栈监控覆盖。

添加新评论