繁体   English   中英

多值 Prometheus 查询 Grafana

[英]Multi-Value Prometheus Query Grafana

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

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

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

试试这样:

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

多值格式化文档中,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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM