在普罗米修斯中将计数器值初始化为0
Posted
技术标签:
【中文标题】在普罗米修斯中将计数器值初始化为0【英文标题】:initialize counter value to 0 in prometheus 【发布时间】:2021-12-21 17:42:08 【问题描述】:我使用的是简单的客户端 Prometheus 0.6.0 版
我有一组这样定义的计数器
private static final Counter CD_PRODUCT_SUCCESS_CREATED = new Counter.Builder()
.name("cd_Product_success_created")
.help("product success created.")
.labelNames("podname")
.create()
.register(CollectorRegistry.defaultRegistry);
....
public List<MetricFamilySamples> collect()
List<MetricFamilySamples> samples = new ArrayList<>();
samples.addAll(CD_PRODUCT_SUCCESS_CREATED.collect());
....
return samples;
public void addCdProductSuccessCreated()
CD_PRODUCT_SUCCESS_CREATED.labels(podName).inc();
我将这个类注入到我需要它的地方,然后调用诸如 addCdProductSuccessCreated() 之类的方法,但是对于没有值的指标,当我抓取它们时它们看起来是空的:
# HELP cd_Product_success_created
# TYPE cd_Product_success_created counter
我的问题是如何使用值 0 初始化计数器,以便即使未调用 inc 方法也能显示出来
【问题讨论】:
见Existential issues with metrics。您应该能够通过像inc
'ing 或set
'ting 度量值但 排除inc
或set
一样继续进行初始化为零
检查了你发布的文章我不能完全得到答案我应该添加一个静态块 static counter.labels("podname"); ... 像这样?
我不是 Java 开发人员。该示例似乎与您正在执行的操作相匹配,并且应该为您提供一个归零的counter
,以便该指标出现在导出器中,您可以将其包含在 PromQL 中。你试过了吗?
【参考方案1】:
找到答案我确实添加了这样的块
static CD_PRODUCT_SUCCESS_CREATED .labels("podname"); ...
对于所有指标,现在我可以看到指标的 0.0 值
【讨论】:
以上是关于在普罗米修斯中将计数器值初始化为0的主要内容,如果未能解决你的问题,请参考以下文章