Ответ
Система мониторинга была построена на стеке Prometheus + Grafana.
Сбор метрик:
- Инфраструктурные метрики (CPU, память, диск, сеть): Собирались
node_exporterс каждого сервера. -
Метрики приложения (Java): Использовалась библиотека Micrometer, которая интегрировалась с Prometheus. Она автоматически собирала JVM-метрики (память, потоки, GC), метрики HTTP-запросов (через Spring Boot Actuator) и позволяла добавлять кастомные метрики.
@Service public class OrderService { private final Counter orderCounter = Metrics.counter("orders.created.total"); public void createOrder() { // бизнес-логика orderCounter.increment(); // Кастомная метрика } } - Метрики базы данных и кэша: Собирались соответствующими экспортерами (например,
mysqld_exporter,redis_exporter).
Визуализация и алертинг:
- Grafana: Использовалась для создания дашбордов, агрегирующих метрики из Prometheus.
- Alertmanager (Prometheus): Настраивались алерты на критические условия (например,
rate(http_server_requests_errors_total[5m]) > 0.1, высокая загрузка CPU) с уведомлениями в Slack/Telegram.
Такой подход обеспечивал полную observability за состоянием приложения и инфраструктуры.