Мы уже знаем, что Spring Boot Actuator предоставляет нам удобный и обширный набор метрик. Тем не менее, если вы работаете над крупным проектом, то одного лишь вывода метрик в виде эндпоинтов Actuator может быть недостаточно. В реальных системах важно централизовать мониторинг всех микросервисов, визуально представлять данные в удобной форме и оперативно реагировать на проблемы.
Вот где на сцену выходят Prometheus — система для сбора и хранения метрик, а также Grafana — инструмент для визуализации данных. Prometheus интегрируется с Actuator для получения метрик, а Grafana помогает визуализировать их на дашбордах.
Эти инструменты дадут вам возможность:
- Консолидировать мониторинг всех приложений в одном месте.
- Отслеживать долгосрочные тренды по производительности.
- Получать уведомления о сбоях или превышении критических значений.
Так что — пристёгивайте ремни — мы отправляемся в мир интеграций!
Настройка Prometheus
Установка Prometheus
Для начала, нам нужно установить Prometheus. Если он ещё не установлен, вы можете использовать Docker для быстрого развертывания:
docker run -d --name=prometheus --network=host prom/prometheus
Подготовка Spring Boot приложения
Prometheus собирает метрики через специальный эндпоинт /actuator/prometheus. Чтобы сделать этот эндпоинт доступным, нам нужно подключить библиотеку Micrometer Prometheus к нашему приложению.
В pom.xml добавьте следующую зависимость:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.10.3</version>
</dependency>
Для Gradle это будет выглядеть так:
implementation 'io.micrometer:micrometer-registry-prometheus:1.10.3'
После этого, в настройках application.properties укажите, что эндпоинт Prometheus должен быть включён:
management.endpoints.web.exposure.include=health,info,prometheus
Запустив приложение, вы должны увидеть, что эндпоинт /actuator/prometheus теперь доступен.
2.3 Настройка Prometheus для сбора метрик
Теперь, когда эндпоинт настроен, необходимо сообщить Prometheus, откуда забирать метрики. Для этого в конфигурационном файле prometheus.yml добавьте ваш Spring Boot сервис в список targets:
scrape_configs:
- job_name: 'spring-boot-app'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8080']
labels:
service: 'my-spring-boot-app'
Нажмите на паузу и проверьте: если Prometheus успешно подключился, вы сможете увидеть метрики, зайдя на страницу http://localhost:9090.
3. Почему Grafana?
Хотя Prometheus и хорош для сбора данных, его интерфейс сложно назвать дружелюбным. Для визуализации мы будем использовать Grafana — инструмент, предоставляющий красивые интерактивные дашборды. С Grafana вы сможете:
- Создавать дашборды с графиками, гистограммами, таблицами и другими видами данных.
- Настраивать оповещения (например, при превышении порога загрузки CPU).
- Анализировать данные в масштабе секунд до месяцев.
Настройка Grafana
Установка Grafana
Если Grafana ещё не установлена, снова-таки, будет удобнее воспользоваться услугами Docker:
docker run -d -p 3000:3000 grafana/grafana
Grafana будет доступна по адресу http://localhost:3000.
Логин и пароль по умолчанию: admin/admin.
Подключение Prometheus к Grafana
- Войдите в интерфейс Grafana.
- Перейдите в Configuration > Data Sources.
- Нажмите "Add data source" и выберите Prometheus.
- В поле URL введите адрес вашего Prometheus-инстанса (например,
http://localhost:9090). - Нажмите Save & Test, чтобы убедиться, что соединение успешно.
Создание дашборда
Теперь давайте создадим первый дашборд, чтобы отслеживать, например, использование памяти и загрузку процессора.
Шаг 1: создайте новый дашборд 1. Перейдите в Dashboards и выберите New Dashboard. 2. Нажмите Add New Panel, чтобы добавить график.
Шаг 2: настройте панель 1. В поле Query введите запрос в формате PromQL (язык запросов Prometheus). Например:
process_cpu_usage
Этот запрос покажет загрузку CPU для нашего приложения.
- Установите тип графика (линия, гистограмма и т.д.) и другие параметры.
- Добавьте ещё одну панель, чтобы показать использование памяти:
jvm_memory_used_bytes - Сохраните изменения.
Шаг 3: Просмотрите дашборд Теперь вы можете наслаждаться красивой визуализацией! Вот пример, как это может выглядеть:
+------------------------------------+
| Memory Usage | CPU Usage |
+------------------------------------+
| JVM: 512 MB | CPU: 12% |
| ...dynamic graphs...| ...updates...|
| | |
+------------------------------------+
5. Настройка оповещений
Grafana позволяет настроить оповещения, чтобы при достижении критических значений отправлять уведомления (например, на почту или в Slack). Вот как это сделать:
- Откройте любую панель на дашборде.
- Кликните по панели и выберите Edit > Alerts.
- Добавьте новую политику оповещения. Например, создайте правило: если
process_cpu_usage > 80%, то отправить сообщение. - Настройте конечную точку для уведомлений (например, email или Slack).
6. Практическое задание
Чтобы лучше понять процесс, выполните следующее задание:
- Настройте Prometheus для сбора метрик вашего Spring Boot приложения.
- Подключите Grafana к Prometheus и создайте дашборд с двумя панелями:
- Использование памяти JVM.
- Загрузка CPU.
- Настройте политику оповещения, чтобы получать уведомления при превышении загрузки CPU более чем на 90%.
Пример результата: ваш Grafana дашборд с живыми графиками метрик.
Теперь, когда у вас есть интеграция между Spring Boot Actuator, Prometheus и Grafana, ваша жизнь оператора станет проще, а приложение — прозрачнее. Всего-то и нужно, что немного настройки, и вы на вершине мира мониторинга!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