Ответ
В последнем проекте на Spring Boot использовался стек Micrometer → Prometheus → Grafana.
1. Micrometer (инструментация приложения)
Библиотека-фасад для сбора метрик JVM-приложений. Интегрируется через spring-boot-starter-actuator и зависимость micrometer-registry-prometheus.
Пример объявления кастомной метрики:
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
@RestController
public class OrderController {
private final Counter createdOrdersCounter;
public OrderController(MeterRegistry registry) {
// Создаём счётчик с именем и тегами для детализации
this.createdOrdersCounter = Counter
.builder("orders.created.total")
.description("Total number of created orders")
.tag("service", "order-service")
.register(registry);
}
@PostMapping("/orders")
public ResponseEntity createOrder() {
// Инкрементируем метрику при событии
createdOrdersCounter.increment();
// ... логика создания заказа
return ResponseEntity.ok().build();
}
}
2. Prometheus (сбор и хранение метрик)
- Prometheus периодически «скрапил» (забирал) метрики с эндпоинта
/actuator/prometheus. - Хранил данные в своём временном рядовом хранилище.
- Позволял писать запросы (PromQL) для агрегации данных.
3. Grafana (визуализация и дашборды)
- Подключалась к Prometheus как источнику данных.
- На дашбордах отображались графики по JVM-метрикам (память, потоки), HTTP-запросам, времени ответа и бизнес-метрикам (как в примере выше).
Ключевые преимущества такого стека: стандартизация формата метрик (Micrometer), мощный язык запросов (PromQL) и гибкая визуализация (Grafana).