本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
变量类型
本文档主题专为支持 Grafana 8.x 版本的 Grafana 工作空间而设计。
有关支持 Grafana 版本 10.x 的 Grafana 工作空间,请参阅。在 Grafana 版本 10 中工作
有关支持 Grafana 9.x 版本的 Grafana 工作空间,请参阅。在 Grafana 版本 9 中工作
Grafana 使用几种类型的变量。
变量类型 | 描述 |
---|---|
查询 | 查询生成的值列表,例如指标名称、服务器名称、传感器 ID、数据中心等。有关更多信息,请参阅 添加查询变量。 |
自定义 | 使用逗号分隔的列表手动定义变量选项。有关更多信息,请参阅 添加自定义变量。 |
Text box(文本框) | 显示带有可选默认值的文本输入字段。有关更多信息,请参阅 添加文本框变量。 |
常量 | 定义一个隐藏的常量。有关更多信息,请参阅 添加常量变量。 |
数据来源 | 快速更改整个仪表板的数据源。有关更多信息,请参阅 添加数据源变量。 |
Interval | 间隔变量表示时间跨度。有关更多信息,请参阅 添加间隔变量。 |
即席过滤器 | 自动添加到数据源的所有指标查询中的键/值筛选器(InfluxDB、Prometheus 等)。 OpenSearch 有关更多信息,请参阅 添加临时过滤器。 |
全局变量 | 可在查询编辑器的表达式中使用的内置变量。有关更多信息,请参阅 全局变量。 |
链式变量 | 变量查询可以包含其他变量。有关更多信息,请参阅 链式变量。 |
添加查询变量
使用查询变量,您可以编写返回指标名称、标签值或密钥列表的数据源查询。例如,查询变量可能返回服务器名称、传感器 ID 或数据中心的列表。变量值在通过数据源查询动态获取选项时会发生变化。
查询表达式可以包含对其他变量的引用,实际上可以创建链接变量。Grafana 会检测到这一点,并在变量的链接变量之一发生变化时自动刷新该变量。
查询表达式
每个数据源的查询表达式都不同。有关更多信息,请参阅您的数据源的文档,网址为连接到数据来源。
输入常规选项
为查询变量输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “查询”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入查询选项
为查询变量输入查询选项
-
在数据源列表中,选择查询的目标数据源。有关数据源的更多信息,请参阅连接到数据来源。
-
在 “刷新” 列表中,选择变量应何时更新选项。
-
从不-缓存变量查询,并且值不会更新。如果值从不改变,则没问题,但是如果它们是动态的并且变化很大,则会出现问题。
-
仪表板加载时-每次加载仪表板时都会查询数据源。这会减慢仪表板的加载速度,因为必须先完成变量查询,然后才能初始化仪表板。
-
更改时间范围-当仪表板时间范围发生变化时查询数据源。仅当您的变量选项查询包含时间范围筛选器或依赖于仪表板的时间范围时,才使用此选项。
-
-
在 “查询” 字段中,输入查询。
-
查询字段因您的数据源而异。某些数据源具有自定义查询编辑器。
-
如果您需要在单个输入字段查询编辑器中留出更多空间,请将鼠标悬停在字段右下角的线条上,然后向下拖动以展开。
-
-
(可选)在 Regex 字段中,键入正则表达式以筛选或捕获数据源查询返回的名称的特定部分。有关示例,请参阅使用正则表达式过滤变量。
-
在排序列表中,选择要在下拉列表中显示的值的排序顺序。默认选项 “禁用” 表示将使用数据源查询返回的选项顺序。
-
(可选)输入选择选项。有关更多信息,请参阅 输入变量选择选项。
-
在值预览中,Grafana 工作区显示当前变量值的列表。查看它们以确保它们符合您的期望。
-
选择 “添加” 将变量添加到仪表板。
添加自定义变量
对于不变的值,请使用自定义变量。这可能是数字、字符串,甚至是其他变量。
例如,如果您的服务器名称或区域名称不变,则可以将其创建为自定义变量而不是查询变量。因为它们不会改变,所以你可以在链式变量中使用它们,而不是在其他查询变量中使用它们。这将减少 Grafana 在更新链式变量时必须发送的查询数量。有关链式变量的更多信息,请参见链式变量。
输入常规选项
为自定义变量输入查询选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “自定义”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量列表下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入自定义选项
为自定义变量输入自定义选项
-
在以逗号分隔的值列表中,在逗号分隔的列表中输入此变量的值。可以包括用冒号分隔的数字、字符串、其他变量或键值对。
-
(可选)输入选择选项。有关更多信息,请参阅 输入变量选择选项。
-
在值预览中,Grafana 工作区显示当前变量值的列表。查看它们以确保它们符合您的期望。
-
选择 “添加” 将变量添加到仪表板。
添加文本框变量
文本框变量显示带有可选默认值的文本输入字段。这是最灵活的变量,因为您可以输入任何值。如果您的指标具有高基数,或者您想同时更新仪表板中的多个面板,请使用这种类型的变量。
输入常规选项
为文本框变量输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “文本” 框。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入文本选项
为文本框变量输入文本选项
-
(可选)在默认值字段中,选择变量的默认值。如果您未在此字段中输入任何内容,Grafana 会显示一个空文本框,您可以在其中键入文本。
-
在值预览中,Grafana 显示当前变量值的列表。查看它们以确保它们符合您的期望。
-
选择 “添加” 将变量添加到仪表板。
添加常量变量
要定义隐藏常量,请使用常量变量。常量变量对于要共享的仪表板的指标路径前缀非常有用。导出仪表板时,常量变量会转换为导入选项。
常量变量不灵活。每个常量变量仅包含一个值。要对其进行更新,必须更新变量设置。
当您有必须包含在查询中但又不想在每个查询中都重新键入的复杂值时,常量变量很有用。例如,如果您有一个名为的服务器路径i-0b6a61efe2ab843gg
,则可以将其替换为一个名为的变量$path_gg
。
输入常规选项
为常量变量输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “常量”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
变量-仪表板上不显示变量下拉列表。这是默认模式。
-
未选择(空白)-变量下拉列表显示变量名称或标签值。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
输入常量选项
为常量变量输入常量选项
-
在 “值” 字段中,输入变量值。您可以输入字母、数字和符号。如果您使用高级变量格式选项,甚至可以使用通配符。有关更多信息,请参阅 高级变量格式选项。
-
在值预览中,Grafana 工作区显示当前变量值。查看它以确保它符合您的预期。
-
选择 “添加” 将变量添加到仪表板。
添加数据源变量
要快速更改整个仪表板的数据源,可以使用数据源变量。如果您有多个数据源实例(可能在不同的环境中),它们会很有用。
输入常规选项
为数据源变量输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “数据源”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入数据源选项
为数据源变量输入数据源选项
添加间隔变量
使用间隔变量来表示时间跨度1m
,例如、1h
、1d
。你可以把它们看作是仪表板范围内的命令 group-by-time 。间隔变量会更改数据在可视化中的分组方式。您也可以使用 “自动” 选项在每个时间段内返回设定数量的数据点。
您可以使用间隔变量作为按时间分组的参数(对于 InfluxDB)、日期直方图间隔(对于 OpenSearch)或作为汇总函数参数(对于 Graphite)进行分组。
输入常规选项
为区间变量输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “间隔”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入间隔选项
为间隔变量输入间隔选项
-
在值字段中,输入要在变量下拉列表中显示的时间范围间隔。支持以下时间单位:
s (seconds)
、m (minutes)
、h (hours)
、d (days)
、w (weeks)
M (months)
、和y (years)
。您也可以接受或编辑默认值:1m,10m,30m,1h,6h,12h,1d,7d,14d,30d
. -
(可选)如果要将自动选项添加到列表中,请打开 “自动
auto
选项”。使用此选项指定应将当前时间范围分割多少次以计算当前auto
时间跨度。如果将其打开,则会出现另外两个选项:-
步数-选择将当前时间范围分割以计算该值的次数,类似于最大数据点查询选项。例如,如果当前可见的时间范围为 30 分钟,则
auto
间隔将数据分组为 30 个一分钟增量。默认值为 30 步。 -
最小间隔 — 最小阈值,低于该阈值的步数间隔不会除以时间。继续以 30 分钟为例,如果最小间隔设置为
2m
,Grafana 会将数据分组为 15 个 2 分钟增量。
-
-
在值预览中,Grafana 显示当前变量值的列表。查看它们以确保它们符合您的期望。
-
选择 “添加” 将变量添加到仪表板。
间隔变量示例
在 Graphite 函数myinterval
中使用模板变量的示例:
summarize($myinterval, sum, false)
一个更复杂的石墨示例:
groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5), '$interval', 'sum', false), 2, 'sum')
添加临时过滤器
您可以使用一次性筛选器或临时筛选器来添加键/值筛选器,这些筛选器会自动添加到使用指定数据源的所有指标查询中。与其他变量不同,您不在查询中使用一次性筛选器。相反,您可以使用它们为现有查询编写过滤器。
注意
注意:一次性或临时筛选变量仅适用于 InfluxDB、Prometheus 和数据源。 OpenSearch
输入常规选项
为即席筛选器输入常规选项
-
导航到要为其设置变量的仪表板,然后选择页面顶部的仪表板设置(齿轮)图标。
-
在 “变量” 选项卡上,选择 “新建”。
-
输入变量的名称。
-
在 “类型” 列表中,选择 “即席筛选器”。
-
(可选)在 “标签” 中,输入变量下拉列表的显示名称。如果您不输入显示名称,则下拉标签将是变量名称。
-
选择 “隐藏” 选项:
-
未选择(空白)-变量下拉列表显示变量名称或标签值。这是默认模式。
-
标签-变量下拉列表仅显示选定的变量值和向下箭头。
-
变量-仪表板上不显示变量下拉列表。
-
输入选项
为即席筛选器输入选项
-
在数据源列表中,选择目标数据源。有关数据源的更多信息,请参阅连接到数据来源。
-
选择 “添加” 将变量添加到仪表板。
创建即席过滤器
即席筛选器是可用的最复杂、最灵活的变量选项之一。此变量支持构建仪表板范围的即席查询,而不是常规的变量选项列表。以这种方式应用的筛选器将应用于仪表板上的所有面板。
链式变量
链式变量,也称为链接变量或嵌套变量,是变量查询中包含一个或多个其他变量的查询变量。本节说明了链式变量的工作原理,并提供了指向使用链式变量的示例仪表板的链接。
每个数据源的链式变量查询都不同,但所有数据源的前提都是一样的。你可以在任何支持链式变量查询的数据源中使用链式变量查询。
您可以构建 5 或 10 个级别的复杂链接模板化仪表板。从技术上讲,您可以访问的深度或复杂程度没有限制,但是您拥有的链接越多,查询负载就越大。
最佳实践和技巧
以下做法将使您的仪表板和变量更易于使用。
创建新的链式变量
-
链接变量会创建父子依赖关系。你可以把它们想象成梯子或一棵树。
-
创建新的链式变量的最快方法是复制要作为新变量基础的变量。在变量列表中,选择变量条目右侧的 “复制变量” 图标以创建副本。然后,您可以将父变量的查询添加到查询中。
-
以这种方式创建的新链式变量显示在列表的底部。要使列表具有逻辑顺序,请将变量拖到列表中的其他位置。
可变顺序
要更改仪表板变量列表中变量的顺序,请选择每个条目右侧的向上和向下箭头。Grafana 工作区根据此列表从左到右列出变量下拉列表,在最左边的列表顶部显示变量。
-
在子变量之前列出顶部没有依赖关系的变量。
-
每个变量都应跟在它所依赖的变量之后。
-
用户界面未指明哪些变量具有依赖关系。按逻辑顺序列出变量,以便最终用户(和您自己)更清楚。
复杂性考虑
变量中的依赖层越多,更改变量后更新仪表板所需的时间就越长。
例如,如果您有一系列四个关联变量(国家、地区、服务器、指标),并且您更改了根变量值(国家),则 Grafana 工作区必须先对所有因变量运行查询,然后才能更新控制面板中的可视化效果。
全局变量
Grafana 具有全局内置变量,可以在查询编辑器的表达式中使用。本主题按字母顺序列出它们并对其进行了定义。这些变量在查询、仪表板链接、面板链接和数据链接中非常有用。
$__仪表板
此变量是当前仪表板的名称。
$__from 和 $__to
Grafana 有两个内置的时间范围变量:和。$__from
$__to
默认情况下,它们当前始终以纪元毫秒为单位进行插值,但您可以控制日期格式。
语法 | 结果示例 | 描述 |
---|---|---|
${__from}
|
1594671549254 | Unix 毫秒时代 |
${__from:date}
|
2020-07-13T 20:19:09.254 Z | 没有参数,默认为 ISO 8601/RFC 3339 |
${__from:date:iso}
|
2020-07-13T 20:19:09.254 Z | ISO 8601/RFC 3339 |
${__from:date:seconds}
|
1594671549 | Unix 秒纪元 |
${__from:date:YYYY-MM}
|
2020-07 | 任何自定义数据格式。有关更多信息,请参阅显示 |
上面的语法${__to}
也适用于。
您也可以在网址中使用此变量。例如,要将最终用户发送到显示从六小时前到现在的时间范围的仪表板,请使用以下 URL:https://play.grafana.org/d/000000012/grafana-play-home? viewpanel=2&orgid=1? from=now-6h&to=now
$__间隔
你可以将该$__interval
变量用作按时间(对于 InfluxDB、Myself、Postgres、MSSQL)、日期直方图间隔(对于)进行分组的参数,也可以用作汇总函数参数(对于 Graphite OpenSearch)。
Grafana 工作空间会自动计算一个间隔,该间隔可用于在查询中按时间进行分组。当数据点多于图表上显示的数据点时,可以通过按更大的间隔进行分组来提高查询的效率。例如,在查看 3 个月的数据时,按 1 天分组比按 10 秒分组更有效。图表看起来相同,查询速度会更快。使用图表的时间范围和宽度(像素数)计算得出。$__interval
近似计算:(from - to) / resolution
例如,当时间范围为 1 小时且图表为全屏模式时,可以将间隔计算为2m
;点以 2 分钟间隔分组。如果时间范围为 6 个月且图表为全屏显示,则间隔可能为1d
(1 天);点按天分组。
在 InfluxDB 数据源中,传统变量$interval
是同一个变量。请改用 $__interval
。
InfluxDB 和 OpenSearch 数据源具有用于硬编码间隔或使用语法-> 设置$__interval
变量的最小限制的Group by time
interval
字段。>
>10m
$__间隔_ms
此变量是以毫秒为单位的$__interval
变量,而不是时间间隔格式的字符串。例如,如果$__interval
是,20m
则$__interval_ms
为1200000
。
$__name
此变量仅在 Singlestat 面板中可用,可用于 “选项” 选项卡上的前缀或后缀字段。该变量将替换为系列名称或别名。
$__org
此变量是当前组织的 ID。变量${__org.name}
是当前组织的名称。
$__user
变量${__user.id}
是当前用户的 ID。变量${__user.login}
是当前用户的登录账号。变量${__user.email}
是当前用户的电子邮件。
$__区间
目前只有 Prometheus 数据源支持此变量。此变量表示当前仪表板的范围。它是通过计算得出的to - from
。它有名为 and 的毫秒和秒表示形式。$__range_ms
$__range_s
$timeFilter 或 $__timeFilt
该$timeFilter
变量以表达式形式返回当前选定的时间范围。例如,时间范围间隔Last 7
days
表达式为time > now() - 7d
。
此变量用于多个地方,包括:
-
InfluxDB 数据源的 WHERE 子句。在查询编辑器模式下,Grafana 会自动将其添加到 InfluxDB 查询中。您可以在文本编辑器模式下手动添加:
WHERE $timeFilter
. -
在 Azure 监控器数据源中记录分析查询。
-
MySQL、Postgres 和 MSSQL 中的 SQL 查询。
-
该
$__timeFilter
变量用于 MySQL 数据源。