Search in sources :

Example 16 with CompositeMeterRegistry

use of io.micrometer.core.instrument.composite.CompositeMeterRegistry in project vertx-micrometer-metrics by vert-x3.

the class CustomMicrometerMetricsITest method shouldReportWithCompositeRegistry.

@Test
public void shouldReportWithCompositeRegistry(TestContext context) throws Exception {
    // Mock an influxdb server
    Async asyncInflux = context.async();
    InfluxDbTestHelper.simulateInfluxServer(vertxForSimulatedServer, context, 8087, body -> {
        try {
            context.verify(w -> assertThat(body).contains("vertx_eventbus_handlers,address=test-eb,metric_type=gauge value=1"));
        } finally {
            asyncInflux.complete();
        }
    });
    CompositeMeterRegistry myRegistry = new CompositeMeterRegistry();
    myRegistry.add(new JmxMeterRegistry(s -> null, Clock.SYSTEM));
    myRegistry.add(new InfluxMeterRegistry(new InfluxConfig() {

        @Override
        public String get(String s) {
            return null;
        }

        @Override
        public Duration step() {
            return Duration.ofSeconds(1);
        }

        @Override
        public String uri() {
            return "http://localhost:8087";
        }

        @Override
        public boolean autoCreateDb() {
            return false;
        }
    }, Clock.SYSTEM));
    vertx = Vertx.vertx(new VertxOptions().setMetricsOptions(new MicrometerMetricsOptions().setMicrometerRegistry(myRegistry).setRegistryName(REGITRY_NAME).addDisabledMetricsCategory(MetricsDomain.HTTP_SERVER).addDisabledMetricsCategory(MetricsDomain.NAMED_POOLS).addLabels(Label.EB_ADDRESS).setEnabled(true)));
    // Send something on the eventbus and wait til it's received
    Async asyncEB = context.async();
    vertx.eventBus().consumer("test-eb", msg -> asyncEB.complete());
    vertx.eventBus().publish("test-eb", "test message");
    asyncEB.await(2000);
    // Read MBean
    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    assertThat(mbs.getDomains()).contains("metrics");
    Number result = (Number) mbs.getAttribute(new ObjectName("metrics", "name", "vertxEventbusHandlers.address.test-eb"), "Value");
    assertThat(result).isEqualTo(1d);
    // Await influx
    asyncInflux.awaitSuccess();
}
Also used : CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) RunWith(org.junit.runner.RunWith) MicrometerMetricsOptions(io.vertx.micrometer.MicrometerMetricsOptions) After(org.junit.After) MBeanServer(javax.management.MBeanServer) Duration(java.time.Duration) ManagementFactory(java.lang.management.ManagementFactory) Clock(io.micrometer.core.instrument.Clock) InfluxConfig(io.micrometer.influx.InfluxConfig) Vertx(io.vertx.core.Vertx) VertxOptions(io.vertx.core.VertxOptions) JmxMeterRegistry(io.micrometer.jmx.JmxMeterRegistry) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) MetricsDomain(io.vertx.micrometer.MetricsDomain) VertxPrometheusOptions(io.vertx.micrometer.VertxPrometheusOptions) ObjectName(javax.management.ObjectName) InfluxMeterRegistry(io.micrometer.influx.InfluxMeterRegistry) PrometheusMeterRegistry(io.micrometer.prometheus.PrometheusMeterRegistry) HttpServerOptions(io.vertx.core.http.HttpServerOptions) Label(io.vertx.micrometer.Label) PrometheusConfig(io.micrometer.prometheus.PrometheusConfig) Async(io.vertx.ext.unit.Async) JmxMeterRegistry(io.micrometer.jmx.JmxMeterRegistry) InfluxConfig(io.micrometer.influx.InfluxConfig) InfluxMeterRegistry(io.micrometer.influx.InfluxMeterRegistry) VertxOptions(io.vertx.core.VertxOptions) MicrometerMetricsOptions(io.vertx.micrometer.MicrometerMetricsOptions) MBeanServer(javax.management.MBeanServer) ObjectName(javax.management.ObjectName) Test(org.junit.Test)

Example 17 with CompositeMeterRegistry

use of io.micrometer.core.instrument.composite.CompositeMeterRegistry in project pravega by pravega.

the class StatsProviderTest method testStatsProviderStartWithoutExporting.

@Test
public void testStatsProviderStartWithoutExporting() {
    MetricsConfig appConfig = MetricsConfig.builder().with(MetricsConfig.ENABLE_STATISTICS, true).with(MetricsConfig.ENABLE_STATSD_REPORTER, true).with(MetricsConfig.ENABLE_INFLUXDB_REPORTER, true).build();
    @Cleanup CompositeMeterRegistry localRegistry = new CompositeMeterRegistry();
    @Cleanup StatsProvider statsProvider = new StatsProviderImpl(appConfig, localRegistry);
    statsProvider.startWithoutExporting();
    for (MeterRegistry registry : localRegistry.getRegistries()) {
        assertTrue(registry instanceof SimpleMeterRegistry);
        assertFalse(registry instanceof InfluxMeterRegistry);
        assertFalse(registry instanceof StatsdMeterRegistry);
    }
    statsProvider.close();
    assertTrue(0 == localRegistry.getRegistries().size());
}
Also used : CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) StatsdMeterRegistry(io.micrometer.statsd.StatsdMeterRegistry) Cleanup(lombok.Cleanup) InfluxMeterRegistry(io.micrometer.influx.InfluxMeterRegistry) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) StatsdMeterRegistry(io.micrometer.statsd.StatsdMeterRegistry) InfluxMeterRegistry(io.micrometer.influx.InfluxMeterRegistry) Test(org.junit.Test)

