每当创建新时间序列时,将 prometheus 计数器初始化为 0

Ank*_*nky 5 counter prometheus prometheus-java

我正在研究一个用例,每当推送指标时就会创建新的时间序列。我正在使用计数器来衡量我的指标。我正在使用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;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Joã*_*itt 0

我可以通过 Prometheus 查询来解决这个问题,我需要从零开始计数,但指标是在第一次抓取后用 1 创建的。

increase(sum(last_over_time(my_custom_counter_total[$__range]) or vector(0))[$__range:1m])
Run Code Online (Sandbox Code Playgroud)