用 Grafana 为 Prometheus 创建仪表盘:新手指南
Grafana + Prometheus 可视化入门:部署 Grafana、配置数据源、创建时序图与仪表图、用变量做动态筛选、导入社区仪表盘模板,一篇上手。
Prometheus 自带的基础 UI 适合临时查数,但要做长期盯着的仪表盘,Grafana 是事实标准。本文走完从部署到出图的完整链路。
第一步:部署 Grafana
docker run -d --name grafana -p 3000:3000 grafana/grafana:latest
访问 http://localhost:3000,默认账号 admin/admin(首次登录强制改密)。
第二步:添加 Prometheus 数据源
Connections → Data sources → Add data source → Prometheus:
- URL:
http://prometheus:9090(容器间用服务名,宿主机部署用实际地址); - 其余默认即可,Save & Test 显示绿色即连通。
第三步:创建第一个面板
Dashboards → New → Add visualization,选刚才的数据源:
时序图(Time series)——CPU 使用率示例:
100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100
- Legend 设
{{instance}},图例显示实例名; - Unit 选
Percent (0-100),Y 轴自动带 % 号; - 面板标题写清楚"是什么 + 哪个范围"(如"CPU 使用率 - 生产集群")。
仪表图(Gauge)——适合单值概览(当前内存占用、磁盘水位):
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100
设阈值着色:<70 绿、70-90 黄、>90 红,一眼扫出异常。
第四步:用变量做动态筛选
仪表盘顶部加变量,让一套面板服务多台机器/多个服务:
Settings → Variables → New:
- Name:
instance - Type:Query
- Query:
label_values(node_cpu_seconds_total, instance)
面板查询里用 $instance 引用:
rate(node_cpu_seconds_total{mode="idle", instance=~"$instance"}[5m])
顶部下拉切换实例,所有面板联动更新。
第五步:站在社区肩膀上
Grafana 官网的 Dashboards 市场 有数千个现成模板。Node Exporter 最流行的是 Node Exporter Full(ID: 1860):Dashboards → Import → 输入 1860 → 选数据源,一秒获得专业级主机监控面板,再按需要删改。
让仪表盘好用的几条经验
- 按受众分层:首页放 SLO 级概览(可用率、错误率),细节放下钻页——别把 200 个图堆一页;
- 统一时间窗口与刷新率:全局 5m 窗口 + 30s 刷新是通用选择;
- 标注发布事件:用 Annotation 把每次发版标在时间轴上,"指标异变 vs 发版"的相关性一眼可见;
- 少即是多:一个面板的有效信息上限约 6-8 张图,超了就拆分。
观测云对照
观测云内置可视化能力,免维护 Grafana 服务:拖拽式图表编辑器、变量绑定、阈值着色、Annotation 标注一应俱全;主机/容器/数据库等场景提供预置仪表盘模板,DataKit 装完即有图可看;仪表盘与告警、日志、Trace 同平台联动——从图上异常点直接跳到相关日志,不用在 Grafana 和日志系统之间来回切换。已有 Grafana 的用户也可以把观测云作为数据源继续使用既有面板。
常见问题(FAQ)
Q:Grafana 面板的查询会影响 Prometheus 性能吗?
A:会。高刷新率 + 大时间范围 + 高基数聚合是常见性能杀手。生产仪表盘刷新率别低于 30s,大范围查询用 recording rules 预计算。
Q:Grafana 和 Kibana 什么关系?
A:Grafana 主打指标(时序数据)可视化,Kibana 是 ES 日志的可视化前端。观测云把两类数据的看板做在了同一处。
Q:怎么把仪表盘配置纳入版本管理?
A:Grafana 支持 JSON 导出/导入,也有 provisioning 机制从配置文件自动加载——把 dashboards 目录挂进容器即可实现 GitOps 化。