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

Posted

技术标签:

【中文标题】将字符串附加到grafana查询中的变量?【英文标题】:append string to variable in a grafana query? 【发布时间】:2020-05-04 15:55:34 【问题描述】:

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

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

我想查询 prometheus 使用

functiontopic=$topic

而且效果很好。

我将如何实现

functiontopic="$topic" + "_ERROR"

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

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

【问题讨论】:

【参考方案1】:

2020 年 8 月 17 日更新:

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

functiontopic=~"$topic_ERROR"

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

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

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


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

functiontopic=~"[[topic]]_ERROR"

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

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

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

【讨论】:

谢谢。就是这样。绝对不是最直接的方法(更改语法)。【参考方案2】:

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

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

funcinstance=~"($topic)_ERROR"

它通常用于实例度量

假设实例 [198.10.99.9,198.10.99.10] 如果您的收藏家在 9100 node_memory_MemTotal_bytesinstance=~"($instance):9100" 如果您的收集器在另一个端口上,例如 9111 another_metricinstance=~"($instance):9111"

【讨论】:

【参考方案3】:

过去遇到过这样的问题。

第一个出口商 - 在我的港口上定制一个 9100 上的第二个 node_exporter

在 Grafana 变量中,例如:

host label_values(asterisk_active_calls, host)

在仪表板中: CPU 忙

100 - (avg(irate(node_cpu_seconds_totalinstance=~"$host:9100",mode="idle"[30m])) * 100)

instance=~"$host:9100" - working like a charm

【讨论】:

以上是关于将字符串附加到grafana查询中的变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串附加到R中的变量名子集?

将相同的字符串附加到PowerShell中CSV列中的所有变量

您可以将字符串附加到 PHP 中的变量吗? [复制]

将文本附加到 Twig 中的变量

如何将html代码附加到iphone中的NSString变量

如何将整数迭代附加到python中的字符串中?