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 错误的主要内容,如果未能解决你的问题,请参考以下文章
PromQL/prometheus 查询 label_replace() 多个