文章目录
- Prometheus 监控系统详解
- 一、Prometheus 是什么?
- 二、核心架构
- 1. Prometheus Server
- 2. Exporter
- 3. Alertmanager
- 三、数据模型(核心理解)
- 四、数据采集方式(Pull 模型)
- 五、PromQL 查询语言
- 常见示例:
- 1. 查询当前值
- 2. 计算速率(QPS)
- 3. 按标签聚合
- 4. 告警条件
- 六、告警机制
- 七、与 Kubernetes 的集成
- 常见方式:
- 八、优点与局限
- 优点
- 局限
- 九、典型使用场景
- 十、总结
Prometheus 监控系统详解
在现代云原生架构中,监控已经成为保障系统稳定性和可观测性的核心能力。而在众多监控方案中,Prometheus 凭借其简单、强大和与 Kubernetes 的天然集成,成为事实上的标准。
本文将从原理、架构、核心概念以及实践应用等方面,全面介绍 Prometheus。
一、Prometheus 是什么?
Prometheus 是一个开源的系统监控与告警工具,最初由 SoundCloud 开发,现已成为 Cloud Native Computing Foundation(CNCF)毕业项目。
它主要特点包括:
- 多维度数据模型(时间序列)
- 强大的查询语言(PromQL)
- 拉模型(Pull-based)采集
- 内置告警机制
- 与云原生生态高度兼容
二、核心架构
Prometheus 的整体架构如下:
+-------------------+ | Alertmanager | +-------------------+ ^ | +-------------------+ | Prometheus | +-------------------+ ^ ^ ^ | | | Exporter Service Exporter1. Prometheus Server
负责核心功能:
- 抓取(scrape)指标数据
- 存储时间序列数据
- 执行查询(PromQL)
- 触发告警规则
2. Exporter
用于将不同系统的数据转换为 Prometheus 可识别的格式,例如:
- Node Exporter(主机监控)
- MySQL Exporter(数据库监控)
- Blackbox Exporter(网络探测)
3. Alertmanager
Prometheus 的告警组件,用于:
- 告警去重
- 分组
- 路由
- 通知(邮件、Slack、Webhook 等)
三、数据模型(核心理解)
Prometheus 的核心是时间序列数据库(TSDB)。
每条数据由:
metric_name{label1="value1", label2="value2"} value timestamp示例:
http_requests_total{method="GET", status="200"} 1027说明:
- metric_name:指标名称
- label:标签(维度)
- value:值
- timestamp:时间戳
👉 Prometheus 最大优势:标签化(label-based)多维分析
四、数据采集方式(Pull 模型)
Prometheus 使用 HTTP 定期抓取数据:
GET http://target:port/metrics优点:
- 简单
- 易于控制采集频率
- 目标服务无需主动推送
对比 Push 模型:
| 模型 | 特点 |
|---|---|
| Pull(Prometheus) | 控制权在监控端 |
| Push(传统监控) | 控制权在客户端 |
五、PromQL 查询语言
PromQL 是 Prometheus 的核心能力之一。
常见示例:
1. 查询当前值
http_requests_total2. 计算速率(QPS)
rate(http_requests_total[5m])3. 按标签聚合
sum by (status) (rate(http_requests_total[5m]))4. 告警条件
rate(errors_total[5m]) > 0.05👉 PromQL 的本质:对时间序列进行函数计算和聚合
六、告警机制
Prometheus 支持基于规则的告警:
groups:-name:examplerules:-alert:HighErrorRateexpr:rate(errors_total[5m])>0.05for:2m告警流程:
- Prometheus 检测规则
- 触发告警
- 发送到 Alertmanager
- Alertmanager 通知用户
七、与 Kubernetes 的集成
Prometheus 与 Kubernetes 集成非常紧密:
常见方式:
- ServiceMonitor(通过 Operator)
- Pod 自动发现
- kube-state-metrics
- cAdvisor(容器指标)
👉 在 K8s 中,Prometheus 通常通过:
- Prometheus Operator
- Helm Chart
来部署
八、优点与局限
优点
- 简单易用
- 强大的查询能力
- 云原生生态标准
- 可扩展(Thanos、Cortex)
局限
- 不适合长期存储(需扩展)
- 单机性能有限
- 高基数(High Cardinality)问题
九、典型使用场景
- 应用性能监控(APM)
- 系统资源监控(CPU / 内存)
- Kubernetes 集群监控
- 微服务调用链指标
- SLA / SLO 指标统计
十、总结
Prometheus 是云原生时代最重要的监控系统之一,它通过:
- 时间序列数据模型
- 灵活的 PromQL
- Pull 模式采集
- 强大的生态系统
构建了完整的可观测性基础。
如果你在使用 Kubernetes 或构建微服务架构,Prometheus 几乎是必备组件。