首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pushgateway - ValueError:标签计数不正确

pushgateway - ValueError:标签计数不正确
EN

Stack Overflow用户
提问于 2021-10-19 07:37:53
回答 1查看 103关注 0票数 1

这是我的以下代码

代码语言:javascript
运行
复制
def pushgateway(ip_addr, hostname, env_name, services, type):
"""Notify prometheus alerts via pushgateway"""
registry = CollectorRegistry()
label_keys=['ip','hostname','env_name']
label_values=[ip_addr, hostname, env_name]
for key, value in services.items():
   label_keys.append(key)
   label_values.append(value)
assert len(label_keys) == len(label_values).  # this is through
g = Gauge(type[0], f'process status for {type[0]}', label_keys)
g.labels(label_values).set(int(type[1]))
push_to_gateway('localhost:9091',job=f"{service}_{env_name}",registry=registry)

在执行的时候,我得到了这个错误,我做错了什么?

代码语言:javascript
运行
复制
File "/home/username/.local/lib/python3.6/site-packages/prometheus_client/metrics.py", line 164, in labels
    raise ValueError('Incorrect label count') ValueError: Incorrect label count

从metrics.py打印这些值-我得到了以下结果:

print(f"{labelvalues} - {self._labelnames}") --> (('a','b','c'),)- ('a','b','c')

len(labelvalues)为1,labelvalues[1]为3,len(self._labelnames)为3。

断言失败:

代码语言:javascript
运行
复制
if len(labelvalues) != len(self._labelnames):
   raise ValueError('Incorrect label count')

如何解决这个问题?我应该以不同的格式传递它吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 12:03:27

您忘记了解开label_values数组。在此行的label_values之前添加*

代码语言:javascript
运行
复制
g.labels(*label_values).set(int(type[1]))

还要注意,您创建的Gauge不会出现在您发送给pushgateway的注册表中。您需要将registry传递给Gauge类实例化:

代码语言:javascript
运行
复制
g = Gauge(type[0], f'process status for {type[0]}', label_keys, registry=registry)

如果不这样做,指标将进入默认注册表:

代码语言:javascript
运行
复制
from prometheus_client import REGISTRY
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69626775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档