Search in sources :

Example 36 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class GuavaCacheMetricsTest method reportExpectedMetrics.

@Test
void reportExpectedMetrics() {
    MeterRegistry registry = new SimpleMeterRegistry();
    metrics.bindTo(registry);
    verifyCommonCacheMetrics(registry, metrics);
    // common metrics
    Gauge cacheSize = fetch(registry, "cache.size").gauge();
    assertThat(cacheSize.value()).isEqualTo(cache.size());
    FunctionCounter hitCount = fetch(registry, "cache.gets", Tags.of("result", "hit")).functionCounter();
    assertThat(hitCount.count()).isEqualTo(metrics.hitCount());
    FunctionCounter missCount = fetch(registry, "cache.gets", Tags.of("result", "miss")).functionCounter();
    assertThat(missCount.count()).isEqualTo(metrics.missCount().doubleValue());
    FunctionCounter cachePuts = fetch(registry, "cache.puts").functionCounter();
    assertThat(cachePuts.count()).isEqualTo(metrics.putCount());
    FunctionCounter cacheEviction = fetch(registry, "cache.evictions").functionCounter();
    assertThat(cacheEviction.count()).isEqualTo(metrics.evictionCount().doubleValue());
    CacheStats stats = cache.stats();
    TimeGauge loadDuration = fetch(registry, "cache.load.duration").timeGauge();
    assertThat(loadDuration.value()).isEqualTo(stats.totalLoadTime());
    FunctionCounter successfulLoad = fetch(registry, "cache.load", Tags.of("result", "success")).functionCounter();
    assertThat(successfulLoad.count()).isEqualTo(stats.loadSuccessCount());
    FunctionCounter failedLoad = fetch(registry, "cache.load", Tags.of("result", "failure")).functionCounter();
    assertThat(failedLoad.count()).isEqualTo(stats.loadExceptionCount());
}
Also used : SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) CacheStats(com.google.common.cache.CacheStats) TimeGauge(io.micrometer.core.instrument.TimeGauge) FunctionCounter(io.micrometer.core.instrument.FunctionCounter) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Gauge(io.micrometer.core.instrument.Gauge) TimeGauge(io.micrometer.core.instrument.TimeGauge) Test(org.junit.jupiter.api.Test) AbstractCacheMetricsTest(io.micrometer.core.instrument.binder.cache.AbstractCacheMetricsTest)

Example 37 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class HazelcastCacheMetricsTest method reportMetrics.

@Test
void reportMetrics() {
    MeterRegistry meterRegistry = new SimpleMeterRegistry();
    metrics.bindTo(meterRegistry);
    verifyCommonCacheMetrics(meterRegistry, metrics);
    LocalMapStats localMapStats = cache.getLocalMapStats();
    Gauge backupEntries = fetch(meterRegistry, "cache.entries", Tags.of("ownership", "backup")).gauge();
    assertThat(backupEntries.value()).isEqualTo(localMapStats.getBackupEntryCount());
    Gauge ownedEntries = fetch(meterRegistry, "cache.entries", Tags.of("ownership", "owned")).gauge();
    assertThat(ownedEntries.value()).isEqualTo(localMapStats.getOwnedEntryCount());
    Gauge backupEntryMemory = fetch(meterRegistry, "cache.entry.memory", Tags.of("ownership", "backup")).gauge();
    assertThat(backupEntryMemory.value()).isEqualTo(localMapStats.getBackupEntryMemoryCost());
    Gauge ownedEntryMemory = fetch(meterRegistry, "cache.entry.memory", Tags.of("ownership", "owned")).gauge();
    assertThat(ownedEntryMemory.value()).isEqualTo(localMapStats.getOwnedEntryMemoryCost());
    FunctionCounter partitionGets = fetch(meterRegistry, "cache.partition.gets").functionCounter();
    assertThat(partitionGets.count()).isEqualTo(localMapStats.getGetOperationCount());
    // near cache stats
    NearCacheStats nearCacheStats = localMapStats.getNearCacheStats();
    Gauge hitCacheRequests = fetch(meterRegistry, "cache.near.requests", Tags.of("result", "hit")).gauge();
    assertThat(hitCacheRequests.value()).isEqualTo(nearCacheStats.getHits());
    Gauge missCacheRequests = fetch(meterRegistry, "cache.near.requests", Tags.of("result", "miss")).gauge();
    assertThat(missCacheRequests.value()).isEqualTo(nearCacheStats.getMisses());
    Gauge nearPersistance = fetch(meterRegistry, "cache.near.persistences").gauge();
    assertThat(nearPersistance.value()).isEqualTo(nearCacheStats.getPersistenceCount());
    Gauge nearEvictions = fetch(meterRegistry, "cache.near.evictions").gauge();
    assertThat(nearEvictions.value()).isEqualTo(nearCacheStats.getEvictions());
    // timings
    TimeUnit timeUnit = TimeUnit.MILLISECONDS;
    FunctionTimer getsLatency = fetch(meterRegistry, "cache.gets.latency").functionTimer();
    assertThat(getsLatency.count()).isEqualTo(localMapStats.getGetOperationCount());
    assertThat(getsLatency.totalTime(timeUnit)).isEqualTo(localMapStats.getTotalGetLatency());
    FunctionTimer putsLatency = fetch(meterRegistry, "cache.puts.latency").functionTimer();
    assertThat(putsLatency.count()).isEqualTo(localMapStats.getPutOperationCount());
    assertThat(putsLatency.totalTime(timeUnit)).isEqualTo(localMapStats.getTotalPutLatency());
    FunctionTimer removeLatency = fetch(meterRegistry, "cache.removals.latency").functionTimer();
    assertThat(removeLatency.count()).isEqualTo(localMapStats.getRemoveOperationCount());
    assertThat(removeLatency.totalTime(timeUnit)).isEqualTo(localMapStats.getTotalRemoveLatency());
}
Also used : LocalMapStats(com.hazelcast.map.LocalMapStats) NearCacheStats(com.hazelcast.nearcache.NearCacheStats) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) TimeUnit(java.util.concurrent.TimeUnit) FunctionTimer(io.micrometer.core.instrument.FunctionTimer) FunctionCounter(io.micrometer.core.instrument.FunctionCounter) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Gauge(io.micrometer.core.instrument.Gauge) Test(org.junit.jupiter.api.Test) AbstractCacheMetricsTest(io.micrometer.core.instrument.binder.cache.AbstractCacheMetricsTest)

