Search in sources :

Example 16 with MeterFilter

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

the class MeterFilterTest method maxExpectedOnSummary.

@Test
void maxExpectedOnSummary() {
    MeterFilter filter = MeterFilter.maxExpected("name", 100);
    Meter.Id timer = new Meter.Id("name", emptyList(), null, null, Meter.Type.DISTRIBUTION_SUMMARY);
    assertThat(filter.configure(timer, DistributionStatisticConfig.DEFAULT)).satisfies(conf -> assertThat(conf.getMaximumExpectedValue()).isEqualTo(100));
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) Test(org.junit.jupiter.api.Test)

Example 17 with MeterFilter

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

the class MeterFilterTest method denyUnless.

@Test
void denyUnless() {
    Meter.Id id1 = new Meter.Id("my.counter", emptyList(), null, null, Meter.Type.COUNTER);
    Meter.Id id2 = new Meter.Id("other.counter", emptyList(), null, null, Meter.Type.COUNTER);
    MeterFilter filter = MeterFilter.denyUnless(id -> id.getName().startsWith("my"));
    assertThat(filter.accept(id1)).isEqualTo(MeterFilterReply.NEUTRAL);
    assertThat(filter.accept(id2)).isEqualTo(MeterFilterReply.DENY);
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) Test(org.junit.jupiter.api.Test)

Example 18 with MeterFilter

use of io.micrometer.core.instrument.config.MeterFilter in project zipkin by openzipkin.

the class ZipkinUiConfiguration method uiServerConfigurator.

@Bean
ArmeriaServerConfigurator uiServerConfigurator(HttpService indexService, Optional<MeterRegistry> meterRegistry) throws IOException {
    ServerCacheControl maxAgeYear = ServerCacheControl.builder().maxAgeSeconds(TimeUnit.DAYS.toSeconds(365)).build();
    HttpService uiFileService = FileService.builder(getClass().getClassLoader(), "zipkin-lens").cacheControl(maxAgeYear).build();
    String config = writeConfig(ui);
    return sb -> {
        sb.service("/zipkin/config.json", HttpFile.builder(HttpData.ofUtf8(config)).cacheControl(ServerCacheControl.builder().maxAgeSeconds(600).build()).contentType(MediaType.JSON_UTF_8).build().asService());
        sb.serviceUnder("/zipkin/", uiFileService);
        // TODO This approach requires maintenance when new UI routes are added. Change to the following:
        // If the path is a a file w/an extension, treat normally.
        // Otherwise instead of returning 404, forward to the index.
        // See https://github.com/twitter/finatra/blob/458c6b639c3afb4e29873d123125eeeb2b02e2cd/http/src/main/scala/com/twitter/finatra/http/response/ResponseBuilder.scala#L321
        sb.service("/zipkin/", indexService).service("/zipkin/index.html", indexService).service("/zipkin/traces/{id}", indexService).service("/zipkin/dependency", indexService).service("/zipkin/traceViewer", indexService);
        sb.service("/favicon.ico", new RedirectService(HttpStatus.FOUND, "/zipkin/favicon.ico")).service("/", new RedirectService(HttpStatus.FOUND, "/zipkin/")).service("/zipkin", new RedirectService(HttpStatus.FOUND, "/zipkin/"));
        // don't add metrics for favicon
        meterRegistry.ifPresent(m -> m.config().meterFilter(MeterFilter.deny(id -> {
            String uri = id.getTag("uri");
            return uri != null && uri.startsWith("/favicon.ico");
        })));
    };
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) ArmeriaServerConfigurator(com.linecorp.armeria.spring.ArmeriaServerConfigurator) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) FileService(com.linecorp.armeria.server.file.FileService) Autowired(org.springframework.beans.factory.annotation.Autowired) DEFAULT_BASEPATH(zipkin2.server.internal.ui.ZipkinUiProperties.DEFAULT_BASEPATH) MediaType(com.linecorp.armeria.common.MediaType) HttpFile(com.linecorp.armeria.server.file.HttpFile) Value(org.springframework.beans.factory.annotation.Value) HttpStatus(com.linecorp.armeria.common.HttpStatus) BeanCreationException(org.springframework.beans.factory.BeanCreationException) EnableConfigurationProperties(org.springframework.boot.context.properties.EnableConfigurationProperties) HttpService(com.linecorp.armeria.server.HttpService) ConditionalOnProperty(org.springframework.boot.autoconfigure.condition.ConditionalOnProperty) Resource(org.springframework.core.io.Resource) HttpData(com.linecorp.armeria.common.HttpData) StreamUtils(org.springframework.util.StreamUtils) ServerCacheControl(com.linecorp.armeria.common.ServerCacheControl) UTF_8(java.nio.charset.StandardCharsets.UTF_8) RedirectService(com.linecorp.armeria.server.RedirectService) StringWriter(java.io.StringWriter) IOException(java.io.IOException) TimeUnit(java.util.concurrent.TimeUnit) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) JsonUtil(zipkin2.server.internal.JsonUtil) Optional(java.util.Optional) Bean(org.springframework.context.annotation.Bean) InputStream(java.io.InputStream) HttpService(com.linecorp.armeria.server.HttpService) RedirectService(com.linecorp.armeria.server.RedirectService) ServerCacheControl(com.linecorp.armeria.common.ServerCacheControl) Bean(org.springframework.context.annotation.Bean)

