【问题标题】:Exclude path params from actuator metrics从执行器指标中排除路径参数
【发布时间】:2025-07-13 18:10:01
【问题描述】:

我有一个使用执行器指标的 Spring Boot 应用程序,但我遇到了以下问题:

我有一个这样的端点:

GET /users/{userId}  

因此,每次调用此端点时,我都会使用不同的 ID 来获取特定用户,因为您可以认为我们可以拥有数十万个用户。它工作正常,但我注意到在调用我的指标端点时:

GET /metrics

我得到这样的东西:

counter.status.200.metrics: 1,
counter.status.200.api.users.4: 2,
counter.status.200.api.users.2: 3,
counter.status.200.api.users.3: 2,

所以它让我觉得我会为每个具有不同路径参数的单个调用获得一个计数器,所以我的问题是我如何才能为端点 /users/{anyId} 而不是每个组合(不包括参数)有一个计数器? .

--- 编辑 ---

我使用的是 Spring boot + Jersey(我没有使用 Spring MVC),以下是我的控制器代码:

@Component
@Path("/users")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class UserResource {

    @GET
    public Response getUsers() {
        return Response.ok("It works !").build();
    }

    @GET
    @Path("/{userId}")
    public Response getUserById(@PathParam("userId") String id) {
        return Response.ok("It works !").build();
    }

}

以下是泽西配置:

@Component
@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() {
        register(UserResource.class);
        register(PingResource.class);
    }
}

【问题讨论】:

  • 没有。它只是像这样返回counter.status.200.api.users : 2。您能否显示您的控制器代码,以及您使用的是哪个版本的 spring-boot
  • 当然让我编辑我的问题

标签: java spring-boot jersey metrics spring-boot-actuator


【解决方案1】:

在使用 Jersey 时,它是带有 Spring Boot 1.x 的 known issue。有一个解决方法described in the issue,或者您可以通过将以下内容添加到application.properties 来禁用指标过滤器:

endpoints.metrics.filter.enabled=false

【讨论】:

  • 现在我没有任何指标,是否有可能有类似 counter.status.200.api.users : 2 而不是 counter.status.200.api.users 的东西。 2:3 还是我必须删除它并创建自己的指标?
  • 您可以尝试我在答案中链接到的解决方法。
最近更新 更多