4. Grafana 仪表盘基础:Dashboard 概念与 Panel 类型

仪表盘(Dashboard)是 Grafana 最核心的可视化容器,它将多个数据面板(Panel)组织在一个页面上,实现监控数据的集中展示与交互分析。本章从零开始,带你掌握仪表盘的创建、面板添加以及核心 Panel 类型的适用场景。

4.1 仪表盘(Dashboard)概念

Grafana 仪表盘是一个包含行(Row)和面板(Panel)的层级结构。行用于逻辑分组,面板是实际的数据可视化单元。每个仪表盘可以绑定一个或多个数据源,并通过变量(Variable)实现动态过滤。

核心概念速览:
  • Dashboard:顶层容器,包含全局设置、变量、注解和多个 Row。
  • Row:逻辑分组行,用于将相关 Panel 组织在一起,支持折叠/展开。
  • Panel:最小可视化单元,每个 Panel 独立查询数据源并选择图表类型。
  • Data Source:Panel 的数据来源,如 Prometheus、InfluxDB、Elasticsearch 或 CSV。
  • Variable:仪表盘级动态变量,用于实现下拉筛选、区间选择等交互。
Grafana 仪表盘层级结构 Dashboard 层级结构 Dashboard Row: 系统概览 Row: 业务指标 Panel: CPU Panel: 内存 Panel: 磁盘 Panel: 订单量 Panel: 收入 Panel: 延迟 每个 Panel 独立绑定数据源查询,支持 Graph、Table、Stat 等多种可视化类型

4.2 创建第一个仪表盘

通过 Grafana Web UI 创建仪表盘只需几步操作。以下流程基于 Grafana 9.x / 10.x 版本,界面布局基本一致。

步骤 操作 说明
1 点击左侧菜单 Dashboards → New → New Dashboard 进入空白仪表盘编辑页面
2 点击 Add a new panel 或 Add panel 按钮 打开 Panel 编辑界面
3 在 Query 标签页选择数据源并编写查询 例如 PromQL: rate(cpu_usage_total[5m])
4 在 Visualization 标签页选择图表类型 如 Time series、Table、Stat 等
5 点击右上角 Apply 返回仪表盘 Panel 已添加到仪表盘
6 点击顶部 Save dashboard 图标(软盘图标) 输入名称并保存
💡 提示: 首次创建建议使用 Grafana 内置的 TestData DB 数据源,无需连接真实数据库即可快速体验 Panel 配置流程。

4.3 添加 Panel 与基本配置

每个 Panel 包含三个核心配置区域:Query(查询)、Visualization(可视化)、Panel options(面板选项)。理解这三者的关系是高效制作仪表盘的关键。

  • Query:定义数据来源与过滤逻辑,支持 PromQL、SQL、Lucene 等多种查询语言。
  • Visualization:选择图表类型并调整样式,如颜色、轴、图例、阈值等。
  • Panel options:设置标题、描述、重复选项、链接等元信息。
Panel 配置三要素 Panel 配置三要素流程 ① Query 查询 ② Visualization ③ Panel Options 配置顺序:先写查询获取数据 → 选择图表类型 → 调整标题/描述/链接

4.4 Panel 类型概览

Grafana 提供了丰富的 Panel 类型,以下是最常用的四种:Graph(Time series)、Table、Stat 以及 Bar Gauge。选择合适的类型能显著提升数据可读性。

Panel 类型 适用场景 数据特点 典型用例
Time series(原 Graph) 展示随时间变化的趋势 时间序列数据,支持多条线、面积、点 CPU 使用率、网络流量、QPS 曲线
Table 展示结构化数据列表 多行多列,支持排序、搜索、分页 错误日志列表、Top N 主机、数据库查询结果
Stat 突出显示单个关键数值 单个或少量聚合值,支持阈值着色 当前在线用户数、今日收入、错误率
Bar Gauge 水平或垂直进度条对比 多个值横向对比,带阈值区间 磁盘使用率、内存占用、服务健康分
Pie Chart 展示占比分布 分类汇总,显示百分比 流量来源分布、错误类型占比

4.4.1 Time series(Graph)

最常用的 Panel 类型,适合展示指标随时间的变化趋势。支持多条序列叠加、区域填充、阈值线、图例交互(点击高亮/隐藏)。在 Query 中返回时间戳 + 数值对即可自动渲染。

4.4.2 Table

适合展示详细数据列表,如数据库查询结果、日志列表、Top N 排名。支持列排序、列宽调整、单元格条件着色(如错误行标红)。Table Panel 可以配合 Transform 功能做数据透视。

4.4.3 Stat

Stat Panel 以大字形式展示单个关键数值,通常放在仪表盘顶部作为“核心指标卡”。支持设置阈值颜色(例如:值 < 80 显示绿色,80~95 显示黄色,> 95 显示红色),并可选显示趋势箭头或迷你 sparkline。

⚠️ 注意: Stat Panel 默认只显示查询返回的最后一个值。如果查询返回多条时间序列,需要确保聚合为单值(如使用 avg()、max() 或 last() 函数),否则 Stat 会显示“No data”或异常。

4.4.4 Bar Gauge

以水平或垂直条形图展示多个指标的当前值,适合做资源使用率仪表盘。每个条形可以独立设置阈值区间,视觉上直观对比各维度健康状态。

4.5 实战:用 Python 生成测试数据并导入 Grafana

在正式连接生产数据源之前,可以用 Python 生成模拟时间序列数据,通过 CSV 或直接写入 InfluxDB 的方式快速验证 Panel 配置。以下示例生成 100 条 CPU 使用率模拟数据:

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

# 生成模拟时间序列
base_time = datetime.now()
timestamps = [base_time - timedelta(minutes=i) for i in range(100, 0, -1)]
cpu_values = np.random.uniform(20, 95, 100).round(2)

# 构建 DataFrame
df = pd.DataFrame({
    "time": timestamps,
    "metric": "cpu_usage",
    "host": "web-server-01",
    "value": cpu_values
})

# 保存为 CSV(Grafana 可通过 CSV 数据源加载)
df.to_csv("mock_cpu_data.csv", index=False)
print("模拟数据已生成:mock_cpu_data.csv")
print(df.head())
💡 扩展建议: 将 CSV 文件放在 Grafana 的 data/csv/ 目录下,使用 Infinity 数据源或 CSV 数据源插件即可直接查询。更推荐的方式是写入 InfluxDB 或 Prometheus,以便利用完整的时序查询能力。

4.6 仪表盘组织最佳实践

  • 按逻辑分组 Row:将相关 Panel 放在同一 Row 下,例如“系统资源”Row 包含 CPU、内存、磁盘 Panel。
  • 使用变量实现动态切换:定义 $host、$env 等变量,让同一个仪表盘适配不同环境。
  • 设置合理的时间范围:默认显示最近 6 小时,可根据监控频率调整(如最近 1 小时用于实时监控)。
  • 添加注解(Annotations):标记部署、故障等事件,帮助关联指标变化。
  • 控制 Panel 数量:单个仪表盘建议不超过 20 个 Panel,过多会影响加载性能。
仪表盘布局示例 仪表盘布局示例(2 行 × 3 列) Row: 系统资源 CPU 使用率 (Time series) 内存使用量 (Stat) 磁盘 IO (Bar Gauge) Row: 业务指标 订单量 (Time series) 错误率 (Stat) Top 10 慢查询 (Table) 每个 Panel 独立配置查询与可视化类型,Row 用于逻辑分组

4.7 本章小结