Каков ваш опыт работы с Prometheus для мониторинга?

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

Ответ

Работал с Prometheus как с системой мониторинга и оповещения для Java-приложений, в основном в стеке Spring Boot + Micrometer.

Основные задачи и реализация:

  1. Интеграция и экспорт метрик: Использовал библиотеку Micrometer как фасад для сбора и экспорта метрик в формате, понятном Prometheus.

    // Добавление зависимости Micrometer Registry для Prometheus
    // (например, micrometer-registry-prometheus)
    
    @Bean
    MeterRegistryCustomizer<PrometheusMeterRegistry> metricsCommonTags() {
        return registry -> registry.config()
                .commonTags("application", "user-service", "region", "eu-west-1");
    }
  2. Типы собираемых метрик:

    • JVM-метрики: Использование памяти, загрузка процессора, сборки мусора.
    • Метрики приложения: Тайминги HTTP-запросов (с помощью @Timed или MeterRegistry), количество активных транзакций, размер очереди.
    • Кастомные бизнес-метрики: Количество обработанных заказов, ошибок валидации.
      Counter.builder("orders.processed")
             .description("Total number of processed orders")
             .tag("status", "success")
             .register(meterRegistry)
             .increment();
  3. Настройка и визуализация:

    • Конфигурация scrape_configs в prometheus.yml для сбора метрик с эндпоинта /actuator/prometheus.
    • Создание дашбордов в Grafana для визуализации ключевых метрик и состояния системы.
    • Настройка правил алертинга в Alertmanager (например, при высокой частоте ошибок 5xx или нехватке памяти).