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());
}
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());
}
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();
}
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();
}
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);
}
Aggregations