Example 38 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class HumioMeterRegistryTest method writeGaugeShouldDropNanValue.

@Test
void writeGaugeShouldDropNanValue() {
    meterRegistry.gauge("my.gauge", Double.NaN);
    Gauge gauge = meterRegistry.find("my.gauge").gauge();
    assertThat(createBatch().writeGauge(gauge)).isNull();
}
Also used : Gauge(io.micrometer.core.instrument.Gauge) TimeGauge(io.micrometer.core.instrument.TimeGauge) Test(org.junit.jupiter.api.Test)

Example 39 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class SimpleMeterRegistryTest method stringRepresentationOfMetersShouldBeOk.

@Test
void stringRepresentationOfMetersShouldBeOk() {
    MockClock clock = new MockClock();
    SimpleMeterRegistry registry = new SimpleMeterRegistry(SimpleConfig.DEFAULT, clock);
    AtomicInteger temperature = new AtomicInteger(24);
    Gauge.builder("temperature", () -> temperature).baseUnit("celsius").register(registry);
    Counter correctAnswers = Counter.builder("answers").tag("correct", "true").register(registry);
    correctAnswers.increment();
    correctAnswers.increment();
    Counter incorrectAnswers = Counter.builder("answers").tag("correct", "false").register(registry);
    incorrectAnswers.increment();
    Timer latency = Timer.builder("latency").tag("service", "test").tag("method", "GET").tag("uri", "/api/people").register(registry);
    DistributionSummary requestSize = DistributionSummary.builder("request.size").baseUnit("bytes").register(registry);
    for (int i = 0; i < 10; i++) {
        latency.record(Duration.ofMillis(20 + i * 2));
        requestSize.record(100 + i * 10);
    }
    LongTaskTimer handler = LongTaskTimer.builder("handler").register(registry);
    LongTaskTimer.Sample sample = handler.start();
    clock.add(Duration.ofSeconds(3));
    AtomicLong processingTime = new AtomicLong(300);
    TimeGauge.builder("processing.time", () -> processingTime, MILLISECONDS).register(registry);
    AtomicInteger cacheMisses = new AtomicInteger(42);
    FunctionCounter.builder("cache.miss", cacheMisses, AtomicInteger::doubleValue).register(registry);
    AtomicLong cacheLatency = new AtomicLong(100);
    FunctionTimer.builder("cache.latency", cacheLatency, obj -> 5, AtomicLong::doubleValue, MILLISECONDS).register(registry);
    Meter.builder("custom.meter", Meter.Type.OTHER, Arrays.asList(new Measurement(() -> 42d, Statistic.VALUE), new Measurement(() -> 21d, Statistic.UNKNOWN))).register(registry);
    assertThat(registry.getMetersAsString()).isEqualTo("answers(COUNTER)[correct='true']; count=2.0\n" + "answers(COUNTER)[correct='false']; count=1.0\n" + "cache.latency(TIMER)[]; count=5.0, total_time=0.1 seconds\n" + "cache.miss(COUNTER)[]; count=42.0\n" + "custom.meter(OTHER)[]; value=42.0, unknown=21.0\n" + "handler(LONG_TASK_TIMER)[]; active_tasks=1.0, duration=3.0 seconds\n" + "latency(TIMER)[method='GET', service='test', uri='/api/people']; count=10.0, total_time=0.29 seconds, max=0.038 seconds\n" + "processing.time(GAUGE)[]; value=0.3 seconds\n" + "request.size(DISTRIBUTION_SUMMARY)[]; count=10.0, total=1450.0 bytes, max=190.0 bytes\n" + "temperature(GAUGE)[]; value=24.0 celsius");
    sample.stop();
}
Also used : DistributionSummary(io.micrometer.core.instrument.DistributionSummary) Statistic(io.micrometer.core.instrument.Statistic) StepFunctionCounter(io.micrometer.core.instrument.step.StepFunctionCounter) LongTaskTimer(io.micrometer.core.instrument.LongTaskTimer) Arrays(java.util.Arrays) Issue(io.micrometer.core.Issue) MockClock(io.micrometer.core.instrument.MockClock) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) TimeGauge(io.micrometer.core.instrument.TimeGauge) CumulativeFunctionCounter(io.micrometer.core.instrument.cumulative.CumulativeFunctionCounter) Timer(io.micrometer.core.instrument.Timer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Duration(java.time.Duration) Counter(io.micrometer.core.instrument.Counter) Tags(io.micrometer.core.instrument.Tags) Gauge(io.micrometer.core.instrument.Gauge) Meter(io.micrometer.core.instrument.Meter) StepFunctionTimer(io.micrometer.core.instrument.step.StepFunctionTimer) MILLISECONDS(java.util.concurrent.TimeUnit.MILLISECONDS) FunctionTimer(io.micrometer.core.instrument.FunctionTimer) Measurement(io.micrometer.core.instrument.Measurement) Test(org.junit.jupiter.api.Test) TimeUnit(java.util.concurrent.TimeUnit) AtomicLong(java.util.concurrent.atomic.AtomicLong) DistributionSummary(io.micrometer.core.instrument.DistributionSummary) CumulativeFunctionTimer(io.micrometer.core.instrument.cumulative.CumulativeFunctionTimer) FunctionCounter(io.micrometer.core.instrument.FunctionCounter) Measurement(io.micrometer.core.instrument.Measurement) AtomicLong(java.util.concurrent.atomic.AtomicLong) StepFunctionCounter(io.micrometer.core.instrument.step.StepFunctionCounter) CumulativeFunctionCounter(io.micrometer.core.instrument.cumulative.CumulativeFunctionCounter) Counter(io.micrometer.core.instrument.Counter) FunctionCounter(io.micrometer.core.instrument.FunctionCounter) LongTaskTimer(io.micrometer.core.instrument.LongTaskTimer) Timer(io.micrometer.core.instrument.Timer) StepFunctionTimer(io.micrometer.core.instrument.step.StepFunctionTimer) FunctionTimer(io.micrometer.core.instrument.FunctionTimer) CumulativeFunctionTimer(io.micrometer.core.instrument.cumulative.CumulativeFunctionTimer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) LongTaskTimer(io.micrometer.core.instrument.LongTaskTimer) MockClock(io.micrometer.core.instrument.MockClock) Test(org.junit.jupiter.api.Test)

Example 40 with Gauge

use of io.micrometer.core.instrument.Gauge in project micrometer by micrometer-metrics.

the class JvmMemoryMetricsTest method assertJvmBufferMetrics.

private void assertJvmBufferMetrics(MeterRegistry registry, String bufferId) {
    assertThat(registry.get("jvm.buffer.count").tags("id", bufferId).gauge().value()).isGreaterThanOrEqualTo(0);
    Gauge memoryUsedDirect = registry.get("jvm.buffer.memory.used").tags("id", bufferId).gauge();
    assertThat(memoryUsedDirect.value()).isNotNull();
    assertThat(memoryUsedDirect.getId().getBaseUnit()).isEqualTo(BaseUnits.BYTES);
    Gauge bufferTotal = registry.get("jvm.buffer.total.capacity").tags("id", bufferId).gauge();
    assertThat(bufferTotal.value()).isGreaterThanOrEqualTo(0);
    assertThat(bufferTotal.getId().getBaseUnit()).isEqualTo(BaseUnits.BYTES);
}
Also used : Gauge(io.micrometer.core.instrument.Gauge)

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