一、Prometheus架构
Prometheus
云原生十二要素是一套最佳实践和规范,旨在帮助开发人员更好地构建云原生应用
这十二个要素分别是:
- 单一职责
- 独立部署
- 无状态
- 声明式API
- 服务发现
- 容错处理
- 自适应算法
- 自动化运维
- 响应式编程
- 通信协议
- 服务注册与发现
- 数据持久化
一、Prometheus 是什么
Prometheus 是一个开源的监控系统和时序数据库(TSDB),最初由 SoundCloud 开发,现在是 CNCF(Cloud Native Computing Foundation) 的托管项目之一,广泛用于云原生环境下的指标监控和告警。
Prometheus 主要用于收集、存储、查询和分析时间序列数据,特别适用于 Kubernetes 等动态环境。
二、Prometheus 的主要特性
-
多维度数据模型(Metric + Label)
-
Prometheus 使用 指标
(Metric)
和 标签(Label)
组合的方式存储数据,允许用户灵活地进行筛选和聚合,例如:http_requests_total{method="GET", handler="/api"}
这里
http_requests_total
是指标,method
和handler
是标签。
-
-
强大的查询语言(PromQL)
-
PromQL(Prometheus Query Language)支持高效查询和数据聚合,例如:
rate(http_requests_total[5m]) # 计算 5 分钟内的 QPS
-
-
拉模式(Pull-Based)数据采集
- 应用程序暴漏Metrics接口,Prometheus通过基于HTTP的pull模型 采集数据,同时可以使用PushGateway进行Push数据。
- Prometheus 主动拉取(Pull) 目标数据,而不是被动接收(Push)。
- 通过 HTTP API 采集监控数据,数据格式是
text/plain
或protobuf
。
-
内置时序数据库(TSDB)
- 高效存储 监控数据,无需外部数据库。
- 基于时间索引,支持高吞吐的数据写入和查询。
-
自动服务发现(Service Discovery)
- 自动发现 Kubernetes、Consul、Etcd、ECS 等服务,不需要手动配置。
-
支持 Alertmanager 进行告警
- 结合 Alertmanager 组件,实现多级告警通知(邮件、Slack、微信等)。
- 支持告警分组、去重、抑制等高级功能。
-
数据存储持久化与远程存储
- 默认存储在本地(TSDB),但可以通过远程存储(Remote Write/Read) 集成 Thanos、VictoriaMetrics 等长期存储方案。
-
支持多种 Exporter 和集成生态
- 提供丰富的Exporter 采集各种数据(如 Node Exporter、MySQL Exporter、Blackbox Exporter)。
- 与 Kubernetes、Grafana、Loki、Thanos、Jaeger 等工具无缝集成。
-
支持多种图形和仪表盘,和Grafana堪称绝配
三、Prometheus 适用场景
- 云原生环境监控(Kubernetes、Docker)
- 服务器和应用程序监控(CPU、内存、网络、磁盘、数据库)
- 业务指标监控(请求量、错误率、延迟)
- 告警通知(结合 Alertmanager)
Prometheus 适用于云原生环境和各种分布式系统的监控,主要用于指标收集、实时分析、告警等场景。以下是几个主要的应用场景: