一、Prometheus
核心功能:
时序数据库与监控系统:专为云原生设计,采用拉模型(Pull)采集指标数据,支持多维数据模型(时间序列数据由metric名称和键值对标签标识)。
告警规则引擎:内置告警规则配置能力,可通过rules.yml定义触发条件(如up == 0检测服务宕机)。
查询语言PromQL:提供灵活的聚合、切片、数学运算等操作,支持实时数据分析。
扩展性:通过Exporter(如Node Exporter)兼容传统系统监控,支持与Kubernetes、Docker等容器平台集成。
核心优势:
轻量高效:单节点可处理百万级时间序列数据,数据存储压缩率高(约3.5字节/采样点)。
动态服务发现:支持基于Kubernetes、Consul等的自动目标发现,减少人工配置成本。
二、Alertmanager
核心功能:
告警管理:接收来自Prometheus的告警通知,进行去重、分组、静默等处理,避免告警风暴。
通知路由:支持按标签匹配路由策略,将告警分发至不同接收者(如邮件、Slack、Webhook等)。
告警模板化:通过alertmanager.yml配置告警内容模板,支持动态填充告警指标和标签信息。
典型流程:
Prometheus触发告警 → 2. Alertmanager接收并聚合 → 3. 按路由规则发送通知。
三、Grafana
核心功能:
可视化仪表盘:通过预置或自定义面板(如折线图、热力图)展示Prometheus指标数据,支持多数据源(如InfluxDB、Elasticsearch)。
告警集成:新版本支持在面板中直接配置阈值告警(如CPU使用率>90%),无需依赖Alertmanager。
权限管理:提供用户角色控制和数据源访问权限管理,适用于团队协作。
核心优势:
交互式查询:结合PromQL实现动态数据筛选和实时刷新。
模板化仪表盘:支持JSON模板导入/导出,便于复用和标准化监控视图。
四、三者协同架构
数据采集: Prometheus定期从Exporter或应用端点(如/metrics)拉取指标。
告警触发: Prometheus根据rules.yml评估告警条件,触发后推送至Alertmanager。
告警处理:Alertmanager对告警分组、去重,并通过邮件/SMS等渠道通知运维人员。
可视化展示: Grafana从Prometheus读取数据,生成实时监控仪表盘。
五、典型应用场景
容器监控:监控Kubernetes集群的Pod状态、资源使用率等。
业务指标监控:统计API请求延迟、错误率等SLA指标。
告警自动化:通过Alertmanager实现故障分级通知(如P0级故障触发电话告警)。