Prometheus 是一款开源的时序数据监控系统 ,核心用于采集、存储分布式系统的指标数据(如服务器 CPU 使用率、接口响应时间);Grafana 则是一款开源的数据可视化平台,主要用于将 Prometheus 等数据源的指标数据,以图表、仪表盘等形式直观展示,二者常搭配使用,构成 "监控采集 + 可视化展示" 的完整监控方案。
一、Prometheus:监控数据的 "采集与存储中心"
Prometheus 的核心作用是解决 "从哪里拿数据、怎么存数据" 的问题,它不负责数据展示,专注于监控数据的全生命周期管理。
1. 核心功能
- 指标采集 :通过 "拉取(Pull)" 模式主动从目标服务(如 Java 应用、MySQL 数据库、服务器)抓取指标数据。目标服务需暴露一个 HTTP 接口(如 Spring Boot 应用的
/actuator/prometheus),返回符合 Prometheus 格式的指标(如http_requests_total 100,表示 HTTP 请求总数为 100)。 - 时序存储 :将采集到的指标数据以 "时序" 形式存储(按时间戳顺序排列),采用自研的 TSDB(Time Series Database)数据库,优化了时序数据的读写性能,支持按标签(如
service=order、host=server1)筛选数据。 - 灵活查询 :提供 PromQL 查询语言,可对指标进行计算和筛选。例如:
http_requests_total{service="order"}:查询 "订单服务" 的 HTTP 请求总数;rate(http_requests_total[5m]):计算 "近 5 分钟内 HTTP 请求的每秒增长率"(即 QPS)。
- 告警触发:支持基于 PromQL 配置告警规则(如 "CPU 使用率连续 5 分钟超过 80%"),当规则触发时,通过 Alertmanager 组件向邮件、钉钉等渠道发送告警通知。
2. 适用场景
- 监控分布式系统的基础设施(服务器、容器、数据库);
- 监控业务系统的核心指标(接口 QPS、错误率、订单量);
- 构建自定义告警规则,及时发现系统异常。
二、Grafana:监控数据的 "可视化展示窗口"
Grafana 本身不采集数据,而是作为 "数据展示层",对接 Prometheus 等多种数据源(还支持 Elasticsearch、InfluxDB 等),将枯燥的指标数据转化为直观的图表,方便运维或业务人员快速理解系统状态。
1. 核心功能
- 仪表盘(Dashboard):支持自定义仪表盘,将多个相关指标(如 "订单服务的 QPS、错误率、响应时间")组合成一个页面,按业务场景分类展示(如 "支付系统监控仪表盘""用户中心监控仪表盘")。
- 丰富图表:提供折线图、柱状图、饼图、仪表盘等多种图表类型,支持按时间范围(如近 1 小时、近 7 天)切换数据展示,直观呈现指标的变化趋势。
- 多数据源支持:可同时对接多个 Prometheus 实例(如 "生产环境 Prometheus""测试环境 Prometheus"),或混合对接其他数据源(如用 Prometheus 监控指标,用 Elasticsearch 展示日志)。
- 权限控制:支持按角色分配权限(如 "运维人员可编辑仪表盘,业务人员仅可查看"),确保监控数据的访问安全。
2. 适用场景
- 构建运维监控大屏,实时查看系统整体健康状态;
- 向业务团队展示核心业务指标(如 "今日订单量趋势""用户注册量");
- 排查问题时,通过图表快速定位指标异常(如 "QPS 突降时,响应时间是否同步升高")。
三、Prometheus + Grafana:经典搭配流程
二者结合使用时,工作流程如下:
- 数据采集:Prometheus 通过 "拉取" 模式,从目标服务(如订单服务、MySQL)采集指标数据,存储到 TSDB 中;
- 数据查询:Grafana 对接 Prometheus 数据源,通过 PromQL 查询需要展示的指标;
- 可视化展示:Grafana 将查询到的指标以图表形式展示在自定义的仪表盘上,支持实时刷新;
- 告警联动:当 Prometheus 触发告警时,除了发送通知,也可在 Grafana 中标记异常时间点,方便事后回溯。
简单来说,Prometheus 像 "监控数据的仓库管理员",负责收集和保管数据;Grafana 像 "数据展览馆的设计师",负责将仓库里的数据整理成美观易懂的展览。二者搭配,是目前分布式系统监控领域最主流的方案之一。