将字符串附加到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查询中的变量?的主要内容,如果未能解决你的问题,请参考以下文章
将相同的字符串附加到PowerShell中CSV列中的所有变量