Prometheus 更换 labels tag 后,Grafana 出现 Multiple Series Error 错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus 更换 labels tag 后,Grafana 出现 Multiple Series Error 错误相关的知识,希望对你有一定的参考价值。

参考技术A Grafana 使用 Prometheus 做数据源时,当在 Prometheus 中把 Labels 从 instance="10.1.0.176" service="prod" 更换为 instance="10.1.0.176" service="Linux" 后,

原因是 Grafana Singlestat 只支持 1 个输出值,而 node_memory_MemTotal_bytesinstance=~"$node" 查询会同时取到
node_memory_MemTotal_bytesinstance=~"$node",job="Linux Host",service="Linux" 和 node_memory_MemTotal_bytesinstance=~"$node",job="Linux Host",service="prod" 的值,所以会出现错误

解决办法:
指定只获取 node_memory_MemTotal_bytesinstance=~"$node",job="Linux Host",service="Linux" 的值,就正常了

Grafana 模板:Prometheus label_values 变量的正则表达式

【中文标题】Grafana 模板:Prometheus label_values 变量的正则表达式【英文标题】:Grafana templating: Regex for Prometheus label_values variables 【发布时间】:2019-12-07 13:22:40 【问题描述】:

我正在尝试使用 label_values 函数在 Grafana 中设置模板。 该文档指定了查询 label_values 的可能性,例如:

label_values(metric, label)

在我的用例中,有两个主要的指标组,其名称类似于:

app1_current_sensor1 app1_current_sensor2 app2_current_sensor2 app2_current_sensor3

它们每个都有一个名为 'uid' 的标签。 我希望使用上述查询在一个仪表板上仅过滤“app1”的用户 ID,在另一个仪表板上过滤“app2”的用户 ID。

我试过了

label_values(app1_current_sensor1, uid)

但如果由于某种原因传感器 1 有一段时间没有发送数据,即使传感器 2 正在发送数据,我也不会在仪表板上看到更多用户 ID。

是否可以使用正则表达式作为度量变量的输入? 像这样的东西对我有用:

label_values(metric=~(app1_[^\s]+), uid)

但我不确定这在 Grafana 中是否可行。

【问题讨论】:

【参考方案1】:

以下表达式选择名称以 job_ 开头且标签为 method="GET" 的所有指标

__name__=~"job_.*", method="GET"

要获取名称以app1_ 开头的所有指标,请使用

__name__=~"app1_.*"

要获取名称以app1_uid 开头的所有指标等于某个特定值,请使用

 __name__=~"app1_.*", uid="value"

【讨论】:

太棒了! _name_ 正是我要找的 :) 谢谢 使用 label_values 如下:label_values(__name__=~"app1_.*", uid) 我还建议查看robustperception.io/extracting-labels-from-legacy-metric-names 嗨,这里的name 是什么?它是预定义的关键字吗? 是的,__name__ 是 Prometheus 的内部标签:prometheus.io/docs/prometheus/latest/querying/basics

以上是关于Prometheus 更换 labels tag 后,Grafana 出现 Multiple Series Error 错误的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus+Grafana 配置

PromQL/prometheus 查询 label_replace() 多个

Prometheus 基于 Labels 的过滤

Prometheus监控指标的label注入方法

如果我们不在 Prometheus 中为灭霸解释任何 external_labels 怎么办

如何在 grafana 变量中为 prometheus 数据源提供带有时间范围的 label_values?