Example 18 with CompositeMeterRegistry

use of io.micrometer.core.instrument.composite.CompositeMeterRegistry in project spring-boot by spring-projects.

the class MetricsEndpointTests method findFirstMatchingMetersFromNestedRegistries.

@Test
void findFirstMatchingMetersFromNestedRegistries() {
    CompositeMeterRegistry composite = new CompositeMeterRegistry();
    SimpleMeterRegistry firstLevel0 = new SimpleMeterRegistry();
    CompositeMeterRegistry firstLevel1 = new CompositeMeterRegistry();
    SimpleMeterRegistry secondLevel = new SimpleMeterRegistry();
    composite.add(firstLevel0);
    composite.add(firstLevel1);
    firstLevel1.add(secondLevel);
    secondLevel.counter("cache", "result", "hit", "host", "1").increment(2);
    secondLevel.counter("cache", "result", "miss", "host", "1").increment(2);
    secondLevel.counter("cache", "result", "hit", "host", "2").increment(2);
    MetricsEndpoint endpoint = new MetricsEndpoint(composite);
    MetricsEndpoint.MetricResponse response = endpoint.metric("cache", Collections.emptyList());
    assertThat(response.getName()).isEqualTo("cache");
    assertThat(availableTagKeys(response)).containsExactly("result", "host");
    assertThat(getCount(response)).hasValue(6.0);
    response = endpoint.metric("cache", Collections.singletonList("result:hit"));
    assertThat(availableTagKeys(response)).containsExactly("host");
    assertThat(getCount(response)).hasValue(4.0);
}
Also used : CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) Test(org.junit.jupiter.api.Test)

Example 19 with CompositeMeterRegistry

use of io.micrometer.core.instrument.composite.CompositeMeterRegistry in project spring-boot by spring-projects.

the class MeterRegistryConfigurerIntegrationTests method binderMetricsAreSearchableFromTheComposite.

@Test
void binderMetricsAreSearchableFromTheComposite() {
    this.contextRunner.run((context) -> {
        CompositeMeterRegistry composite = context.getBean(CompositeMeterRegistry.class);
        composite.get("jvm.memory.used").gauge();
        context.getBeansOfType(MeterRegistry.class).forEach((name, registry) -> registry.get("jvm.memory.used").gauge());
    });
}
Also used : CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Test(org.junit.jupiter.api.Test)

Example 20 with CompositeMeterRegistry

use of io.micrometer.core.instrument.composite.CompositeMeterRegistry in project spring-boot by spring-projects.

the class MetricsAutoConfigurationIntegrationTests method autoConfiguredCompositeDoesNotHaveMeterFiltersApplied.

@Test
void autoConfiguredCompositeDoesNotHaveMeterFiltersApplied() {
    new ApplicationContextRunner().with(MetricsRun.limitedTo(GraphiteMetricsExportAutoConfiguration.class, JmxMetricsExportAutoConfiguration.class)).run((context) -> {
        MeterRegistry composite = context.getBean(MeterRegistry.class);
        assertThat(composite).extracting("filters", InstanceOfAssertFactories.ARRAY).hasSize(0);
        assertThat(composite).isInstanceOf(CompositeMeterRegistry.class);
        Set<MeterRegistry> registries = ((CompositeMeterRegistry) composite).getRegistries();
        assertThat(registries).hasSize(2);
        assertThat(registries).hasAtLeastOneElementOfType(GraphiteMeterRegistry.class).hasAtLeastOneElementOfType(JmxMeterRegistry.class);
        assertThat(registries).allSatisfy((registry) -> assertThat(registry).extracting("filters", InstanceOfAssertFactories.ARRAY).hasSize(1));
    });
}
Also used : CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) GraphiteMeterRegistry(io.micrometer.graphite.GraphiteMeterRegistry) ApplicationContextRunner(org.springframework.boot.test.context.runner.ApplicationContextRunner) SimpleMeterRegistry(io.micrometer.core.instrument.simple.SimpleMeterRegistry) GraphiteMeterRegistry(io.micrometer.graphite.GraphiteMeterRegistry) CompositeMeterRegistry(io.micrometer.core.instrument.composite.CompositeMeterRegistry) JmxMeterRegistry(io.micrometer.jmx.JmxMeterRegistry) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) Test(org.junit.jupiter.api.Test)

Aggregations

CompositeMeterRegistry (io.micrometer.core.instrument.composite.CompositeMeterRegistry)24 Test (org.junit.jupiter.api.Test)14 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)13 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)12 Test (org.junit.Test)7 JmxMeterRegistry (io.micrometer.jmx.JmxMeterRegistry)6 GraphiteMeterRegistry (io.micrometer.graphite.GraphiteMeterRegistry)5 PrometheusMeterRegistry (io.micrometer.prometheus.PrometheusMeterRegistry)5 Cleanup (lombok.Cleanup)5 InfluxMeterRegistry (io.micrometer.influx.InfluxMeterRegistry)3 ApplicationContextRunner (org.springframework.boot.test.context.runner.ApplicationContextRunner)3 Clock (io.micrometer.core.instrument.Clock)2 PrometheusConfig (io.micrometer.prometheus.PrometheusConfig)2 StatsdMeterRegistry (io.micrometer.statsd.StatsdMeterRegistry)2 Vertx (io.vertx.core.Vertx)2 VertxOptions (io.vertx.core.VertxOptions)2 HttpServerOptions (io.vertx.core.http.HttpServerOptions)2 Duration (java.time.Duration)2 RunWith (org.junit.runner.RunWith)2 TimestampProvider (com.b2international.index.revision.TimestampProvider)1