在grafana查询中将字符串附加到变量?

wiz*_*dzz 5 grafana prometheus

在 Grafana 中,我有一个变量 $topic 的下拉菜单,其值为“topic_A”“topic_B”

"topic_A" 被选中所以 $topic = "topic_A"

我想使用查询普罗米修斯

function{topic=$topic}
Run Code Online (Sandbox Code Playgroud)

这工作正常。

我将如何实施

function{topic="$topic" + "_ERROR"}
Run Code Online (Sandbox Code Playgroud)

(这失败了)如果选择了“topic_A”,我想要查询的将是“topic_A_ERROR”。

如何在查询中组合变量 $topic 和字符串“_ERROR”?

Alb*_*tin 7

更新 2020-08-17:

Grafana 变量有一个新的语法,新格式是在美元符号后使用花括号:

function{topic=~"${topic}_ERROR"}
Run Code Online (Sandbox Code Playgroud)

双括号语法已弃用,很快将被删除。

现在您还可以定义变量的格式,这可能有助于解决一些空格字符问题。例子:${topic:raw}

文档:https : //grafana.com/docs/grafana/latest/variables/templates-and-variables/


如果要在中间包含文本,则需要使用不同的语法:

function{topic=~"[[topic]]_ERROR"}
Run Code Online (Sandbox Code Playgroud)

不仅要注意双括号,还要注意从==~的变化。它记录在我评论末尾的链接中,基本上它说:

当启用多值或包含所有值选项时,Grafana 会将标签从纯文本转换为与正则表达式兼容的字符串。这意味着您必须使用 =~ 而不是 =。

你可以在这里查看官方解释:https : //grafana.com/docs/grafana/latest/features/datasources/prometheus/#using-variables-in-queries


pri*_*adi 7

在较新的 grafana 中,您应该添加 ${varname} 和 () 正则表达式

[[varname]] 几乎已弃用,这将在 prometheus 中执行多值变量

func{instance=~"(${topic})_ERROR"}

它通常用于实例指标

假设实例 [198.10.99.9,198.10.99.10] 如果您的收集器位于 9100 node_memory_MemTotal_bytes{instance=~"(${instance}):9100"} 如果您的收集器位于另一个端口示例 9111 another_metric{instance=~"(${instance}):9111"}