Spring-boot度量标准计算并衡量RESTful服务的每个requestURI

时间:2015-05-19 17:28:07

标签: jersey spring-boot metrics

我正在使用起动机和发动机执行器。如果我有如下的端点,

@Component
@Path("/greeting")
public class GreetingEndpoint {

  @GET
  @Path("{id}/{message}")
  @Produces(MediaType.APPLICATION_JSON)
  public Greeting sayHello(@PathParam("id") Long id, @PathParam("message") String message) {
    return new Greeting(id, message);
  }
}

我会为每个请求URI设置计数器/计量器。这会导致内存爆炸吗?

counter.status.200.greeting.1000.look: 1
counter.status.200.greeting.1001.watch-out: 1
counter.status.200.metrics: 1
gauge.response.greeting.1000.look: 109
gauge.response.greeting.1001.watch-out: 6
gauge.response.metrics: 32

1 个答案:

答案 0 :(得分:2)

要回答问题,是的,如果你有基本上无限的ID /消息组合,它可能会爆炸。所有这些信息都存储在内存中。除非你控制客户端调用端点,否则肯定是这样的。这可能需要很长时间,但没有任何东西可以收获指标存储库,因此它们将无限期地存在于应用程序的生命周期中。

可能有一种解决方法(我无法解释为什么会这样)。使用@ RestController + @ RequestMapping + @ PathVariable。根据我的经验,它将为counter.status.200.greeting.id创建一个条目,消息。如果你只是想摆脱HTTP请求的计数器/仪表,但保留所有其他自动配置功能,那么你可以包括这个

@EnableAutoConfiguration(exclude={MetricFilterAutoConfiguration.class})

希望这有帮助。