监控与告警系统Prometheus
1. 普罗米修斯(Prometheus)是什么?
-
定位:一款开源的 监控与告警系统,专为云原生和动态微服务架构设计,现为 CNCF(云原生计算基金会) 毕业项目。
-
诞生背景:由 SoundCloud 于 2012 年开发并开源,2016 年成为继 Kubernetes 后第二个 CNCF 毕业项目。
-
核心特点:
-
多维度数据模型(时间序列 + Key-Value 标签)
-
强大的查询语言 PromQL
-
高效存储与可视化
-
灵活的告警规则配置
-
2. 核心组件与架构
-
数据采集层
-
Exporters:暴露监控指标(如 Node Exporter 采集服务器资源)。
-
Pushgateway:支持短生命周期任务(如定时Job)推送指标。
-
Service Discovery:自动发现 Kubernetes、Consul 等动态目标。
-
-
存储计算层
-
时间序列数据库(TSDB):高效存储时序数据,支持压缩和分块。
-
PromQL:实时查询分析数据(如
rate(http_requests_total[5m])
)。
-
-
告警与可视化
-
Alertmanager:处理告警通知(去重、分组、路由至邮件/Slack等)。
-
Grafana 集成:通过 Dashboard 可视化监控数据。
-
3. 核心功能与使用场景
✅ 核心功能
-
指标采集:通过 HTTP Pull 或 Pushgateway 获取数据。
-
服务监控:监控容器(Docker/K8s)、应用(HTTP请求、错误率)、中间件(MySQL/Kafka)。
-
自动告警:基于阈值、趋势或异常检测触发告警(如 CPU 使用率 >90% 持续 5 分钟)。
-
横向扩展:支持联邦集群(Federation)和远程存储(如 Thanos)。
🌐 典型应用场景
-
微服务监控
-
跟踪服务间调用延迟、错误率(如 Istio + Prometheus 监控服务网格)。
-
-
Kubernetes 集群监控
-
监控 Pod/Node 资源使用、Deployment 状态。
-
-
业务指标监控
-
统计用户活跃数、订单成功率等自定义指标。
-
4. 技术优势与局限性
优势 | 局限性 |
---|---|
- 高度灵活的数据模型(多维标签) | - 不适合日志存储(需结合 Loki) |
- 原生支持云原生环境(K8s集成) | - 长期存储需依赖外部方案(如 Thanos) |
- 社区生态强大(官方/第三方Exporter) | - 配置复杂度较高(需熟悉 PromQL) |
5. 实战示例
场景:监控 Web 服务的 HTTP 请求
-
指标暴露:应用中集成 Prometheus Client(如 Java 的
micrometer
)。 -
配置采集:在 Prometheus 的
prometheus.yml
中添加 Job:scrape_configs: - job_name: 'web_service' metrics_path: '/actuator/prometheus' static_configs: - targets: ['web-service:8080']
-
告警规则:定义请求错误率超阈值告警:
groups: - name: http_errors rules: - alert: HighErrorRate expr: rate(http_requests_total{status="500"}[5m]) > 0.1 for: 10m labels: severity: critical annotations: summary: "High error rate on {{ $labels.instance }}"
6. 学习资源推荐
-
官方文档:prometheus.io/docs
-
实战课程:《Prometheus 云原生监控:运维与开发实战》
-
社区工具:
-
Grafana:可视化仪表盘
-
Alertmanager:告警管理
-
Thanos:长期存储与全局查询
-