模板允许更多的互动和动态的仪表板。可以将变量用在度量查询中,不必硬编码诸如服务器、应用程序和传感器名称之类的东西。变量显示在仪表板顶部的下拉式选择框中。这些下拉菜单可以很容易地改变在你的仪表板显示的数据。如下
What is a variable?(什么是变量)
变量是值的占位符。可以在metric查询和panel title中使用变量。因此,当您更改值时,使用仪表板顶部的下拉菜单,面板的metric查询将更改为反映新值。
Interpolation(插入;篡改;添写写法)
Panel titles 和 metric queries可以参考使用了两种不同的语法变量:
$<varname> Example: apps.frontend.$server.requests.count
[[varname]] Example: apps.frontend.[[server]].requests.count
为什么有两种方法?第一种语法更易于阅读和书写,但不允许您在词的中间使用变量。在表达式中使用第二语法my.server[[serverNumber]].count。
在将查询发送到您的数据源之前,查询将被内插,这意味着变量将被替换为当前值。在插值过程中,变量值可能会被转义以符合查询语言的语法以及它的位置
Variable options(变量的选择)
在dashboard的顶部,变量可作为下拉选择框。它有现有的值和设定的选项。选项是您可以从中选择的值集。
Adding a variable(添加变量)
你添加的变量通过Dashboard菜单()>Templating。这将打开一个变量列表和一个创建新变量的新按钮。
Basic variable options(基本的变量选项)
variable
Name:变量的名称,这是您在Metric查询中引用变量时使用的名称。必须是唯一的,不包含空白。
Type:定义变量类型
Query:这个变量类型允许您编写一个数据源查询,该查询通常返回一个 metric names, tag values or keys。例如,返回erver names, sensor ids or data centers列表的查询。
interval:interval值。这个变量可以代表时间跨度。不要按时间或日期直方图间隔硬编码一个组,使用这种类型的变量。
Datasource:此类型允许您快速更改整个仪表板的数据源。如果在不同环境中有多个数据源实例,则非常有用。
Custom:使用逗号分隔列表手动定义变量选项。
Constant:定义一个隐藏常数。有用的metric路径前缀的dashboards,你想分享。在dashboard export,期间,常量变量将作为一个重要的选项。
Ad hoc filters:非常特殊类型的变量,只对某些数据源,InfluxDB及Elasticsearch目前。它允许您添加将自动添加到使用指定数据源的所有metric查询的key/value 过滤器
Label:此变量的下拉列表的名称。
Hide:隐藏下拉框的选项。
Lable:隐藏变量名称,但下拉框显示
variable:隐藏整个变量,不显示在顶部下拉框。
Query options
这种变量类型是最强大和复杂的,因为它可以使用数据源查询动态地获取其选项。
Data source:查询的数据源对象。数据库名
Refresh:控制何时更新变量选项列表(下拉列表中的值)。
On Dashboard Load:会使整个dashboard加载变慢,需要使变量查询完成,dashboard才初始化。
On Time Range Change:如果变量选项查询包含time range筛选器或依赖于dashboard time range,则仅将其设置为实时范围更改。
Query:数据源的查询表达式。
Regex:Regex to filter or capture specific parts of the names return by your data source query. Optional.
Sort:定义下拉列表中选项的排序顺序。
Disabled:禁用意味着数据源查询返回的选项顺序将被使用。
Query expressions
每个数据源的查询表达式是不同的。
在metric 查询中,不必硬编码诸如server, application and sensor name 之类的东西,而是可以在它们的位置使用变量。
变量显示在dashboard顶部的下拉式选择框中。这些下拉菜单就可以很容易地改变在你的仪表板显示的数据。
需要注意的一点是,查询表达式可以包含对其他变量的引用,实际上创建链接变量。当它的一个含有变量的变化,Grafana将检测到并自动刷新一个变量时,
Selection Options
multi-value:如果启用,该变量将支持同时选择多个选项。
include All option:添加一个特殊的所有选项的值包括所有选项。ALL
Custon all value:By default the All
value will include all options in combined expression. This can become very long and can have performance problems. Many times it can be better to specify a custom all value, like a wildcard regex. To make it possible to have custom regex, globs or lucene syntax in the Custom all value option it is never escaped so you will have to think avbout what is a valid value for your data source.
Value groups/tags
Tags query:返回数据源查询中tags的列表
Tag values query:应该返回指定tags的值列表的数据源查询。在查询中使用$tag引用当前选中的标记。
Interval variables
使用区间类型创建一个变量,代表一个时间跨度(如1m,1h、1d)。还有一个特殊auto Option选项,将根据当前时间范围的变化。您可以指定多少个时间范围来划分,计算当时auto时间间隔。
这个变量的类型是有用的group by time 参数(用于InfluxDB),日期直方图区间(Elasticsearch)或作为一个汇总函数参数(for Graphite)。
使用模板中的变量myinterval,graphite功能型区间的例子:
summarize($myinterval, sum, false)
Global Built-in Variables(全司内置变量)
Grafana有全局内置变量,可以在查询编辑器中使用。
1、The $__interval Variable
这个$__intervall变量类似于上面描述的auto间隔变量。它可以作为一个参数给group by time(for influxdb)、日期直方图间隔(for Elasticsearch)或作为一个汇总函数参数(for Graphite)进行分组。
Grafana自动计算出一个时间间隔,可以在查询中使用时间。如果有更多的数据点可以在图上显示,那么可以通过更大的区间分组来提高查询的效率。当查看3个月的数据时,按1天组比10s组(group by 1 day than by 10s)更有效率,而且这个图表看起来是一样的,而且查询的速度会更快。$__interval是使用时间范围和图的宽度来计算的(像素的数量)。
近似计算:(from - to) / resolution
例如,当时间范围是1小时,图是全屏时,那么间隔可能被计算为200万-点以2分钟的间隔分组。如果时间范围是6个月,图是全屏,那么间隔可能是1d(1天)-点以天为分组。
在InfluxDB数据源,遗留变量$interval是相同的变量。$__interval可以用来代替。
该InfluxDB和Elasticsearch数据源的Group by time interval fields,使用硬编码的间隔或或者设置$interval变量的最小值(by using the > syntax -> >10m)。
The $__interval_ms Variable
这个是 $__interval的毫秒变量(而不是一个时间间隔的格式化字符串)。例如,
$__interval是20分,那么$__interval_ms是1200000。
2、The $timeFilter or $__timeFilter Variable
$timefilter变量返回当前选择的时间范围为表达。例如,时间范围区间的Last 7 days 表达时间> now() 7D。
这是用在WHERE子句中的InfluxDB数据源。Grafana查询时,查询编辑器模式InfluxDB会自动添加。它必须在文本编辑器模式下手动添加:WHERE $timeFilter。
$timeFilter在MySQL数据源中使用。
3、The $__name Variable
This variable is only available in the Singlestat panel and can be used in the prefix or suffix fields on the Options tab. The variable will be replaced with the series name or alias.
4、$col
别名字段中使用$col,只显示您分组的标记中feild()里的名
5、$tag_字段名
别名字段中使用$tag_字段名,只显示您分组的标记中标签字段
Repeating Panels(重复panels)
模板变量可以非常有用地在整个dashboard上动态地更改查询。如果你想让Grafana动态创建新的panels或 rows基于您选择您可以使用重复的特征值。
如果你的变量选择 Multi-value或Include all value 选项,你可以选择一个pane或一个row作为可以为Grafana这个row重复行每一个选定的值。在面板edit模式下的“gengeral”选项卡下找到此选项。选择要重复的变量和最小跨度(min span)。最小跨度将Grafana控制面板最小宽度(如果你有很多选择的值)。Grafana会自动调整各重复面板的宽度使整个row排满。当前,不能将其他行的面板与重复面板混合。
只对第一个面板(原始模板)进行更改。要使更改生效,您需要触发动态仪表板重新构建的所有面板。您可以通过更改变量值(那个是重复的基本)来完成这项工作,也可以重新加载仪表板。
Repeating Rows
此选项要求您打开 Row Options。在左侧行悬停以触发行菜单,在这个菜单中单击Row Options。这将打开Row Options视图。在这里,您可以找到一个重复的下拉列表,在这里您可以选择要重复的变量。
URL state
Variable values are always synced to the URL using the syntax var-<varname>=value
.