You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Max (Jira)" <ji...@apache.org> on 2023/03/12 19:42:00 UTC

[jira] [Created] (CAMEL-19136) Too many tags created by micrometer WebMvcTagsProvider

Max created CAMEL-19136:
---------------------------

             Summary: Too many tags created by micrometer WebMvcTagsProvider
                 Key: CAMEL-19136
                 URL: https://issues.apache.org/jira/browse/CAMEL-19136
             Project: Camel
          Issue Type: Bug
          Components: camel-micrometer
    Affects Versions: 3.20.2, 3.20.1, 3.20.0
            Reporter: Max


From discussion  in zulip [https://camel.zulipchat.com/#narrow/stream/257298-camel/topic/springboot.20micrometer.20http.20metrics.20issue/near/340948367]

in https://issues.apache.org/jira/browse/CAMEL-18754 https://github.com/apache/camel-spring-boot/commit/ac318f0418e55c56d0fb426607c67a5ceb1f6742 new configuration has been introduced {{MicrometerTagsAutoConfiguration}}.

Request {{uri}} with placeholders in the metrics tag is replaced with actual value e.g.
{code}
 @RequestMapping(value = "/users/{id}" method = RequestMethod.GET)
{code}
instead of 
{code}
http_server_requests_seconds_bucket{application="my-app",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/users/{id}",le="0.894784851",} 9999.0
{code}

is reported as 

{code}
http_server_requests_seconds_bucket{application="my-app",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/users/1",le="0.894784851",} 1.0
http_server_requests_seconds_bucket{application="my-app",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/users/2",le="0.894784851",} 1.0
http_server_requests_seconds_bucket{application="my-app",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/users/3",le="0.894784851",} 1.0
http_server_requests_seconds_bucket{application="my-app",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/users/999999",le="0.894784851",} 1.0
{code}
and of course will end up a lot of tags which is bad for prometheus.

and spring reports warning
{code}
logger_name     org.springframework.boot.actuate.autoconfigure.metrics.OnlyOnceLoggingDenyMeterFilter
message     Reached the maximum number of URI tags for 'http.server.requests'.
How can we preserve original uri tag? We combine camel with spring boot, so rest api layer is provided by spring boot but integration layer (messaging, http client etc.. ) is done by camel, so would love to keep camel route stats but keep spring boot reported metrics
{code}

basically
{code}
@Bean
    WebMvcTagsProvider webMvcTagsProvider() {
....
return Tags.concat(
                        super.getTags(request, response, handler, exception),
                        Tags.of(Tag.of("uri", uri))
                );
{code}
makes out of {{/users/\{id\}}} -> {{/users/1}}
by excluding 
{code}
@SpringBootApplication(exclude = {MicrometerTagsAutoConfiguration.class}) 
{code}

we get the original behavior. But the risk is that if future versions add more beans into MicrometerTagsAutoConfiguration they will be ignored

How can we preserve original uri tag or make it configurable?
may be regex/whitelist/blacklist on which it should apply? 




 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)