外观
4. 仪表盘构建
4.1 仪表盘核心概念
在动手创建之前,我们先来理解一下构成仪表盘的几个关键元素,这非常重要。
1. 仪表盘 (Dashboard) 概述
- 定义: Grafana 仪表盘是由多个面板 (Panel) 组成的集合。这些面板以网格的形式组织在一起,可以展示来自一个或多个数据源的数据。
- 目的: 它的核心目的是将复杂、分散的数据整合起来,进行简化、提炼,最终转化为能够指导行动的洞察 (Insights)。
2. 仪表盘的构建流程
一个完整的仪表盘构建与数据展示流程,通常遵循以下路径: 数据源 (Data Source) -> 插件 (Plugin) -> 查询 (Query) -> 转换 (Transformation) -> 面板 (Panel) -> 仪表盘 (Dashboard)
下面我们来逐一拆解这些概念。
3. 数据源 (Data Source)
- 是什么: 数据源是仪表盘中所有信息的来源。它是 Grafana 连接到你的数据存储的地方。
- 多样性: Grafana 支持超过 100 种数据源,这包括传统的数据库(如 MySQL, PostgreSQL)、时间序列数据库(如 Prometheus, InfluxDB)、云服务监控(如 AWS CloudWatch)、甚至是各种 API 或电子表格(如 Salesforce, Google Analytics)。
4. 插件 (Plugin)
- 是什么: 插件是扩展 Grafana 功能的附加组件。它像一个"翻译官",负责将不同数据源的原始数据,转换成 Grafana 能够理解和处理的统一格式。
- 核心作用: 所有插件最终都会将数据转换为一种叫做数据帧 (Data Frames) 的标准结构,供后续的查询和可视化使用。
5. 查询 (Query)
- 是什么: 如果说数据源是整个数据仓库,那么查询就是你用来从仓库里精确提取所需数据的工具。
- 如何工作: 查询通常使用数据源原生的查询语言来编写。例如,连接到 Prometheus 时你会使用 PromQL,连接到 InfluxDB 时会使用 InfluxQL 或 Flux。
- 灵活性: 你可以在一个面板中执行多个查询,这样就可以合并来自不同来源的数据,或者对同一数据源进行多维度分析。
6. 转换 (Transformation)
- 是什么: 转换是在数据被可视化之前,对其进行再处理的强大工具。
- 应用场景: 你可以通过转换来重构、过滤、聚合或丰富查询返回的原始数据。比如:
- 重命名字段:让图例更易读。
- 聚合指标:计算总和、平均值等。
- 合并数据集:将多个查询结果合并成一个表格。
- 链式操作: 你可以像搭积木一样,将多个转换链接在一起,实现复杂的数据处理逻辑。
理解了这些基本构件后,我们接下来就可以动手创建自己的第一个仪表盘了。
4.2 深入了解:转换 (Transformations)
转换功能概述
- 核心理念: 转换允许你在不触及原始数据源的情况下,对查询返回的数据进行各种操作,比如操作、清理、组合、重塑或分析。
- 定位: 你可以把它看作是面板编辑器内部一个轻量级、可视化的数据整理 (Data Munging) 工具。
- 必要性: 当你的数据源返回的数据格式不完全符合你的可视化需求时,转换就成了必不可少的工具。比如当你需要计算新值、过滤掉无关数据或对结果进行聚合时。
常用转换类型
以下是一些最常用、最强大的转换功能,它们可以像乐高积木一样组合使用:
- 字段类型转换 (Convert field type): 更改字段的数据类型,例如将字符串(String)转换为数字(Number),以便进行计算。
- 字段组织 (Organize fields): 隐藏、重命名或重新排序面板中的字段(列)。
- 按值过滤 (Filter by value): 根据字段的值来包含或排除数据行。例如,只显示
status为Error的数据。 - 从计算中添加字段 (Add field from calculation): 基于其他字段的计算结果,创建一个新字段。例如,将两个字段相加得到一个总和字段。
- 分组 (Group by): 按照一个或多个字段进行分组,并对其他字段进行聚合计算(如
Sum,Average,Count)。这对于生成摘要数据非常有用。 - 重命名字段 (Rename by regex): 使用正则表达式或模式来批量重命名字段,使图例和表头更具可读性。
- 减少行 (Reduce): 对每个字段进行一个简单的计算(如
Total,Max),并将所有行减少为一行。 - 取消透视 (Unpivot/Fields to rows): 这是一种强大的重塑数据的能力,可以将“宽”格式的数据(多个值列)转换为“长”格式(一个属性列,一个值列),这对于某些图表类型是必需的。

