Всем привет. Это заметка не содержит никаких глубоких размышений (впрочем, как и обычно), но носит чисто прикладной характер. В этот раз поговорим о том, на сколько сейчас просто добавить разные метрики к вашему Spring Boot приложению.
Собственно, TL;DR — вопспользуемся проектом https://micrometer.io/ (в купе с https://metrics.dropwizard.io/4.0.0/), который предоставит нам vendor agnostic фасад для реализации метрик в нашем приложении.
В чём вообще новость? Год назад у нас с вами вышел Spring boot 2. В нем появилась интеграция с замечательным проектом micrometer. Прелесть этого проекта — абстракция над всеми известными игроками на рынке Метрик. Вы реализуете метрики в вашем приложении, используя micrometer, а потом можете слать метрики в любое современное известное решение: это может быть условный Datadog, или Prometheus, или даже старый добрый JMX.
Из коробки micrometer предоставляет сразу несколько типов метрик, которые вы можете захотеть использовать:
Самый простой пример, как можно использовать Gauge:
AtomicInteger n = registry.gauge("numberGauge", new AtomicInteger(0)); n.set(1); n.set(2);
Тут мы сами, время от времени, устанавливаем текущее значение для данной метрики. В API micrometer есть и сахар над этим — можно, например, просто передать ваш контейнер данных, и сказать, что вы хотите отслеживать количество элементов в этой структуре даных.
В чём вообще прелесть данного решения для реализации метрик в вашем приложении? Я бы выделил несколько пунктов:
В общем, советую посмотреть на проект metrics. Даже, если вы уже интегрировались с каким-то конкретеным сервисом по сбору метрик, то, возможно, имеет смысл перейти на данную абстракцию, для того чтобы в будущем было меньше проблем.
Категории: Программирование