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

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

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

我想查询 prometheus 使用

function{topic=$topic}

而且效果很好。

我将如何实现

function{topic="$topic" + "_ERROR"}

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

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

【问题讨论】:

    标签: prometheus grafana


    【解决方案1】:

    2020 年 8 月 17 日更新:

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

    function{topic=~"${topic}_ERROR"}
    

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

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

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


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

    function{topic=~"[[topic]]_ERROR"}
    

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

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

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

    【讨论】:

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

    在较新的 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"}

    【讨论】:

      【解决方案3】:

      过去遇到过这样的问题。

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

      在 Grafana 变量中,例如:

      host label_values(asterisk_active_calls, host)

      在仪表板中: CPU 忙

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-13
        • 2016-07-14
        • 2013-01-09
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        相关资源
        最近更新 更多