【问题标题】:Multi-Value Prometheus Query Grafana多值 Prometheus 查询 Grafana
【发布时间】:2020-08-03 00:34:50
【问题描述】:

我正在使用 Grafana 和 Prometheus 查询在 Grafana 中为 Kubernetes 创建仪表板。我将节点的名称(在本例中为 3 个)放入一个变量中,然后将此值传递给其他查询以提取机器的 IP。提取的值是正确的。我启用了多值选项。

问题在于查询sum(rate(container_cpu_usage_seconds_total{id="/", instance=~"$ip_test:10250"}[1m])) 和多个IP,因为它只占用其中一个。在其他查询中它可以工作,但我认为这是可能的,因为其他查询在变量之后没有:10250

我的问题,你知道任何连接所有 ip:port 的方法吗?例如:X.X.X.X:pppp|X.X.X.X:pppp

【问题讨论】:

    标签: variables kubernetes prometheus grafana promql


    【解决方案1】:

    试试这样:

    sum(rate(container_cpu_usage_seconds_total{id="/", instance=~"($ip_test):10250"}[1m]))
    

    【讨论】:

      【解决方案2】:

      multiple values formating 文档中,Prometheus 变量扩展为regex

      InfluxDB 和 Prometheus 使用正则表达式,所以同一个变量 将被内插为 (host1|host2|host3)。每个值也会 如果不是正则表达式转义,则带有正则表达式控制字符的值将 打破正则表达式。

      因此,您的变量 ip_test = ['127.0.0.1', '127.0.0.2',...] 应该转换为:(127\.0\.0\.1|127\.0\.0\.2)

      这意味着您的表达式 =~$ip_test:10250 应转换为 =~"(127\.0\.0\.1|127\.0\.0\.2):10250",因此您不需要您要求的多重扩展。

      它不起作用的原因是文档不正确或 Grafana 中存在错误(使用版本 v6.7.2 测试)。我怀疑,根据我的测试,Prometheus 扩展不会使用封闭的 () 进行扩展,您最终会得到表达式 =~"127\.0\.0\.1|127\.0\.0\.2:10250" - 这不是您想要的。

      解决方法是使用正则表达式符号=~"${ip_test:regex}:10250"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-20
        • 2019-10-15
        • 2020-09-04
        • 2020-02-25
        • 1970-01-01
        • 2021-10-12
        • 2020-12-17
        • 1970-01-01
        相关资源
        最近更新 更多