Я играл с метриками в spring -boot и немного запутывался, как выглядит spring -cloud, чтобы изменить поведение.
Простое минимальное приложение spring -boot 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
который описан в spring -boot docs. Мой пользовательский счетчик (counter.calls.hello) функционирует как счетчик, как ожидалось.
Теперь, если я добавлю spring -cloud-starter-eureka (Brixton.RC1) в мой pom и ничего не изменю, конечная точка метрики имеет
...
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, но он больше не работает как счетчик, он, кажется, просто показывает значение 1, даже если я сделал 5 вызовов HelloController. Небольшая отладка и поиск привели меня к изменению метрического имени счетчика на meter.calls.hello, что приводит к counter.servo.calls.hello в ответе метрик и восстанавливает функции счетчика.
Дальнейшее чтение указывает, что spring -cloud использует сервопривод по умолчанию для показателей и указывает, что если я использую java 8, я должен использовать зрителя. Добавив spring -cloud-starter-spectator к моему pom и возвращаясь к "counter.calls.hello" в качестве имени счетчика, конечная точка метрики имеет
...
counter.calls.hello(): 3,
response.hello(): 7,
response.metrics(): 9,
response.star-star.favicon.ico(): 2,
у этого есть еще менее встроенная информация о конечной точке останова, но мой пользовательский счетчик, похоже, функционирует.
Spring -cloud docs о показателях, похоже, указывают, что я должен использовать ServoRegistry, используя серво или зритель. Терминология в разделе метрик зрителя отличается. Счетчик работает не так, как я ожидал. Когда я публикую простой счетчик посещений, используя ServoRegistry, как описано в документах, я возвращаю некоторую скорость в конечной точке метрики.
Есть ли добавленное значение в серво и/или зрителе над тем, что обеспечивается spring -boot? spring -cloud docs указывают на то, что в стандартную контрольную метрику записывается больше информации, но они не отображаются в/метриках. Должен ли я просто исключить ServoMetricsAutoConfiguration и использовать реализацию spring -boot?