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)