Search in sources :

Example 26 with Gauge

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);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Gauge(io.micrometer.core.instrument.Gauge) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 27 with Gauge

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);
}
Also used : Gauge(io.micrometer.core.instrument.Gauge)

Example 28 with Gauge

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);
}
Also used : Tag(io.micrometer.core.instrument.Tag) Gauge(io.micrometer.core.instrument.Gauge)

Example 29 with Gauge

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);
}
Also used : LongAdder(java.util.concurrent.atomic.LongAdder) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) Tag(io.micrometer.core.instrument.Tag) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Gauge(io.micrometer.core.instrument.Gauge) Test(org.junit.Test)

Example 30 with Gauge

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();
}
Also used : LongAdder(java.util.concurrent.atomic.LongAdder) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Match(io.vertx.micrometer.Match) Gauge(io.micrometer.core.instrument.Gauge) Test(org.junit.Test)

Aggregations

Gauge (io.micrometer.core.instrument.Gauge)43 Test (org.junit.jupiter.api.Test)27 TimeGauge (io.micrometer.core.instrument.TimeGauge)16 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)10 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)9 FunctionCounter (io.micrometer.core.instrument.FunctionCounter)7 Meter (io.micrometer.core.instrument.Meter)7 DistributionSummary (io.micrometer.core.instrument.DistributionSummary)6 FunctionTimer (io.micrometer.core.instrument.FunctionTimer)6 Timer (io.micrometer.core.instrument.Timer)6 Counter (io.micrometer.core.instrument.Counter)5 LongTaskTimer (io.micrometer.core.instrument.LongTaskTimer)5 TimeUnit (java.util.concurrent.TimeUnit)5 Test (org.junit.Test)5 Issue (io.micrometer.core.Issue)4 Measurement (io.micrometer.core.instrument.Measurement)4 MockClock (io.micrometer.core.instrument.MockClock)4 AbstractCacheMetricsTest (io.micrometer.core.instrument.binder.cache.AbstractCacheMetricsTest)4 Statistic (io.micrometer.core.instrument.Statistic)3 Arrays (java.util.Arrays)3