我正在研究一个用例,在这个用例中,每当推送度量时,都会创建新的时间序列。我正在使用计数器进行度量。我正在使用sum(increase(metric_name{_namespace_="elvis", Label1=~"d1", Label2=~"d2", Label3=~"d3"}[2m])) by (Label1, Label2, Label3)
,但我的计数器被初始化为1,而不是0,因为当我使用上面的查询时,我无法看到计数器从0跳到1。我在注册时尝试初始化计数器,如下所示,但没有帮助。如有任何帮助,将不胜感激
SimpleCollector counter = metricsMap.get(metricName);
double cntrValue = 0d;
if (counter == null) {
synchronized (metricsMap) {
counter = metricsMap.get(metricName);
if (counter == null) {
counter = Counter.build()
.name(decorateMetricsName(metricName))
.help(decorateMetricsName(metricName) + " counter")
.register();
metricsMap.put(metricName, counter);
cntrValue = ((Counter) counter.labels(getLabelValues(labels))).get();
logger.info( "Manifested Time Series with value");
logger.info( "Registered " + metricName);
} else {
return (Counter)counter;
}
}
}
我可以通过Prometheus查询来解决这个问题,我需要从零开始计数,但度量是在第一次刮取后创建的。
increase(sum(last_over_time(my_custom_counter_total[$__range]) or vector(0))[$__range:1m])