Micrometer - Prometheus Gauge displays NaN

后端 未结 4 1140
一个人的身影
一个人的身影 2021-02-20 12:59

I am trying to generate Prometheus metrics with using Micrometer.io with Spring Boot 2.0.0.RELEASE.

When I am trying to expose the size of a List as Gauge, it ke

4条回答
  •  别那么骄傲
    2021-02-20 13:52

    I wasn't able to use @panser solution 'cause I'm using gauges with labels. My solution involved the creation of com.google.common.util.concurrent.AtomicDouble cache with io.micrometer.core.instrument.Tag's key and values as map key, heres goes:

        private static final Map GAUGE_CACHE = new HashMap<>();
    
        public void handleGauge(String name, List tags, double value) {
            String gaugeKey = this.gaugeKey(name, tags);
            if (!GAUGE_CACHE.containsKey(gaugeKey)) {
                GAUGE_CACHE.put(gaugeKey, new AtomicDouble());
            }
            Objects.requireNonNull(this.registry.gauge(name, tags, GAUGE_CACHE.get(gaugeKey))).set(value);
        }
    
        private String gaugeKey(String name, List tags) {
            return name + ":" + tags.stream().map(tag -> tag.getKey() + tag.getValue()).collect(Collectors.joining(""));
        }
    

    That worked pretty well for my needs, hopefully help other people.

提交回复
热议问题