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:仪表盘级动态变量,用于实现下拉筛选、区间选择等交互。
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 图标(软盘图标) | 输入名称并保存 |
4.3 添加 Panel 与基本配置
每个 Panel 包含三个核心配置区域:Query(查询)、Visualization(可视化)、Panel options(面板选项)。理解这三者的关系是高效制作仪表盘的关键。
- Query:定义数据来源与过滤逻辑,支持 PromQL、SQL、Lucene 等多种查询语言。
- 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。
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())
data/csv/ 目录下,使用 Infinity 数据源或 CSV 数据源插件即可直接查询。更推荐的方式是写入 InfluxDB 或 Prometheus,以便利用完整的时序查询能力。
4.6 仪表盘组织最佳实践
- 按逻辑分组 Row:将相关 Panel 放在同一 Row 下,例如“系统资源”Row 包含 CPU、内存、磁盘 Panel。
- 使用变量实现动态切换:定义
$host、$env等变量,让同一个仪表盘适配不同环境。 - 设置合理的时间范围:默认显示最近 6 小时,可根据监控频率调整(如最近 1 小时用于实时监控)。
- 添加注解(Annotations):标记部署、故障等事件,帮助关联指标变化。
- 控制 Panel 数量:单个仪表盘建议不超过 20 个 Panel,过多会影响加载性能。