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

时间:2018-02-12 16:00:34

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

我有一个使用执行器指标的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();
    }

}

以下是泽西岛配置:

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

1 个答案:

答案 0 :(得分:0)

使用Jersey时,使用Spring Boot 1.x是known issue。有一种解决方法described in the issue,您也可以通过将以下内容添加到application.properties来停用指标过滤器:

endpoints.metrics.filter.enabled=false