从执行器指标中排除路径参数

Exclude path params from actuator metrics

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

我有一个这样的端点:

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();
    }

}

下面是 Jersey 配置:

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

这是一个 known issue with Spring Boot 1.x when using Jersey. There's a workaround described in the issue,或者您可以通过将以下内容添加到 application.properties 来禁用指标过滤器:

endpoints.metrics.filter.enabled=false