Ответ
Работал с внедрением и настройкой метрик для мониторинга Java-приложений, используя стек Micrometer + Prometheus + Grafana.
Ключевые практики:
- Инструментация кода через Micrometer для сбора:
- Метрик производительности (тайминги HTTP-запросов, JVM — память, CPU, GC)
- Бизнес-метрик (счётчики событий, гистограммы)
- Экспорт и сбор метрик в Prometheus.
- Визуализация и алертинг в Grafana.
Пример кода с Micrometer в Spring Boot:
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
@RestController
public class DemoController {
private final Counter requestCounter;
public DemoController(MeterRegistry registry) {
// Создание счётчика с тегами
this.requestCounter = Counter.builder("http.requests")
.tag("method", "GET")
.tag("handler", "DemoController")
.register(registry);
}
@GetMapping("/demo")
public String endpoint() {
// Инкремент метрики при запросе
requestCounter.increment();
return "OK";
}
}
Конфигурация для Prometheus (application.yml):
management:
endpoints:
web:
exposure:
include: health, prometheus, metrics
metrics:
export:
prometheus:
enabled: true
tags:
application: my-service # Общие теги для всех метрик
Использовал Spring Boot Actuator (/actuator/prometheus) как стандартный endpoint для сбора данных. Для сложных дашбордов и алертов настраивал правила в Grafana, запрашивая данные из Prometheus.