菜单
开源

宏函数是根据提供的参数执行操作并产生结果的实用函数。您可以在查询 URL、Body、Inline data、UQL、GROQ 字段中使用宏函数。

此插件提供以下宏

自定义间隔宏 ($__customInterval())

自定义间隔宏根据仪表盘时间范围生成值。您可以为此宏传递多个条件和值。这类似于编程语言中的 If else 条件。

$__customInterval 宏的参数数量必须为 3/5/7/9..。

语法$__customInterval(duration1,value1,duration2,value2,duration3,value3,duration4,value4,defaultValue)。Duration 必须是有效的 duration 语法,如 1m, 2d 等。

说明:如果 dashboardTimeRange <= duration1 则返回 value1,否则如果 dashboardTimeRange <= duration2 则返回 value2,否则如果 dashboardTimeRange <= duration3 则返回 value3,否则如果 dashboardTimeRange <= duration4 则返回 value4,否则返回 default value。

示例$__customInterval(5m,foo,1d,bar,10d,baz,fuzz)。如果仪表盘时间范围是最近 3 小时,则结果将是 bar

更多示例如下

仪表盘范围查询输出
24 小时$__customInterval(1m,1 MIN,1d)1d
24 小时$__customInterval(2d,2 DAYS,1d)2 DAYS
24 小时$__customInterval(5m,5 MINUTES,1d,1 DAY,10d,10 days,1d)1 DAY
7 天$__customInterval(5m,5 MINUTES,1d,1 DAY,10d,10 days,1d)10 天
30 天$__customInterval(5m,5 MINUTES,1d,1 DAY,10d,10 days,1d)1d
30 天http.://foo.com?d=$__customInterval(5m,5 MINUTES,1d,1 DAY,10d,10 days,1d)&type=testhttp.://foo.com?d=1d&type=test

组合值宏 ($__combineValues())

组合值宏允许您将多个字符串与前缀、后缀和中间值组合。此宏的第一个参数是前缀,第二个参数是后缀,第三个参数是中间值。

此宏所需的最小参数数量为 4。此宏的参数数量必须为 4/5/6/7…。

对于前缀、后缀和中间值,您还可以使用以下特殊转义词。__comma –> , / __space –> 一个空格 ( ) / __open –> ( / __close –> )

语法$__combineValues(prefix,suffix,in-between-value,value1,value2,value3)

说明:在上面的示例中,所有的 value1、value2、value3 都将分别附加前缀和后缀。然后所有内容将通过中间值连接。

示例$__combineValues(key=,__space, OR ,value1,value2,value3) 将生成 key=value1 OR key=value2 OR key=value3。注意:在此示例中,我们使用了特殊的转义后缀 __space

此宏有一个特殊之处,即当有四个参数且第四个参数为 * 时,它返回空字符串。

更多示例如下

查询输出
$__combineValues(p,s,i,v)pvs
$__combineValues(p,s,__space,v1,v2)pv1s pv2s
$__combineValues(__open,__close, OR ,foo,bar)(foo) OR (bar)
$__combineValues(,, OR ,foo,bar)foo OR bar
hello $__combineValues(,, OR ,foo,bar) $__combineValues(,, OR ,foo,bar) worldhello foo OR bar foo OR bar world
$__combineValues(p,s,i,*)空字符串

此宏与多值仪表盘变量结合使用时会更有用。考虑以下示例。

变量名:server

多值:true

自定义所有值:true 且值为 *

选定值查询输出
server2,server3,server5${server:csv}server2,server3,server5
server2,server3,server5$__combineValues(foo:,, OR ,${server:csv})foo:server2 OR foo:server3 OR foo:server5
server2$__combineValues(foo:,, OR ,${server:csv})foo:server2
全部$__combineValues(foo:,, OR ,${server:csv})空字符串
server2,server3,server5($__combineValues(foo:,, OR ,${server:csv}))(foo:server2 OR foo:server3 OR foo:server5)
全部($__combineValues(foo:,, OR ,${server:csv}))()
server2,server3,server5$__combineValues(foo:,,__comma,${server:csv})foo:server2,foo:server3,foo:server5

时间宏 (${__timeFrom}${__timeTo})

从 v2.7.1 开始,您可以使用时间宏 ${__timeFrom}${__timeTo},它们将在后端进行插值。例如,如果您的仪表盘开始时间是 2020-07-13T20:19:09.254Z,则宏将按如下方式进行插值。

输出
${__timeFrom}1594671549254
${__timeFrom:date:seconds}1594671549
${__timeFrom:date}2020-07-13T20:19:09.254Z
${__timeFrom:date:iso}2020-07-13T20:19:09.254Z
${__timeFrom:date:YYYY:MM:DD:hh:mm}2020:07:13:08:19
${__timeFrom:date:YYYY-MM-DD}2020-07-13

在 infinity 2.7.1+ 中,由于前端处理 grafana 全局宏(${__from}${__to})的限制,这是比 grafana 全局变量时间宏更优选的时间宏。