Какой у вас опыт настройки метрик и мониторинга для приложений?

«Какой у вас опыт настройки метрик и мониторинга для приложений?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Есть опыт настройки сбора метрик и их визуализации для Java-приложений, в основном в экосистеме Spring Boot.

Стек технологий: Micrometer, Prometheus, Grafana, иногда New Relic.

Типы настраиваемых метрик:

  1. JVM-метрики: Использование памяти (heap, non-heap), сборки мусора, потоки.
  2. HTTP-метрики: Время ответа, количество запросов, коды статусов (через TimedAspect или MeterFilter).
  3. Бизнес-метрики: Кастомные счетчики и таймеры для ключевых операций.

Пример настройки кастомного счетчика в Spring Boot:

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;

@RestController
public class ApiController {
    private final Counter apiRequestCounter;

    public ApiController(MeterRegistry registry) {
        // Создание и регистрация счетчика
        this.apiRequestCounter = Counter.builder("api.requests.total")
                .description("Общее количество обращений к API")
                .tag("endpoint", "/data") // Теги для детализации
                .register(registry);
    }

    @GetMapping("/data")
    public ResponseEntity<String> getData() {
        // Инкремент при каждом вызове
        apiRequestCounter.increment();
        return ResponseEntity.ok("Data");
    }
}

Интеграция и визуализация:

  • Настройка Spring Boot Actuator с эндпоинтом /actuator/prometheus.
  • Конфигурация Prometheus для скрапинга этого эндпоинта.
  • Создание дашбордов в Grafana для отображения метрик в реальном времени.
  • Настройка алертов в Prometheus/Grafana на основе пороговых значений (например, rate(api_errors_total[5m]) > 0.01).