添加和管理变量
下表列出了附带Grafana类型的变量。
变量类型 | 描述 |
---|---|
查询 | Query-generated列表值等指标名称、服务器名称、传感器id,数据中心,等等。添加一个查询变量。 |
自定义 | 定义的变量选择手动使用逗号分隔的列表。添加一个自定义变量。 |
文本框 | 显示一个自由文本输入字段和一个可选的默认值。添加一个文本框变量。 |
常数 | 定义一个隐藏的常数。添加一个常数变量。 |
数据源 | 快速改变整个仪表板的数据源。添加一个数据源变量。 |
时间间隔 | 区间变量表示的时间跨度。添加一个区间变量。 |
临时过滤器 | 键/值的过滤器会自动添加到所有度量查询数据源(InfluxDB,普罗米修斯,Elasticsearch只)。添加临时过滤器。 |
全局变量 | 内置的变量,可以在查询表达式编辑器使用。指全局变量。 |
链接变量 | 变量可以包含其他变量的查询。指链接变量。 |
输入通用选项
你必须输入一般选择您创建的任何类型的变量。
导航到仪表板为并单击你想让一个变量仪表板设置(齿轮)图标在页面的顶部。
在变量选项卡上,单击新。
输入一个的名字的变量。
在类型列表中,选择查询。
(可选)标签,输入变量的显示名称下拉。
如果你不输入一个昵称,然后下拉标签变量名。
选择一个隐藏选择:
- 没有选择(空白):下拉显示变量的变量的名字或标签价值。这是默认的。
- 标签:变量下拉只显示所选变量值和一个向下的箭头。
- 变量:没有变量下拉显示在仪表板上。
添加一个查询变量
查询变量允许您编写一个数据源的查询可以返回一个指标名称列表,标记值,或钥匙。例如,一个查询变量可能返回服务器名称的列表,传感器id或数据中心。变量的值改变时动态获取数据源查询选项。
通常只支持查询变量的字符串。如果你的查询返回的数字或任何其他数据类型,您可能需要将它们转换为字符串为了使用它们作为变量。Azure的数据源,例如,您可以使用tostring为此函数。
查询表达式可以包含其他变量的引用和创建相关变量。Grafana检测时,自动刷新一个变量的变量变化有关。
注意:为每个数据源查询表达式是不同的。有关更多信息,请参考文档数据源。
- 输入通用选项。
- 在数据源列表中,选择查询的目标数据源。有关数据源的更多信息,请参考添加一个数据源。
- 在刷新列表中,选择当变量应该更新选项。
- 在仪表板负载:每次查询数据源仪表板负载。这减缓仪表板加载,因为变量查询之前需要完成仪表盘可以初始化。
- 时间范围变化:查询数据源时,仪表板时间范围的变化。只有使用这个选项如果你的变量选择查询包含一个时间范围过滤器或者是依赖于仪表板时间范围。
- 在查询字段中,输入一个查询。
- 根据您的不同数据源的查询字段。一些数据源定义查询编辑器。
- 如果你需要更多的空间在一个输入字段查询编辑器,然后把鼠标移到右下角的线场和阻力向下扩展。
- (可选)正则表达式字段中,输入一个正则表达式过滤或捕获特定部分的名字查询返回的数据来源。看到的例子,请参考过滤变量与正则表达式。
- 在排序列表中,选择要显示值的排序顺序的下拉列表。默认选项,禁用,意味着选择的顺序返回的数据源查询将被使用。
- (可选)输入选择选项。
- 在预览的价值观,Grafana显示当前变量的值的列表。检查以确保他们符合你的预期。
- 点击添加变量添加到仪表板。
添加一个自定义变量
使用一个自定义变量的值不会改变,比如一个数字或一个字符串。
例如,如果你有服务器名称或地区名称,永远不会改变,那么您可能想要创建自定义变量而不是查询变量。因为他们不改变,你可能会使用它们链接变量而不是其他查询变量。这将减少查询Grafana链接变量时必须发送更新。
- 输入通用选项。
- 在值用逗号分开列表,输入这个变量在一个以逗号分隔的值。你可以包括数字、字符串或键/值对一个空间和一个冒号隔开。例如,
key1: value1, key2: value2
。 - (可选)输入选择选项。
- 在预览的价值观,Grafana显示当前变量的值的列表。检查以确保他们符合你的预期。
- 点击添加变量添加到仪表板。
添加一个文本框变量
文本框变量显示一个自由文本输入字段和一个可选的默认值。这是最灵活的变量,因为您可以输入任何值。使用这种类型的变量,如果你有指标高基数或如果你想更新仪表板在同一时间多个面板。
有关基数的更多信息,请参考基数峰值和为什么他们是什么事?
- 输入通用选项。
- (可选)默认值字段中,选择变量的默认值。如果你不输入任何在这一领域,然后Grafana为用户显示一个空的文本框输入文本。
- 在预览的价值观,Grafana显示当前变量的值的列表。检查以确保他们符合你的预期。
- 点击添加变量添加到仪表板。
添加一个常数变量
常数隐藏变量使您能够定义一个常量。这是用于度量路径前缀仪表板你想分享。当您导出仪表板,常数变量转换为导入选项。
恒定的变量不灵活。每个常数变量只包含一个值,它不能被更新,除非你更新变量设置。
常数变量是有用的,当你有复杂的值,您需要包括在查询中但不想重新输入每个查询。例如,如果你有一个服务器路径i-0b6a61efe2ab843gg
,那么你就可以用一个变量代替它path_gg美元
。
- 输入通用选项。
- 在价值字段中,输入变量的值。您可以输入字母、数字和符号。如果您使用您甚至可以使用通配符原始的格式。
- 在预览的价值观,Grafana显示当前的变量值。检查,以确保它匹配你所希望的。
- 点击添加变量添加到仪表板。
添加一个数据源变量
数据源变量使您能够快速改变整个仪表板的数据源。他们是有用的,如果你有一个数据源的多个实例,也许在不同的环境中。
- 输入通用选项。
- 在类型列表中,选择的目标数据源变量。有关数据源的更多信息,请参考添加一个数据源。
- (可选)实例名过滤,输入正则表达式过滤器的数据源实例变量值下拉列表选择。离开这一领域的空来显示所有实例。
- (可选)输入选择选项。
- 在预览的价值观,Grafana显示当前变量的值的列表。检查以确保他们符合你的预期。
- 点击添加变量添加到仪表板。
添加一个区间变量
使用一个时间间隔变量来代表时间跨度等1米
,1 h
,1 d
。你可以把它们作为dashboard-wide“group by时间”命令。区间变量改变可视化的数据分组。您还可以使用自动选择返回一组数据点的数量每时间跨度。
您可以使用一个区间变量作为参数组时间(InfluxDB),日期直方图区间(Elasticsearch),或作为一个总结函数参数(石墨)。
- 输入通用选项。
- 在值字段中,输入你想要出现的时间范围区间变量的下拉列表。以下时间单位支持:
(秒)
,(分钟)
,h(小时)
,d(天)
,w(周)
,米(个月)
,y(年)
。你也可以接受或编辑默认值:1米、10米、30米、1 h, 6 h、12 h, 1 d, 7 d, 14 d, 30 d
。 - (可选)打开汽车的选择如果你想添加的
汽车
选项列表。这个选项允许您指定当前时间范围应该是多少次分裂计算电流汽车
时间跨度。如果你把它打开,然后出现两个选择:- 数步—选择当前时间范围的次数将计算值,相似最大的数据点查询选项。例如,如果当前可见的时间范围是30分钟,然后
汽车
间隔的数据分组到30分钟增量。默认值为30的步骤。 - 最小间隔,步数间隔的最小阈值低于不会分裂。继续30分钟的例子中,如果最小时间间隔设置为2 m,那么Grafana组为15个两分钟增量的数据。
- 数步—选择当前时间范围的次数将计算值,相似最大的数据点查询选项。例如,如果当前可见的时间范围是30分钟,然后
- 在预览的价值观,Grafana显示当前变量的值的列表。检查以确保他们符合你的预期。
- 点击添加变量添加到仪表板。
区间变量的例子
下面的示例显示了一个模板变量myinterval
在石墨功能:
总结(myinterval美元,金额,假)
下面的例子展示了一个更复杂的石墨的例子,从石墨嵌套模板面板的请求:
groupByNode(总结(movingAverage(应用。应用。server.counters.requests美元。统计,5),“美元区间”,“和”,假),2,'和')
添加临时过滤器
临时过滤器使您能够添加键/值的过滤器会自动添加到所有指标的查询使用指定的数据源。不像其他的变量,你不使用临时过滤器在查询。相反,您使用临时过滤器来编写过滤器为现有的查询。
注意:临时过滤器变量只与普罗米修斯,洛基,InfluxDB, Elasticsearch数据源。
创建临时过滤器
临时过滤器是一个最复杂的和灵活的变量选择。而不是一般的变量列表选项,这个变量允许您构建一个dashboard-wide特别查询。过滤器适用于这种方式应用于所有面板在仪表板上。
配置变量选择的选项
选择选项是一个特性可以用来管理变量的选择选择。选择所有选项都是可选的,默认情况下。
多值变量
插值变量与多个值选择是很复杂的,它不是直接如何格式化多个值到一个字符串,该字符串是有效的使用在给定的上下文变量。Grafana试图解决这个问题通过允许每个数据源插件通知模板引擎插值格式用于多个值。
注意:的自定义所有的价值选择变量必须为Grafana空白格式所有值为一个字符串。如果把它空白,那么Grafana连接(添加)查询中的所有值。类似的
value1, value2, value3
。如果一个定制的所有
值,那么相反的价值将类似*
或所有
。
多值变量与石墨数据源
石墨使用一滴表达式。一个变量与多个值,在这种情况下,被替换{host1, host2, host3}
如果当前的变量值host1,host2,host3。
多值变量与普罗米修斯或InfluxDB数据源
InfluxDB和普罗米修斯使用正则表达式,所以相同的变量将被替换(host1 | host2 | host3)
。每个值也将regex逃脱了。如果不是这样,一个值的正则表达式控制字符将打破正则表达式。
多值变量与一个弹性数据源
Elasticsearch使用lucene查询语法,因此相同的变量将被格式化(“host1”或“host2”或“host3”)
。在这种情况下,每个值必须转义,这样的价值只包含lucene控制字和引号。
解决多值变量
自动转义和格式可能会导致一些问题,会很难理解其背后的逻辑。尤其是InfluxDB和普罗米修斯的使用正则表达式语法要求regex操作符中使用的变量是上下文。
如果你不想要Grafana自动regex逃避和格式,然后你必须做以下之一:
- 关掉多值或包括所有选项选项。
- 使用原始变量的格式。
包括所有选项
Grafana添加了一个所有
下拉列表中选择的变量。如果用户选择该选项,那么所有变量选项被选中。
自定义所有的价值
这个选项,如果仅仅是可见的包括所有选项被选中。
输入正则表达式、粘稠或lucene的语法自定义所有的价值字段定义的值所有
选择。
默认情况下,所有
价值包括所有选项组合表达式。这会变得很长,可以有性能问题。有时它可以更好地指定一个自定义的所有价值,就像一个通配符正则表达式。
为了自定义正则表达式、粘稠或lucene的语法自定义所有的价值选项,但它却永远不会逃脱了所以你要思考什么是有效值为您的数据源。
全局变量
Grafana全局内置的变量,可以使用在查询表达式编辑器。这个话题列表按字母顺序排列并定义它们。这些变量在查询的时候都很有用,仪表板链接,面板的链接和数据链接。
__dashboard美元
仅可在Grafana v6.7 +。在Grafana 7.1中,变量从显示当前仪表板的UID当前仪表板的名字。
这个变量的名字是当前的仪表板。
__from和__to美元
Grafana内置时间范围有两个变量:__from美元
和__to美元
。他们目前总是插入时代毫秒在默认情况下,但是你可以控制日期格式。
注意:这种特殊的格式语法仅可在Grafana 7.1.2 +
语法 | 例子的结果 | 描述 |
---|---|---|
$ {__from} |
1594671549254 | Unix毫秒时代 |
$ {__from:日期} |
2020 - 07 - 13 - t20:19:09.254z | 没有参数,默认为ISO 8601 / RFC 3339 |
$ {__from:日期:iso} |
2020 - 07 - 13 - t20:19:09.254z | ISO 8601 / RFC 3339 |
$ {__from:日期:秒} |
1594671549 | Unix秒时代 |
$ {__from:日期:YYYY-MM} |
2020 - 07 | 任何自定义日期格式不包括: 字符 |
上面的语法也适用于$ {__to}
。
在url,您可以使用这个变量。例如,您可以发送一个用户仪表板显示时间从6小时前直到现在:https://play.grafana.org/d/000000012/grafana-play-home?viewPanel=2&orgId=1?from=now-6h&to=now
__interval美元
您可以使用__interval美元
由时间变量作为参数组(InfluxDB、MySQL、Postgres,该软件),日期直方图区间(Elasticsearch),或作为一个总结函数参数(石墨)。
Grafana自动计算一个时间间隔,可用于组的查询。当有更多的数据点可以显示在一个图表,然后查询可以更有效的分组由一个更大的时间间隔。更高效的group by 1天比10年代看3个月的数据和图形将看起来一样,查询将会更快。的__interval美元
计算使用时间范围和图的宽度(像素)的数量。
近似计算:(-)/决议
例如,当时间范围是1小时图是全屏,然后间隔可能会计算2米
点被分组在2分钟的间隔。如果时间范围为6个月,图为全屏,然后间隔1 d
(1天)——点分组。
InfluxDB数据源,遗留的变量美元区间
是相同的变量。__interval美元
应该使用。
InfluxDB和Elasticsearch数据源集团由时间间隔
字段用于硬编码区间或设置的最低限制__interval美元
变量(通过使用>
语法- >> 10米
)。
__interval_ms美元
这个变量是__interval美元
格式化字符串变量以毫秒为单位,而不是一个时间间隔。例如,如果__interval美元
是20米
然后__interval_ms美元
是1200000
。
__name美元
该变量只能在Singlestat面板,可用于前缀或后缀字段Options选项卡。变量将被替换为该系列名称或别名。
美元,__org
这个变量是当前组织的ID。$ {__org.name}
是当前组织的名字。
__user美元
仅可在Grafana v7.1 +
$ {__user.id}
是当前用户的ID。$ {__user.login}
是当前用户的登录处理。$ {__user.email}
是当前用户的电子邮件。
__range美元
目前只支持普罗米修斯和洛基数据源。这个变量代表了当前仪表板的范围。它是计算——从
。它有一个叫做毫秒和第二表示__range_ms美元
和__range_s美元
。
__rate_interval美元
目前只支持普罗米修斯的数据源。的__rate_interval美元
变量是用于率函数。指普罗米修斯查询变量获取详细信息。
timeFilter或__timeFilter美元
的timeFilter美元
变量返回当前选择的时间范围是一个表达式。例如,间隔的时间范围最后7天
表达式是>现在()- 7 d
。
这是在几个地方使用,包括:
- WHERE子句的InfluxDB数据源。Grafana将它自动添加到InfluxDB查询在查询编辑器模式。你可以把它添加在文本编辑器中手动模式:
在美元timeFilter
。 - 日志分析查询在Azure监控数据源。
- 在MySQL中SQL查询、Postgres,该软件。
- 的
__timeFilter美元
变量是用于MySQL数据源。
链接变量
链接变量,也叫相关变量或嵌套的变量是查询变量与一个或多个其他变量的变量查询。本节解释如何链接变量工作和提供了链接示例使用链接变量的仪表板。
链接变量查询是不同的对于每一个数据源,但是前提是一样的。您可以使用链接变量在任何数据源,让他们查询。
极其复杂的相关模板化仪表板是可能的,5或10层。从技术上讲,没有限制多深或复杂的你可以去,但是链接越多越大,查询负载。
Grafana玩仪表板的例子
以下Grafana仪表板包含相当简单的链接变量,只有两层深。查看变量及其设置,点击仪表板设置(齿轮图标),然后单击变量。两个例子是扩大在接下来的部分。
例子解释
变量是有用的重用仪表板和动态改变仪表盘所示。链接变量过滤你所看到的特别有用。
在一个变量创建父/子关系,一种树形结构,在那里您可以选择不同级别的过滤器。
以下部分解释了相关例子在上面的仪表板在深度和构建。例子是特定于数据源,可以广泛应用的概念。
石墨的例子
在这个例子中,有几个应用程序。每个应用程序都有一个服务器的不同子集。它是基于石墨模板化嵌套。
现在,您可以为每个度量源分离变量,然后你必须知道哪个应用程序的服务器。一个更好的解决方案是使用一个变量来过滤。在这个例子中,当用户更改的值应用程序
返回的变量,它改变了下拉选项服务器
变量。这两个变量使用多值选项,包括所有选项,使用户能够在任何时候选择部分或全部选项了。
应用程序变量
查询这个变量基本上说,“给我的所有应用程序存在。”
应用。*
返回的值是后端
,国家
,fakesite
,所有
。
服务器变量
查询这个变量基本上说,“给我所有服务器当前选择的应用程序”。
应用。应用美元。*
如果用户选择后端
,然后查询更改:
apps.backend。*
与相关的查询返回所有服务器后端
,包括backend_01
,backend_02
,等等。
如果用户选择fakesite
,然后查询更改:
apps.fakesite。*
与相关的查询返回所有服务器fakesite
,包括web_server_01
,web_server_02
,等等。
更多的变量
注意:这个例子是理论上的。使用石墨服务器示例中不包含CPU指标。
仪表板停在两个级别,但你可以继续。例如,如果您想要选择服务器的CPU指标,你可以复制服务器
变量和扩展查询,这样写着:
应用。应用。server.cpu美元。*
这个查询基本上说,“给我所选服务器的CPU指标。”
取决于用户选择变量选项,你可以查询:
apps.backend.backend_01.cpu。*应用程序s.{backend.backend_02,backend_03}.cpu.* apps.fakesite.web_server_01.cpu.*
InfluxDB例子
在本例中,您有几个数据中心。每个数据中心都有一个主机的不同子集。它是基于InfluxDB模板化。
在这个例子中,当用户更改的值数据中心
返回的变量,它改变了下拉选项主机
变量。的主机
变量使用多值选项,包括所有选项,允许用户选择部分或全部选项了。的数据中心
不使用选项,所以你只能选择一个数据中心。
数据中心变量
查询这个变量基本上说,“给我的所有数据中心存在。”
显示标记值与关键=“数据中心”
返回的值是美国
,非洲
,亚洲
,欧洲
。
主机变量
查询这个变量基本上说,“给我所有主机当前选择的数据中心。”
显示标记值与关键=“主机名”,“数据中心”= ~ / ^数据中心/美元
如果用户选择美国
,然后查询更改:
显示标记值与关键=“主机名”,“数据中心”= ~ /美国/ ^
与相关的查询返回所有服务器美国
,包括server1
,server2
,等等。
如果用户选择欧洲
,然后查询更改:
显示标记值与关键=“主机名”,“数据中心”= ~ /欧洲/ ^
与相关的查询返回所有服务器欧洲
,包括server3
,server4
,等等。
更多的变量
注意:这个例子是理论上的。InfluxDB服务器示例中使用不包含CPU指标。
仪表板停在两个级别,但你可以继续。例如,如果您想要选择主机CPU指标,你可以复制主机
变量和扩展查询,这样写着:
显示标记值与关键=“处理器”,“数据中心”= ~ / ^数据中心/美元和“主机”= ~ ^ /主机/美元
这个查询基本上说,“给我所选主机CPU指标。”
取决于用户选择变量选项,你可以查询:
显示标记值与关键=“处理器”,“数据中心”= ~ /美国/和“主机”= ~ ^ ^ server2 /显示标记值与关键=“处理器”,“数据中心”= ~ /非洲/和“主机”= ~ ^ ^ /服务器/ 7 /显示标记值与关键=“处理器”,“数据中心”= ~ /欧洲/和“主机”= ~ ^ ^ server3 + server4 /
最佳实践和技巧
下面的做法将使您的仪表板和变量更容易使用。
创建新的连接变量
- 链接变量创建父/子的依赖性。你可以想象他们梯子或一棵树。
- 最简单的方法创建一个新的链接变量复制你想要的变量基础新一。在变量列表,单击重复的变量图标右边的变量条目创建一个副本。然后您可以添加到查询父变量。
- 新创建的变量出现在列表的底部。您可能需要将它拖到另一个列表中的位置让它变成一个逻辑顺序。
变量的顺序
你可以改变变量在仪表板中变量的命令列表,点击上下箭头右边的每个条目。Grafana变量下拉列表从左到右根据这个列表,顶部左边的变量。
- 变量列表顶部没有依赖关系,之前孩子变量。
- 每个变量应该遵循一个依赖。
- 记得没有迹象表明在UI中变量的依赖关系。列表中的变量逻辑以方便其他用户(自己)。
复杂性的考虑
在变量层的依赖越多,时间越长,你改变变量后更新仪表板。
例如,如果您有一系列的四个相关变量(国家、区域、服务器、指标)和你改变根变量值(国家),然后Grafana必须运行查询的前因变量更新仪表板的可视化。
管理变量
页面允许您的变量添加变量和管理现有的变量。它还允许您检查变量和确定一个变量是否引用(或使用)在其他变量或仪表板。
移动:你可以向上或向下移动一个变量列表使用拖拽。
克隆:克隆一个变量,单击复制图标右边的图标集。这将创建一个变量的副本和原始变量的名称前缀copy_of_
。
删除:删除一个变量,单击垃圾图标右边的图标集。
过滤变量与正则表达式
使用正则表达式查询选项,你过滤选项列表中返回的变量返回查询或修改选项。
这个页面显示了如何使用正则表达式来过滤/修改变量中的值下拉。
使用正则表达式查询选项,你过滤选项列表中返回的变量返回查询或修改选项。有关更多信息,请参阅Mozilla指南正则表达式。
过滤的例子,下面的列表的选项:
backend_01 backend_02 backend_03 backend_04
过滤,因此只有最后的选项01
或02
返回:
正则表达式:
/(01 | 02)/美元
结果:
backend_01 backend_02
过滤和修改选项使用正则表达式捕捉组返回文本的一部分:
正则表达式:
/ . * (01 | 02)/
结果:
01 02
过滤和修改——普罗米修斯的例子
选项列表:
={实例”demo.robustperception。io: 9090”,工作=“普罗米修斯”}{实例= " demo.robustperception 1 1521630638000。io: 9093”,工作= " alertmanager "}{实例= " demo.robustperception 1 1521630638000。io: 9100”,工作= "节点"}1 1521630638000
正则表达式:
/ . *实例= " ([^ ")*)。* /
结果:
demo.robustperception。io: 9090 demo.robustperception。io: 9093 demo.robustperception.io: 9100
过滤和修改使用命名的文本和价值捕捉组
注意:这个特性可以在Grafana 7.4 +。
使用命名捕捉组,您可以捕获分离的“文本”和“价值”部分选择查询返回的变量。这允许变量下拉列表包含一个友好的名称为每个值,可以选择。
例如,当查询node_hwmon_chip_names
普罗米修斯度量,chip_name
很友好的吗芯片
价值。所以以下变量查询结果:
node_hwmon_chip_names{芯片= 0000:d7:00_0_0000: d8:00_0, chip_name =“enp216s0f0np0”} 1 node_hwmon_chip_names{芯片= 0000:d7:00_0_0000: d8:00_1, chip_name =“enp216s0f0np1”} 1 node_hwmon_chip_names{芯片= 0000:d7:00_0_0000: d8:00_2, chip_name =“enp216s0f0np2”} 1 node_hwmon_chip_names{芯片= 0000:d7:00_0_0000: d8:00_3, chip_name =“enp216s0f0np3”} 1
通过正则表达式如下:
/ chip_name = "(? <文本>[^]+)|芯片= "(? <价值> [^ "]+)/ g
会产生以下下拉列表:
显示名称的价值- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0000年enp216s0f0np0: d7:00_0_0000: d8:00_0 enp216s0f0np1 0000: d7:00_0_0000: d8:00_1 enp216s0f0np2 0000: d7:00_0_0000: d8:00_2 enp216s0f0np3 0000: d7:00_0_0000: d8:00_3
注意:只有文本
和价值
支持捕获组名称。