prometheus 与 grafana 天然互补:前者采集存储查询时序指标,后者实现可视化;正确配置数据源(url 可达、认证匹配)、排查 target 状态与指标标签、善用变量和 promql 技巧,并通过 alertmanager 实现告警闭环。

Prometheus 和 Grafana 不是“能一起用”,而是天然互补、深度协同的一对组合:Prometheus 负责采集、存储和查询时序指标,Grafana 负责把这些数据变成可读、可操作的可视化界面。二者配合的关键不在于“能不能连上”,而在于数据源配置是否准确、指标语义是否理解到位、展示逻辑是否贴合运维场景。
如何正确添加 Prometheus 为 Grafana 数据源
这是最基础也最容易出错的一步。Grafana 本身不存监控数据,它只是“取数+画图”的前端:
- 登录 Grafana(默认地址 http://localhost:3000,管理员账号 admin/admin)
- 左侧菜单进入 Configuration → Data Sources → Add data source
- 选择 Prometheus 类型
- 在 URL 栏填写 Prometheus Server 的访问地址(如 http://localhost:9090),注意必须是 Grafana 容器/服务器能直接网络可达的地址(非 localhost 时需确认跨主机网络或容器网络互通)
- 若 Prometheus 启用了 Basic Auth,需在 Auth 区域开启并填入对应用户名密码
- 点击 Save & Test —— 成功显示 Data source is working 才算真正连通
为什么 Grafana 查不到指标?常见原因排查
即使数据源显示“working”,也可能查不到指标,核心问题往往出在 Prometheus 端:
- target 没上线:访问 Prometheus UI → Status → Targets,确认 node-exporter、mysqld_exporter 等 target 状态为 UP;若为 DOWN,检查 exporter 进程是否运行、端口是否被防火墙拦截、Prometheus 配置中 targets 地址是否写错
- 指标名拼写错误:Grafana 查询框输入指标名(如 node_cpu_seconds_total)后按回车,若无自动补全或报错“no metrics found”,说明该指标未被 Prometheus 抓取到——回到 Targets 页面确认对应 job 是否有抓取成功记录,再点进 target 的 Metrics 链接,直接浏览器查看原始指标列表
- 标签过滤过严:例如写 node_memory_MemAvailable_bytes{instance="192.168.1.100:9100"} 却查不到,可能是因为该 instance 实际上报的标签是 {instance="192.168.1.100:9100", job="node"},建议先用 {job="node"} 宽泛匹配,再逐步加标签缩小范围
Grafana 中高效使用 Prometheus 数据的技巧
避免每次写复杂 PromQL,提升日常排查效率:
-
善用变量:在 Dashboard 设置中添加 Query 变量(如
label_values(node_cpu_seconds_total, instance)),让下拉框动态列出所有被监控节点,切换目标无需改面板 -
聚合函数前置:CPU 使用率常用公式是
1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance),但 Grafana 的 Legend 字段支持模板语法,如写{{instance}},图表就能自动标注每个曲线对应的机器 - 启用 Instant Query:在 Panel 编辑页勾选 Instant,可快速查看当前时刻单个指标值(适合做状态卡),而非默认的时间序列图
- 设置合理时间范围:Grafana 默认加载最近 6 小时数据,若看长期趋势(如磁盘增长),手动调成 7d 或 30d;若排查刚发生的故障,缩到 15m 内更精准
告警闭环不能只靠 Grafana
Grafana 自带 Alert 功能,但生产环境强烈建议用 Alertmanager 接管:
- Prometheus Rule 文件定义触发条件(如
node_filesystem_usage_percent > 90) - Prometheus 将告警推送给 Alertmanager
- Alertmanager 负责去重、分组、静默、路由(邮件/企微/Webhook)
- Grafana 仅作为告警展示入口(Alerts → Alert rules),方便值班人员统一查看和标注处理状态











