use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.
the class GaugeTest method numericGauge.
@Test
@DisplayName("gauges attached to a number are updated when their values are observed")
default void numericGauge(MeterRegistry registry) {
AtomicInteger n = registry.gauge("my.gauge", new AtomicInteger(0));
n.set(1);
Gauge g = registry.get("my.gauge").gauge();
assertThat(g.value()).isEqualTo(1);
n.set(2);
assertThat(g.value()).isEqualTo(2);
}
use of io.micrometer.core.instrument.Gauge in project vertx-micrometer-metrics by vert-x3.
the class Gauges method get.
public T get(String... values) {
T t = tSupplier.get();
Gauge g = Gauge.builder(name, t, dGetter).description(description).tags(Labels.toTags(keys, values)).register(registry);
return gauges.computeIfAbsent(g.getId(), v -> t);
}
use of io.micrometer.core.instrument.Gauge in project vertx-micrometer-metrics by vert-x3.
the class Gauges method get.
public synchronized T get(Iterable<Tag> customTags, String... values) {
List<Tag> tags = customTags != null ? Stream.concat(Labels.toTags(keys, values).stream(), StreamSupport.stream(customTags.spliterator(), false)).collect(Collectors.toList()) : Labels.toTags(keys, values);
// This method is synchronized to make sure the "T" built via supplier will match the one passed to Gauge
// since it is stored as WeakReference in Micrometer DefaultGauge, it must not be lost.
T t = tSupplier.get();
// Register this gauge if necessary
// Note: we need here to go through the process of Gauge creation, even if it already exists,
// in order to get the Gauge ID. This ID generation is not trivial since it may involves attached MetricFilters.
// Micrometer will not register the gauge twice if it was already created.
Gauge g = Gauge.builder(name, t, dGetter).description(description).tags(tags).register(registry);
return gauges.computeIfAbsent(g.getId(), v -> t);
}
use of io.micrometer.core.instrument.Gauge in project vertx-micrometer-metrics by vert-x3.
the class GaugesTest method shouldAddCustomTags.
@Test
public void shouldAddCustomTags() {
List<Tag> customTags = Arrays.asList(Tag.of("k1", "v1"), Tag.of("k2", "v2"));
MeterRegistry registry = new SimpleMeterRegistry();
Gauges<LongAdder> gauges = new Gauges<>("my_gauge", "", LongAdder::new, LongAdder::doubleValue, registry, Label.EB_ADDRESS);
gauges.get(customTags, "addr1").increment();
Gauge g = registry.find("my_gauge").tags("address", "addr1", "k1", "v1", "k2", "v2").gauge();
assertThat(g.value()).isEqualTo(1d);
}
use of io.micrometer.core.instrument.Gauge in project vertx-micrometer-metrics by vert-x3.
the class GaugesTest method shouldIgnoreGaugeLabel.
@Test
public void shouldIgnoreGaugeLabel() {
MeterRegistry registry = new SimpleMeterRegistry();
BackendRegistries.registerMatchers(registry, ALL_LABELS, Collections.singletonList(new Match().setLabel("address").setType(MatchType.REGEX).setValue(".*").setAlias("_")));
Gauges<LongAdder> gauges = new Gauges<>("my_gauge", "", LongAdder::new, LongAdder::doubleValue, registry, Label.EB_ADDRESS);
gauges.get("addr1").increment();
gauges.get("addr1").increment();
gauges.get("addr2").increment();
Gauge g = registry.find("my_gauge").tags("address", "_").gauge();
assertThat(g.value()).isEqualTo(3d);
g = registry.find("my_gauge").tags("address", "addr1").gauge();
assertThat(g).isNull();
g = registry.find("my_gauge").tags("address", "addr2").gauge();
assertThat(g).isNull();
}
Aggregations