use of io.micrometer.core.instrument.MeterRegistry in project micrometer by micrometer-metrics.
the class LongTaskTimerSample method main.
public static void main(String[] args) {
MeterRegistry registry = SampleConfig.myMonitoringSystem();
LongTaskTimer timer = registry.more().longTaskTimer("longTaskTimer");
RandomEngine r = new MersenneTwister64(0);
Normal incomingRequests = new Normal(0, 1, r);
Normal duration = new Normal(30, 50, r);
AtomicInteger latencyForThisSecond = new AtomicInteger(duration.nextInt());
Flux.interval(Duration.ofSeconds(1)).doOnEach(d -> latencyForThisSecond.set(duration.nextInt())).subscribe();
final Map<LongTaskTimer.Sample, CountDownLatch> tasks = new ConcurrentHashMap<>();
// the potential for an "incoming request" every 10 ms
Flux.interval(Duration.ofSeconds(1)).doOnEach(d -> {
if (incomingRequests.nextDouble() + 0.4 > 0 && tasks.isEmpty()) {
int taskDur;
while ((taskDur = duration.nextInt()) < 0) ;
synchronized (tasks) {
tasks.put(timer.start(), new CountDownLatch(taskDur));
}
}
synchronized (tasks) {
for (Map.Entry<LongTaskTimer.Sample, CountDownLatch> e : tasks.entrySet()) {
e.getValue().countDown();
if (e.getValue().getCount() == 0) {
e.getKey().stop();
tasks.remove(e.getKey());
}
}
}
}).blockLast();
}
use of io.micrometer.core.instrument.MeterRegistry in project micrometer by micrometer-metrics.
the class SimulatedEndpointInstrumentation method main.
public static void main(String[] args) {
MeterRegistry registry = SampleConfig.myMonitoringSystem();
Timer e1Success = Timer.builder("http.server.requests").tags("uri", "/api/bar").tags("response", "200").publishPercentiles(0.5, 0.95).register(registry);
Timer e2Success = Timer.builder("http.server.requests").tags("uri", "/api/foo").tags("response", "200").publishPercentiles(0.5, 0.95).register(registry);
Timer e1Fail = Timer.builder("http.server.requests").tags("uri", "/api/bar").tags("response", "500").publishPercentiles(0.5, 0.95).register(registry);
Timer e2Fail = Timer.builder("http.server.requests").tags("uri", "/api/foo").tags("response", "500").publishPercentiles(0.5, 0.95).register(registry);
RandomEngine r = new MersenneTwister64(0);
Normal incomingRequests = new Normal(0, 1, r);
Normal successOrFail = new Normal(0, 1, r);
Normal duration = new Normal(250, 50, r);
Normal duration2 = new Normal(250, 50, r);
AtomicInteger latencyForThisSecond = new AtomicInteger(duration.nextInt());
Flux.interval(Duration.ofSeconds(1)).doOnEach(d -> latencyForThisSecond.set(duration.nextInt())).subscribe();
AtomicInteger latencyForThisSecond2 = new AtomicInteger(duration2.nextInt());
Flux.interval(Duration.ofSeconds(1)).doOnEach(d -> latencyForThisSecond2.set(duration2.nextInt())).subscribe();
// the potential for an "incoming request" every 10 ms
Flux.interval(Duration.ofMillis(10)).doOnEach(d -> {
// are we going to receive a request for /api/foo?
if (incomingRequests.nextDouble() + 0.4 > 0) {
if (successOrFail.nextDouble() + 0.8 > 0) {
// pretend the request took some amount of time, such that the time is
// distributed normally with a mean of 250ms
e1Success.record(latencyForThisSecond.get(), TimeUnit.MILLISECONDS);
} else {
e1Fail.record(latencyForThisSecond.get(), TimeUnit.MILLISECONDS);
}
}
}).subscribe();
// the potential for an "incoming request" every 1 ms
Flux.interval(Duration.ofMillis(1)).doOnEach(d -> {
// are we going to receive a request for /api/bar?
if (incomingRequests.nextDouble() + 0.4 > 0) {
if (successOrFail.nextDouble() + 0.8 > 0) {
// pretend the request took some amount of time, such that the time is
// distributed normally with a mean of 250ms
e2Success.record(latencyForThisSecond2.get(), TimeUnit.MILLISECONDS);
} else {
e2Fail.record(latencyForThisSecond2.get(), TimeUnit.MILLISECONDS);
}
}
}).blockLast();
}
use of io.micrometer.core.instrument.MeterRegistry in project micrometer by micrometer-metrics.
the class UptimeMetricsSample method main.
public static void main(String[] args) {
MeterRegistry registry = SampleConfig.myMonitoringSystem();
registry.config().commonTags("instance", "sample-host");
new UptimeMetrics().bindTo(registry);
}
use of io.micrometer.core.instrument.MeterRegistry in project spring-cloud-netflix by spring-cloud.
the class DefaultCounterFactoryTests method shouldIncrement.
@Test
public void shouldIncrement() throws Exception {
MeterRegistry meterRegistry = mock(MeterRegistry.class);
CounterFactory factory = new DefaultCounterFactory(meterRegistry);
Counter counter = mock(Counter.class);
when(meterRegistry.counter(NAME)).thenReturn(counter);
factory.increment(NAME);
verify(counter).increment();
}
use of io.micrometer.core.instrument.MeterRegistry in project micrometer by micrometer-metrics.
the class ProcessorMetricsTest method openJ9CpuMetrics.
@Test
void openJ9CpuMetrics() {
assumeTrue(classExists("com.ibm.lang.management.OperatingSystemMXBean"));
MeterRegistry registry = new SimpleMeterRegistry();
new ProcessorMetrics().bindTo(registry);
/*
* We can't assert on values because these methods are documented to return "-1"
* on the first call and a positive value - if supported - on subsequent calls.
* This holds true for "system.cpu.usage" but not for "process.cpu.usage". The latter
* needs some milliseconds of sleep before it actually returns a positive value
* on a supported system. Thread.sleep() is flaky, though.
*/
registry.get("system.cpu.usage").gauge();
registry.get("process.cpu.usage").gauge();
}
Aggregations