Extract fields 变换详解
Extract fields 是一个非常强大的数据提取工具,它可以从现有字段中解析并提取出新的字段。这个变换支持多种数据格式:
支持的格式类型
- JSON: 解析 JSON 格式的数据
- Key+value pairs: 解析
key=value或key:value格式的数据 - RegExp: 使用正则表达式提取数据
- Auto: 自动发现字段
RegExp 格式的特殊语法要求
⚠️ 重要提醒: Grafana 的 Extract fields 变换中使用 RegExp 格式时,必须使用命名捕获组(Named Capturing Groups)的特殊语法,普通的正则表达式捕获组语法将不会生效!
正确的语法格式:
/(?<字段名>正则表达式模式)/1
语法要点:
- 必须用斜杠包围:整个表达式必须以
/开头和结尾 - 必须使用命名捕获组:
(?<字段名>...)而不是普通的(...) - 字段名:
<>内的名称将成为新创建字段的名称
实际应用示例
场景 1:从日期时间字符串中提取时分
- 原始数据:
2025-06-16 14:35:28 - 需求:提取出
14:35 - 正确的正则表达式:
/(?<时分>\d{2}:\d{2})/1
场景 2:只提取小时
- 原始数据:
2025-06-16 14:35:28 - 需求:只提取出
14 - 正确的正则表达式:
/(?<小时>\d{2}):\d{2}/1
场景 3:从日志中提取状态码
- 原始数据:
GET /api/users 200 1.2ms - 需求:提取状态码
200 - 正确的正则表达式:
/(?<状态码>\d{3})/1
场景 4:提取多个字段
- 原始数据:
Tier 1 - Critical Error - 需求:同时提取等级和类型
- 正确的正则表达式:
/(?<等级>Tier \d+) - (?<类型>\w+ \w+)/1
常见错误示例
❌ 错误用法(这些都不会生效):
(\d{2}:\d{2}) # 缺少斜杠和命名捕获组
\d{2}:\d{2} # 缺少捕获组
/(\d{2}:\d{2})/ # 缺少命名捕获组
(?<时分>\d{2}:\d{2}) # 缺少斜杠包围1
2
3
4
2
3
4
✅ 正确用法:
/(?<时分>\d{2}:\d{2})/1
配置步骤
- 在面板编辑器中,切换到 Transform 选项卡
- 点击 Add transformation,选择 Extract fields
- Source: 选择要处理的源字段
- Format: 选择 RegExp
- RegExp: 输入符合命名捕获组语法的正则表达式
- 确保 Replace All Fields 开关处于关闭状态(除非你确实想替换所有字段)
通过正确使用这个语法,你就可以轻松地从复杂的字符串字段中提取出所需的信息,创建新的字段用于进一步的数据分析和可视化。
转换的灵活性
转换最强大的地方在于它的可组合性。你可以创建一个转换链,上一个转换的输出会成为下一个转换的输入。这允许你按部就班地构建出你想要的数据结构,最终完美地适配你的可视化需求。
4.3 使用 grafana 内置数据创建一个测试面板
点击仪表盘->新建文件夹(用于存放面板)->进入文件夹新建面板->选择 Grafana 内置数据


