Sobes.tech
Назад к вопросам
Junior — Middle
91

Каким образом можно настроить сбор и отслеживание метрик в приложении Spring Boot?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

В Spring Boot метрики обычно настраивают через Spring Boot Actuator и Micrometer. Actuator дает готовые endpoints для состояния приложения, а Micrometer позволяет собирать и отправлять метрики в Prometheus, Grafana, Datadog и другие системы. На практике важно уметь включить нужные метрики, открыть их endpoint и подключить систему мониторинга.

Определение:

Сбор и отслеживание метрик в Spring Boot — это механизм, который позволяет измерять состояние и поведение приложения: число запросов, время отклика, количество ошибок, нагрузку на JVM, использование памяти и потоков. Для этого чаще всего используют spring-boot-starter-actuator и библиотеку Micrometer, которая служит универсальным фасадом для разных систем мониторинга.

Пример использования:

Например, в сервисе нужно отслеживать количество HTTP-запросов и время их обработки. Для этого добавляют Actuator, включают метрики и подключают Prometheus, чтобы Grafana могла строить графики по latency и error rate.

// build.gradle или pom.xml: добавить зависимости spring-boot-starter-actuator и micrometer-registry-prometheus

@RestController
public class OrderController {

    private final Counter ordersCounter;

    public OrderController(MeterRegistry meterRegistry) {
        this.ordersCounter = Counter.builder("orders.created")
                .description("Number of created orders")
                .register(meterRegistry);
    }

    @PostMapping("/orders")
    public String createOrder() {
        ordersCounter.increment();
        return "ok";
    }
}
management.endpoints.web.exposure.include=health,info,metrics,prometheus
management.endpoint.health.show-details=always

Пояснение кода:

  1. В проект подключаются Actuator и регистр для Prometheus, чтобы Spring Boot начал публиковать метрики.
  2. Через MeterRegistry создается пользовательская метрика Counter, которая считает количество созданных заказов.
  3. При каждом вызове createOrder() счетчик увеличивается на 1.
  4. В application.properties открываются нужные management endpoints, включая /actuator/prometheus.
  5. Prometheus собирает метрики с этого endpoint, а затем Grafana визуализирует их.

Ключевые моменты:

  • Для базового мониторинга в Spring Boot почти всегда начинают с spring-boot-starter-actuator.
  • Micrometer позволяет не привязываться к одной системе мониторинга и подключать разные backend’ы.
  • Через Actuator доступны готовые метрики JVM, HTTP, datasource, health-check и другие.
  • Пользовательские метрики удобно создавать через Counter, Timer, Gauge и DistributionSummary.
  • Для внешнего мониторинга обычно открывают /actuator/prometheus и настраивают сбор Prometheus.
  • Важно контролировать, какие endpoints доступны наружу, чтобы не раскрыть лишнюю информацию.