自定义 Grafana 仪表板设计指南
Grafana 的强大之处在于其灵活的仪表板系统,你可以根据自己的需求创建个性化的监控面板。本文将详细介绍如何在 Grafana 中设计和优化自定义仪表板,涵盖面板类型、变量模板、查询优化和布局设计等方面。
一、创建新仪表板
登录 Grafana 后,点击左侧菜单「Dashboards」→「New」→「New Dashboard」。你会进入一个空白的仪表板编辑界面,可以开始添加各种面板。
二、面板类型选择
Grafana 提供了多种面板类型,每种适合不同的数据展示场景:
2.1 时间序列(Time Series)
最常用的面板类型,适合展示随时间变化的指标数据:
# CPU 使用率趋势
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 内存使用趋势
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100
2.2 仪表盘(Gauge)
适合展示单一数值的当前状态,如 CPU 使用率百分比、磁盘使用率等。可以设置阈值颜色:绿色(正常)、黄色(警告)、红色(危险)。
2.3 统计面板(Stat)
展示单一数值及其变化趋势,适合显示关键指标的当前值,如服务器在线时长、当前连接数等。
2.4 表格(Table)
以表格形式展示数据,适合对比多个实例的指标:
# 各服务器磁盘使用情况
(1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100
2.5 日志面板(Logs)
配合 Loki 数据源,直接在仪表板中展示日志流。
2.6 柱状图(Bar Chart)
适合展示分类数据的对比,如不同服务器的资源使用对比。
三、变量模板
变量模板是 Grafana 最强大的功能之一,可以让仪表板动态切换显示不同的主机、服务或时间范围。
3.1 创建变量
在仪表板设置中点击「Variables」→「Add variable」:
- Name:变量名,如
instance。 - Type:选择「Query」。
- Data source:选择 Prometheus。
- Query:
label_values(node_cpu_seconds_total, instance) - Multi-value:启用后可同时选择多个值。
- Include All option:添加「All」选项。
3.2 在查询中使用变量
# 使用 instance 变量过滤
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle", instance=~"$instance"}[5m])) * 100)
# 使用 job 变量
up{job=~"$job"}
3.3 常用变量类型
- Query:从数据源动态获取值列表。
- Custom:手动定义值列表,如
5m,15m,30m,1h。 - Interval:时间间隔变量,用于动态调整聚合粒度。
- Data source:在多数据源环境中切换数据源。
四、面板配置技巧
4.1 单位设置
在面板设置的「Standard options」→「Unit」中选择合适的单位:
- CPU 使用率:选择「Percent (0-100)」。
- 内存/磁盘大小:选择「Data / bytes(IEC)」或「Data / bytes(SI)」。
- 网络速率:选择「Data rate / bytes/sec(IEC)」。
- 时间延迟:选择「Time / seconds」。
4.2 阈值配置
在「Thresholds」中设置颜色阈值,让面板直观反映指标状态:
- 绿色:0-60%(正常范围)。
- 黄色:60-80%(需要关注)。
- 红色:80-100%(需要处理)。
4.3 数据覆写(Override)
使用 Override 功能为特定指标设置独立的样式。例如在同一面板中展示 CPU 和内存使用率时,可以设置不同的颜色和 Y 轴。
五、布局设计建议
- 顶部概览行:使用 Stat 面板展示关键指标的当前值(在线服务器数、平均 CPU、内存使用率)。
- 中部趋势行:使用时间序列面板展示 CPU、内存、网络的历史趋势。
- 底部详情行:使用表格面板展示各服务器的详细指标对比。
- 使用 Row 分组:将相关面板归入同一行,行可以折叠以节省空间。
六、仪表板注解
注解(Annotations)可以在图表上标记重要事件,如部署、故障、配置变更等:
- 进入仪表板设置 →「Annotations」→「Add Annotation Query」。
- 数据源选择 Prometheus,查询表达式如
changes(process_start_time_seconds[5m]) > 0标记服务重启事件。 - 也可以手动在图表上添加注解来标记维护窗口。
七、仪表板链接与导航
在面板中添加链接实现仪表板之间的导航跳转:
- Dashboard links:在仪表板设置中添加链接到其他仪表板。
- Data links:在面板设置中添加,点击图表数据点可跳转到详情页面。
- 使用变量传递参数:
/d/dashboard-id?var-instance=${__data.fields.instance}
八、导出与分享
8.1 导出 JSON
点击仪表板设置图标 → 「JSON Model」,可以复制或下载仪表板的 JSON 定义。这个 JSON 可以导入到其他 Grafana 实例中。
8.2 快照分享
点击分享图标 → 「Snapshot」,创建包含当前数据的静态快照,可以发送链接给其他人查看。
8.3 嵌入面板
单个面板可以生成嵌入链接或 iframe 代码,嵌入到其他网页中展示:
<iframe src="http://your-grafana:3000/d-solo/dashboard-id/panel-id?orgId=1&panelId=2" width="800" height="400"></iframe>
九、性能优化
- 减少查询数量:每个面板尽量只包含 1-3 个查询。
- 使用合适的时间范围:不要默认加载过长的时间范围。
- 设置刷新间隔:根据场景选择合理的自动刷新间隔(10s/30s/1m)。
- 使用 $__rate_interval:代替硬编码的时间范围,让 Grafana 自动优化。
- 延迟加载:大仪表板可以将不常用的 Row 设为折叠状态。
十、实用仪表板模板
推荐导入的社区仪表板:
- 1860:Node Exporter Full,全面的服务器监控。
- 3662:Prometheus 2.0 Overview,Prometheus 状态监控。
- 7587:Blackbox Exporter,网站端点监控。
- 893:Docker and System Monitoring,Docker 容器监控。
- 12486:Nginx Monitoring,Nginx 性能监控。
总结
精心设计的 Grafana 仪表板能让你快速把握服务器的运行状态。建议从社区模板开始,逐步根据自己的需求进行定制。配合 Prometheus 和 Node Exporter,可以构建专业的 VPS 监控系统。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。