[
https://issues.apache.org/jira/browse/CAMEL-24505?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrea Cosentino updated CAMEL-24505:
-------------------------------------
Fix Version/s: 4.23.0
> camel-micrometer-starter - uri metric tag falls back to the raw request path,
> giving unbounded tag cardinality
> --------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24505
> URL: https://issues.apache.org/jira/browse/CAMEL-24505
> Project: Camel
> Issue Type: Improvement
> Components: camel-micrometer, camel-spring-boot-starters
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.23.0
>
>
> {{MicrometerTagsAutoConfiguration.custom()}} builds the {{uri}} tag for the
> servlet observation:
> {code:java}
> if (servlet.isPresent() && !configuration.isUriTagDynamic()) {
> HttpConsumer consumer =
> servlet.get().getServletResolveConsumerStrategy().resolve(request,
> servlet.get().getConsumers());
> if (consumer != null) {
> uri = consumer.getPath();
> }
> }
> // the request may not be for camel servlet, so we need to capture uri from
> request
> if (uri == null || uri.isEmpty()) {
> uri = request.getServletPath();
> if (uri == null || uri.isEmpty()) {
> uri = request.getPathInfo();
> } else {
> String p = request.getPathInfo();
> if (p != null) {
> uri = uri + p;
> }
> }
> }
> {code}
> (MicrometerTagsAutoConfiguration:70)
> When the request does not resolve to a Camel consumer - any 404, any request
> to a non-Camel path - the tag value becomes the request path verbatim.
> Micrometer creates one meter per distinct tag value and keeps them for the
> process lifetime, so the number of meters follows the number of distinct
> paths requested rather than the number of routes.
> Spring's own convention for this case is a constant {{UNKNOWN}} tag,
> precisely because the value is client-supplied. Only the resolved consumer
> path template is a bounded, route-author-authored value.
> *Proposal*
> - Replace the raw {{servletPath}}/{{pathInfo}} fallback with a constant such
> as {{UNKNOWN}}.
> - Keep the raw path only behind the existing {{uriTagDynamic}} opt-in, and
> normalise or cap it there.
> - Add a test asserting that N requests to N distinct unmatched paths produce
> one meter, not N.
> ----
> _This issue was drafted by Claude Code on behalf of Andrea Cosentino._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)