4.4 面板配置项详解
当你进入面板的编辑界面后,右侧的配置栏就是你施展魔法的地方。它决定了你的数据最终以什么样貌呈现。你提供的截图和整理非常棒,我们现在就把它系统化地梳理到文档里。
请注意:不同的可视化类型(如时间序列、仪表盘、饼图等),右侧的配置项会略有不同。以下内容主要以最常用的 "时间序列 (Time series)" 图表为例。
1. 可视化类型 (Visualization)
这是最顶部的第一个选项,也是最重要的。你可以在这里选择你想要的图表类型,比如:
Time series(时间序列图)Stat(统计值)Gauge(仪表盘)Bar chart(柱状图)Table(表格)- 等等...
2. 图表样式 (Graph styles)
这一部分控制着图表的"外观"。
- Style (样式):
Lines(线条),Bars(柱状图),Points(点)。可以单独使用或组合使用。 - Line interpolation (线条插值): 控制线条的平滑度,例如
Linear(线性),Smooth(平滑),Step before/after(阶梯线)。 - Line width (线条宽度): 调整线条的粗细。
- Fill opacity (填充不透明度): 线条下方区域的填充透明度。
- Gradient mode (渐变模式): 设置填充区域的颜色渐变方式。
- Line style (线条样式):
Solid(实线),Dash(虚线),Dots(点线)。 - Connect null values (连接空值): 当数据出现空值(断点)时,是否将前后的数据点连接起来。
- Show points (显示数据点): 是否在图表上显示每个数据点。
- Stack series (堆叠系列): 当有多个数据系列时,是否将它们堆叠起来。
Normal是数值堆叠,100%是按百分比堆叠。
3. 坐标轴 (Axis)
控制图表的坐标轴(X 轴和 Y 轴)如何显示。
- Label (标签): 为坐标轴添加自定义的文字标签。
- Placement (位置):
Auto,Left,Right,Hidden(隐藏)。 - Width (宽度): 调整轴的宽度。
- Scale (刻度):
linear(线性) 或logarithmic(对数)。对数刻度在数据差异巨大时非常有用。
4. 图例 (Legend)
控制图表下方的图例显示。
- Mode (模式):
List(列表),Table(表格),Hidden(隐藏)。 - Placement (位置):
Bottom(底部) 或Right(右侧)。 - Values (显示值): 可以在图例中显示每个系列的附加统计值,如
Total(总计),Max(最大值),Min(最小值),Avg(平均值)等。
5. 标准选项 (Standard options)
这部分处理数据的单位和格式。
- Unit (单位): 为数据指定一个单位,Grafana 会自动进行格式化。例如,选择
Data (metric)->Bytes,它会自动将1024显示为1 KB。 - Min / Max (最小/最大值): 手动设置 Y 轴的最小和最大值。默认为
auto。 - Decimals (小数位数): 控制显示数值的小数位数。
- Display name (显示名称): 覆盖数据系列在图例中的默认名称。
- Color scheme (颜色方案): 为图表选择一套预设的颜色。
- No value (无值): 当查询没有返回数据时,面板上显示的内容。
6. 阈值 (Thresholds)
让图表根据数值动态变色,对于告警和状态监控非常有用。
- 可以添加一个或多个阈值,例如
> 80。 - Mode (模式):
Absolute(绝对值) 或Percentage(百分比)。 - 当数值超过阈值时,图表的颜色会发生相应变化。
7. 值映射 (Value mappings)
将特定的文本或数值映射为更友好的显示文本或颜色。
- 例如: 你可以将
1映射为文本 "OK" 并显示为绿色,将2映射为 "Error" 并显示为红色。
8. 数据链接 (Data links)
这是一个非常强大的功能,允许你从图表中的数据点直接链接到其他地方。
- 可以链接到另一个 Grafana 仪表板,并传递当前数据点的时间范围或标签作为变量。
- 可以链接到一个外部的 URL。
9. 字段覆盖 (Field Overrides)
这是最高级的自定义选项之一。它允许你将上述几乎所有的配置,单独应用到某一个特定的数据系列(字段)上。
- 例如: 在一个有三条线的图表中,你可以使用字段覆盖功能,只把其中一条线的样式变成柱状图,并使用不同的 Y 轴。
4.5 常用可视化面板一览
你发的这张图太好了,完美展示了 Grafana 内置的"可视化武器库"。了解这些,我们就能根据不同的场景选择最合适的图表。我已经帮你把这张图里的内容整理成文字,并补充了一些说明,放进文档里了。
- Time Series (时间序列图):最基础、最常用的图表,用于展示数据点随时间的变化。我们前面详细介绍的配置项大多都适用于它。
- Stat (统计值):用于突出显示一个关键的摘要数字,比如当前的总用户数、CPU 使用率等。
- Gauge (仪表盘):像汽车仪表盘一样,在一个设定的范围内展示一个值,常用于表示百分比或进度。
- Bar chart (柱状图):用于比较不同类别的数据。
- Table (表格):以表格形式展示数据,支持多种列样式和自定义。
- Pie chart (饼图):展示各个分类占总体的百分比。
- Histogram (直方图):将数值分布呈现为条形图,用于观察数据的分布情况。
- Heatmap (热力图):类似于随时间变化的直方图,用颜色深浅来表示数值大小,非常适合观察大量数据点的模式和集中区域。
- State timeline (状态时间线):可视化状态随时间的变化和持续时长,非常适合展示设备的启停、服务的健康状态等。
- Status history (状态历史):以网格形式展示周期性的状态历史。
- Text (文本):支持 Markdown 和 HTML,可以用来添加说明、标题或自定义内容。
- Alert list (告警列表):显示当前触发的告警及其状态。
- Dashboard list (仪表盘列表):动态链接到其他仪表盘,常用于创建导航或索引页面。
- Logs (日志):专门用于展示日志数据,并支持日志内容的筛选和高亮。
- Node Graph (节点图):用于可视化节点之间的关系,比如服务依赖关系、网络拓扑等。
- Traces (链路追踪):用于可视化分布式系统中的请求链路。
- Trend (趋势图):类似时间序列,但 X 轴不一定是时间,可以用于展示两个变量之间的关系。
- XY Chart (散点图):在图中绘制任意 X 与 Y 的关系,用于可视化两个变量之间的关联。