Prometheus 和 Alertmanager 是用于监控和告警的开源工具,广泛用于微服务架构和云原生环境。
Prometheus简介
Prometheus 是一个开源监控系统和时序数据库,主要用于收集和存储监控指标。它由 SoundCloud 开发,现已成为 Cloud Native Computing Foundation (CNCF) 的一部分。
核心特性:
多维数据模型: 通过键值对的标签(labels)来标识不同的时间序列。
强大的查询语言 (PromQL): 支持复杂的查询,包括聚合、计算等。
数据抓取: Prometheus 定期从被监控的服务(如应用程序、数据库等)抓取指标数据,支持 HTTP 和其他协议。
可视化: 提供基本的图形界面,也可以与 Grafana 等工具集成,进行更丰富的可视化展示。
高效存储: 使用自定义的时序数据库,支持高效存储和检索时间序列数据。
使用场景:
适用于微服务架构、云基础设施监控、容器监控(如 Kubernetes)等环境。
Alertmanager简介
Alertmanager 是 Prometheus 生态系统中的一部分,专门用于处理和管理警报。它能够接收来自 Prometheus 的告警,并根据用户定义的规则进行路由、抑制和聚合。
核心特性:
告警管理: 可以对 Prometheus 生成的告警进行分组、抑制和路由到不同的接收者(如电子邮件、Slack、PagerDuty 等)。
灵活的路由: 根据标签对告警进行路由,可以将不同类型的告警发送到不同的团队或渠道。
抑制功能: 支持在特定条件下抑制告警,比如在维护窗口期间不发送告警。
聚合: 可以将相似的告警合并为一个通知,以减少噪音。
状态管理: 跟踪告警的状态,避免重复通知。
使用场景:
适合需要集中管理和处理告警的环境,尤其是在大规模微服务架构中。
总结
Prometheus 主要用于数据收集和存储,而 Alertmanager 则用于告警的管理和通知。两者结合使用,可以实现高效的监控和告警系统,帮助开发者及时响应系统异常和性能问题。
部署
docker-compose.yaml
version: '3.8'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
restart: always
environment:
- TZ=Asia/Shanghai # 设置时区
ports:
- "9090:9090"
volumes:
- prom_conf:/etc/prometheus
- prom_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-admin-api' # 控制对admin HTTP API的访问,其中包括删除时间序列等功能
- '--web.enable-lifecycle' # 支持热更新,直接执行localhost:9090/-/reload立即生效
deploy:
resources:
limits:
cpus: "1" # 限制 CPU 核心数
memory: "2G" # 限制内存大小
alertmanager:
image: prom/alertmanager
container_name: alertmanager
restart: always
environment:
- TZ=Asia/Shanghai # 设置时区
ports:
- "9093:9093"
volumes:
- alert_conf:/etc/alertmanager
deploy:
resources:
limits:
cpus: "1" # 限制 CPU 核心数
memory: "1G" # 限制内存大小
volumes:
prom_data:
prom_conf:
alert_conf:
启动
docker compose up -d