Microsoft SQL Server 模板变量
您可以使用变量,而无需在指标查询中硬编码服务器、应用程序和传感器名称等详细信息。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助您更改仪表盘中显示的数据。Grafana 将这些变量称为模板变量。
有关模板化和模板变量的介绍,请参阅模板化和添加和管理变量文档。
查询变量
如果您添加类型为 Query
的模板变量,您可以编写 MS SQL 查询,返回诸如测量名称、键名称或键值等内容,这些内容将显示为下拉选择框。
例如,如果您在模板变量的查询设置中指定如下查询,则可以拥有一个包含表中 hostname
列所有值的变量。
SELECT hostname FROM host
一个查询可以返回多列,Grafana 会自动根据它们创建一个列表。例如,以下查询将返回一个包含 hostname
和 hostname2
值的列表。
SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]
另一种选择是创建键/值变量的查询。查询应返回名为 __text
和 __value
的两列。__text
列的值应唯一(如果不唯一,则使用第一个值)。下拉菜单中的选项将包含文本和值,允许您使用友好名称作为文本,并使用 ID 作为值。以下是一个以 hostname
作为文本、以 id
作为值的查询示例:
SELECT hostname __text, id __value FROM host
您还可以创建嵌套变量。例如,如果您有另一个名为 region
的变量。那么您可以使用如下查询让 hosts 变量只显示当前选定区域的主机(如果 region
是一个多值变量,则使用 IN
比较运算符而不是 =
来匹配多个值):
SELECT hostname FROM host WHERE region IN ($region)
在查询中使用变量
模板变量的值仅在模板变量为多值时才带引号。
如果变量是多值变量,则使用 IN
比较运算符而不是 =
来匹配多个值。
有两种语法:
$<varname>
示例:使用名为 hostname
的模板变量
SELECT
atimestamp time,
aint value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp
[[varname]]
示例:使用名为 hostname
的模板变量
SELECT
atimestamp as time,
aint as value
FROM table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp
禁用多值变量的引用
Grafana 会自动为多值变量创建一个带引号的、逗号分隔的字符串。例如:如果选择了 server01
和 server02
,则会格式化为:'server01', 'server02'
。要禁用引号,请对变量使用 csv 格式选项:
${servers:csv}
在变量文档中阅读有关变量格式选项的更多信息。