您必须为创建的任何类型的变量输入常规选项。
(1)导航到要为其创建变量的仪表板,然后单击页面顶部的仪表板设置(齿轮)图标。
(2)在变量 “Variables” 卡上,单击 “New variable” 按钮。
(3)为变量输入名称。
(4)在 “Type” 列表中,选择 “Query”。
(5)(可选)在标签中,输入变量下拉菜单的显示名称。如果不输入显示名称,则下拉标签就是变量名称。
(6)选择 “Hide” 选项:
No selection (blank): 变量下拉菜单显示变量名称或标签值,这是默认值。
Label: 变量下拉菜单只显示所选变量值和一个向下箭头。
Variable: 变量下拉菜单只显示所选变量值和一个向下箭头。
通过查询变量,您可以编写数据源查询,返回一系列度量名称、标记值或键。例如,查询变量可以返回服务器名称、传感器 ID 或数据中心的列表。变量值会随着数据源查询动态获取选项而改变。
查询变量通常只支持字符串。如果查询返回数字或任何其他数据类型,可能需要将其转换为字符串才能用作变量。例如,对于 Azure 数据源,可以使用 tostring 函数来实现这一目的。
查询表达式可以包含对其他变量的引用,这实际上创建了链接变量。Grafana 可以检测到这一点,并在其中一个链接变量发生变化时自动刷新变量。
注意:每个数据源的查询表达式都不同。有关详细信息,请参阅数据源文档。
(1)输入变量的常规选项。
(2)在数据源列表中,选择查询的目标数据源。
(3)在 “Refresh” 列表中,选择变量何时更新选项:
On Dashboard Load: 每次加载仪表盘时都会查询数据源。这会减慢仪表盘加载速度,因为变量查询需要在仪表盘初始化之前完成。
On Time Range Change: 每次加载仪表盘以及仪表盘时间范围发生变化时都会查询数据源。如果变量选项查询包含时间范围过滤器或依赖于仪表盘时间范围,请使用此选项。
(4)在 “Query” 字段中输入查询:
查询字段因数据源而异,有些数据源有自定义查询编辑器。
确保查询根据查询语法返回名为 __text 和 __value 的值。例如,在 SQL 中,可以使用 SELECT hostname AS __text, id AS __value FROM MyTable 这样的查询,其他语言的查询语法会有所不同。
如果在单个输入框查询编辑器中需要更多空间,可将光标悬停在输入框右下角的线条上,向下拖动即可展开。
(5)(可选)在 Regex 字段中,键入正则表达式,以过滤或捕获数据源查询返回的名称的特定部分。要查看示例,请参阅使用 regex 过滤变量。
(6)在 “Sort” 列表中,选择要在下拉列表中显示的值的排序顺序。默认选项 “Disabled” 表示将使用数据源查询返回的选项顺序。
(7)(可选)输入 “Selection Options”。
(8)在 “Preview of values” 中,Grafana 会显示当前变量值的列表,查看它们以确保符合您的预期。
(9)单击 “Apply”按钮将变量添加到仪表板。
上图中,创建了一个名为 title 的查询变量,使用 MySQL 数据源。
自定义变量的值不会改变,如数字或字符串。
例如,如果服务器名称或区域名称不会改变,那么就可以将它们创建为自定义变量,而不是查询变量。因为它们不会改变,所以可以在链式变量中使用它们,而不是其他查询变量。这样可以减少链式变量更新时 Grafana 必须发送的查询次数。
(1)输入变量的常规选项。
(2)在用“Values separated by comma list”中,用逗号分隔的列表输入该变量的值。可以包含数字、字符串或键/值对,以空格和冒号分隔。例如,key1:value1,key2:value2。
(3)(可选)输入 “Selection Options”。
(4)在“Preview of values” 中,Grafana 会显示当前变量值的列表。查看它们以确保符合您的预期。
(5)单击 “Apply”按钮将变量添加到仪表板。
文本框变量显示一个带有可选默认值的自由文本输入框。这是最灵活的变量,因为你可以输入任何值。如果您的指标基数很高,或者您希望同时更新仪表板中的多个面板,请使用这种类型的变量。
有关基数的更多信息,请参阅基数峰值是什么以及它们为什么重要?
(1)输入变量的常规选项。
(2)(可选)在 “Default value” 字段中,选择变量的默认值。如果不在此字段中输入任何内容,Grafana 将显示一个空文本框供用户输入文本。
(3)在“Preview of values” 中,Grafana 会显示当前变量值的列表。查看它们以确保符合您的预期。
(4)单击 “Apply”按钮将变量添加到仪表板。
将变量添加在仪表板上:
常量变量可以定义隐藏常量。这对于要共享的仪表盘的度量路径前缀非常有用。导出仪表盘时,常量变量会转换为导入选项。
常量变量不灵活。每个常量变量只能保存一个值,除非更新变量设置,否则无法更新。
如果需要在查询中包含复杂的值,但又不想在每次查询中都重新输入,那么常量变量就非常有用。例如,如果你有一个名为 i-0b6a61efe2ab843gg 的服务器路径,那么你可以用一个名为 $path_gg 的变量来替换它。
(1)输入变量的常规选项。
(2)在 “Value” 字段中,输入变量值。可以输入字母、数字和符号。如果使用原始格式,还可以使用通配符。
(3)在“Preview of values” 中,Grafana 会显示当前变量值的列表。查看它们以确保符合您的预期。
(4)单击 “Apply”按钮将变量添加到仪表板。
通过数据源变量,可以快速更改整个仪表盘的数据源。如果一个数据源有多个实例,可能在不同的环境中,那么数据源变量就非常有用。
(1)输入变量的常规选项。
(2)在 “Type” 列表中,选择变量的目标数据源。
(3)(可选)在“Instance name filter”中,输入一个正则表达式过滤器,以便在变量值下拉列表中选择数据源实例。将此字段留空可显示所有实例。
(4)(可选)输入 “Selection Options”。
(5)在“Preview of values” 中,Grafana 会显示当前变量值的列表。查看它们以确保符合您的预期。
(6)单击 “Apply”按钮将变量添加到仪表板。
使用时间间隔变量来表示时间跨度,如 1m、1h、1d。可以将它们视为仪表盘范围内的 "按时间分组" 命令。间隔变量可以改变可视化中的数据分组方式。您还可以使用自动选项来返回每个时间跨度的设定数据点数。
您可以使用间隔变量作为参数,按时间(用于 InfluxDB)、日期直方图区间(用于 Elasticsearch)或汇总函数参数(用于 Graphite)进行分组。
(1)输入变量的常规选项。
(2)在 “Values” 字段中,输入您希望出现在变量下拉列表中的时间范围间隔。支持以下时间单位:s(秒)、m(分)、h(小时)、d(天)、w(周)、M(月)和 y(年)。您还可以接受或编辑默认值: 1m,10m,30m,1h,6h,12h,1d,7d,14d,30d。
(3)(可选)如果要在列表中添加自动选项(Auto Option),请打开自动选项。该选项允许您指定当前时间范围应被分割多少次,以计算当前自动时间跨度。如果打开,则会出现另外两个选项:
Step count - 选择当前时间范围的分割次数来计算数值,类似于最大数据点查询选项。例如,如果当前可见时间范围为 30 分钟,则自动间隔将数据分组为 30 个一分钟增量。默认值为 30 步。
Min Interval - 最小阈值,低于该阈值时,步长计数间隔将不会划分时间。继续以 30 分钟为例,如果最小间隔设置为 2 分钟,那么 Grafana 会将数据分组为 15 个两分钟的增量。
(4)在“Preview of values” 中,Grafana 会显示当前变量值的列表。查看它们以确保符合您的预期。
(5)单击 “Apply”按钮将变量添加到仪表板。
下面的示例展示了 Graphite 函数中的模板变量 myinterval:
summarize($myinterval, sum, false)
下面的示例显示了一个更复杂的 Graphite 示例,来自 Graphite 模板嵌套请求面板:
groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5), '$interval', 'sum', false), 2, 'sum')
Ad hoc 过滤器可让您添加键/值筛选器,这些筛选器会自动添加到使用指定数据源的所有度量查询中。与其他变量不同,您不能在查询中使用 Ad hoc 过滤器。相反,您可以使用 Ad hoc 过滤器为现有查询编写过滤器。
注意:Ad hoc 过滤器变量仅适用于 Prometheus、Loki、InfluxDB 和 Elasticsearch 数据源。
(1)输入变量的常规选项。
(2)在“Data source”列表中,选择目标数据源。
(3)单击 “Apply”按钮将变量添加到仪表板。
Ad hoc 过滤器是最复杂、最灵活的变量选项之一。与常规的变量选项列表不同,该变量允许你建立一个仪表盘范围内的特别查询。以这种方式应用的筛选器会应用到仪表板上的所有面板。