2016-04-05 72 views
11

我一直在玩spring-boot中的度量标准,并且在spring-cloud似乎改变行为方式时遇到了一些困惑。春季引导指标与春季云指标

具有致动器,并与单个控制器的简单最小弹簧引导1.3.3.RELEASE应用:

@RestController 
public class HelloController { 

    @Autowired 
    private CounterService counterService; 

    @RequestMapping("/hello") 
    public String sayHello(@RequestParam("name") String name) { 
     counterService.increment("counter.calls.hello"); 
     return "Hello, " + name; 
    } 
} 

度量端点用于该应用具有

... 
gauge.response.hello: 5, 
gauge.response.metrics: 69, 
gauge.response.star-star.favicon.ico: 2, 
counter.status.200.star-star.favicon.ico: 4, 
counter.status.200.metrics: 1, 
counter.calls.hello: 5, 
counter.status.200.hello: 5 

其是如上述春季启动文档。我的自定义计数器(counter.calls.hello)按照预期的方式用作计数器。

现在,如果我增加了Spring的云起动尤里卡(Brixton.RC1)到我的聚甲醛,不别人改变什么,指标端点有

... 
gauge.servo.counter.calls.hello: 1, 
normalized.servo.rest.totaltime: 0, 
normalized.servo.rest.count: 0, 
gauge.servo.rest.min: 0, 
gauge.servo.rest.max: 0, 
gauge.servo.response.hello: 7, 
gauge.servo.response.star-star.favicon.ico: 2, 

正常MVC指标都没有了。响应代码信息在哪里?我的自定义计数器报告为gauge.servo.counter.calls.hello,但它不再用作计数器,即使我已经对HelloController进行了5次调用,它似乎也只显示值1。一些调试和搜索让我将计数器度量名称更改为meter.calls.hello,这导致度量响应中的counter.servo.calls.hello,并恢复计数器功能。

进一步阅读表明春天云默认伺服度量指标,并指出如果我使用Java 8,我应该使用观众。添加弹簧云起动观众到我的POM,并回到“counter.calls.hello”作为计数器的度量标准名称,度量端点有

... 
counter.calls.hello(): 3, 
response.hello(): 7, 
response.metrics(): 9, 
response.star-star.favicon.ico(): 2, 

这甚至更少内置信息有关休息端点,但我的自定义计数器似乎功能。

有关指标的Spring-cloud文档似乎表明我应该使用ServoRegistry,无论是使用伺服还是旁观者。观众指标部分的术语不同。柜台不按我期望的方式工作。如文档中所述,当我使用ServoRegistry发布一个简单的计数器时,我会返回度量标准端点中的某种比率。

在伺服和/或旁观者中,是否有一些额外的价值与Spring-Boot提供的内容有关? Spring-cloud文档表明,有更多信息记录在默认控制器指标中,但它们没有显示在/度量标准中。我应该排除ServoMetricsAutoConfiguration并使用spring-boot实现吗?

回答

5

根据Spring Cloud Brixton documentation,伺服/观察器度量的优点是它们被标记(也称为维度),而常规的Spring Boot度量是分层的。

弹簧引导

"counter.status.200.root": 20 
"counter.status.400.root": 3 

Netflix的

"root(method=GET,status=200,statistic=count)": 20 
"root(method=GET,status=400,statistic=count)": 3 

维指标允许更多的查询的灵活性和由默认情况下,MVC请求标记为HTTP方法,HTTP状态,URI和异常(如果该请求处理程序抛出一个例外)。

不幸的是,尺寸Netflix度量标准在/metrics执行器端点中显示时似乎不能很好地转换,因此如果您需要的只是Spring Boot在度量标准端点中提供的默认请求计数器,则会更好禁用伺服配置:

spring.metrics.servo.enabled=false