Example 19 with MeterFilter

use of io.micrometer.core.instrument.config.MeterFilter in project spring-boot by spring-projects.

the class HttpClientMetricsAutoConfiguration method metricsHttpClientUriTagFilter.

@Bean
@Order(0)
public MeterFilter metricsHttpClientUriTagFilter(MetricsProperties properties) {
    String metricName = properties.getWeb().getClient().getRequest().getMetricName();
    MeterFilter denyFilter = new OnlyOnceLoggingDenyMeterFilter(() -> String.format("Reached the maximum number of URI tags for '%s'. Are you using 'uriVariables'?", metricName));
    return MeterFilter.maximumAllowableTags(metricName, "uri", properties.getWeb().getClient().getMaxUriTags(), denyFilter);
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) OnlyOnceLoggingDenyMeterFilter(org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter) OnlyOnceLoggingDenyMeterFilter(org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter) Order(org.springframework.core.annotation.Order) ConditionalOnBean(org.springframework.boot.autoconfigure.condition.ConditionalOnBean) Bean(org.springframework.context.annotation.Bean)

Example 20 with MeterFilter

use of io.micrometer.core.instrument.config.MeterFilter in project spring-boot by spring-projects.

the class WebMvcMetricsAutoConfiguration method metricsHttpServerUriTagFilter.

@Bean
@Order(0)
public MeterFilter metricsHttpServerUriTagFilter() {
    String metricName = this.properties.getWeb().getServer().getRequest().getMetricName();
    MeterFilter filter = new OnlyOnceLoggingDenyMeterFilter(() -> String.format("Reached the maximum number of URI tags for '%s'.", metricName));
    return MeterFilter.maximumAllowableTags(metricName, "uri", this.properties.getWeb().getServer().getMaxUriTags(), filter);
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) OnlyOnceLoggingDenyMeterFilter(org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter) OnlyOnceLoggingDenyMeterFilter(org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter) Order(org.springframework.core.annotation.Order) FilterRegistrationBean(org.springframework.boot.web.servlet.FilterRegistrationBean) ConditionalOnBean(org.springframework.boot.autoconfigure.condition.ConditionalOnBean) ConditionalOnMissingBean(org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean) Bean(org.springframework.context.annotation.Bean)

Aggregations

MeterFilter (io.micrometer.core.instrument.config.MeterFilter)20 Test (org.junit.jupiter.api.Test)14 Bean (org.springframework.context.annotation.Bean)4 DistributionStatisticConfig (io.micrometer.core.instrument.distribution.DistributionStatisticConfig)3 OnlyOnceLoggingDenyMeterFilter (org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter)3 ConditionalOnBean (org.springframework.boot.autoconfigure.condition.ConditionalOnBean)3 Order (org.springframework.core.annotation.Order)3 Meter (io.micrometer.core.instrument.Meter)2 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)2 MeterFilterReply (io.micrometer.core.instrument.config.MeterFilterReply)2 SimpleMeterRegistry (io.micrometer.core.instrument.simple.SimpleMeterRegistry)2 ConditionalOnMissingBean (org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean)2 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)1 HttpData (com.linecorp.armeria.common.HttpData)1 HttpStatus (com.linecorp.armeria.common.HttpStatus)1 MediaType (com.linecorp.armeria.common.MediaType)1 ServerCacheControl (com.linecorp.armeria.common.ServerCacheControl)1 HttpService (com.linecorp.armeria.server.HttpService)1 RedirectService (com.linecorp.armeria.server.RedirectService)1 FileService (com.linecorp.armeria.server.file.FileService)1