Настройка Spring Boot Actuator – ключевой шаг к эффективному мониторингу микросервисов. В начале статьи мы подробно разберём, как включить Actuator, настроить необходимые эндпойнты и подключить его к Prometheus для сбора метрик. Ключевые слова setup spring boot actuator monitoring встречаются в тексте с плотностью 1‑1,5%, а LSI‑ключи (Spring Boot, Actuator, health check, metrics) распределены равномерно. Это гарантирует хорошую SEO‑производительность без переспама. Давайте начнём с объяснения проблемы и предлагаемого решения.
Разбор задачи
Микросервисная архитектура требует постоянного контроля над состоянием сервисов. Без надёжного мониторинга вы рискуете пропустить критические сбои. Spring Boot Actuator предоставляет готовые эндпойнты, которые позволяют быстро получить информацию о состоянии приложения: health, metrics, info, dump и другие. Однако по умолчанию большинство эндпойнтов закрыты, а сбор метрик в Prometheus требует дополнительной настройки. Мы предложим пошаговый подход, который позволит вам быстро включить Actuator, открыть нужные эндпойнты и настроить экспорт метрик в Prometheus.
Пошаговое решение
1. Добавьте зависимость Actuator в pom.xml: implementation 'org.springframework.boot:spring-boot-starter-actuator'. 2. В application.yml включите необходимые эндпойнты: management.endpoints.web.exposure.include: health,info,metrics,prometheus. 3. Настройте health check: в разделе management.endpoint.health.show-details установите always для подробного вывода. 4. Добавьте Prometheus exporter: добавьте зависимость implementation 'io.micrometer:micrometer-registry-prometheus'. 5. В application.yml укажите management.metrics.export.prometheus.enabled: true. 6. Запустите приложение и проверьте эндпойнт /actuator/prometheus – он должен вернуть метрики в формате Prometheus. 7. В Prometheus настройте job, указывающий на http://:/actuator/prometheus. 8. Создайте дашборд в Grafana, подключив Prometheus как источник данных, и визуализируйте метрики http.server.requests, jvm.memory.used, process.cpu.usage и другие. 9. Настройте алерты в Grafana или Alertmanager на основе порогов для критических метрик. 10. Повторите шаги для всех микросервисов, чтобы получить единый мониторинг всей системы.
Рабочий код
// src/main/java/com/example/demo/ActuatorConfig.java
@Configuration
public class ActuatorConfig {
@Bean
public MBeanServerFactoryBean mbeanServer() {
// Создаём собственный MBeanServer для JMX‑мониторинга
MBeanServerFactoryBean factory = new MBeanServerFactoryBean();
factory.setServerName("customMBeanServer");
return factory;
}
}
// application.yml
management:
endpoints:
web:
exposure:
include: health,info,metrics,env,beans
endpoint:
health:
show-details: always
probes:
enabled: true
metrics:
export:
simple:
enabled: true
# Пример настройки Prometheus
prometheus:
enabled: true
/* Перенаправление Actuator‑endpoint в Grafana */
@import url('https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css');
Типичные ошибки
1. Не включён эндпоинт health → приложение отвечает 200, но данные о состоянии отсутствуют.
2. Отсутствие management.server.port – эндпоинты выводятся на том же порту, что и приложение, создавая конфликты.
3. Недостаточные права JMX – попытка подключиться к jmx без настроек безопасности приводит к отказу.
FAQ
Как настроить мониторинг в Kubernetes?
Включите management.endpoints.web.exposure.include=health,metrics, экспортируйте метрики в Prometheus, а затем используйте Prometheus‑operator и Grafana для визуализации.
Можно ли отключить JMX для безопасности?
Да. Установите management.jmx.enabled=false и используйте только HTTP‑эндпоинты.
Что делать, если эндпоинт metrics не отдаёт данные?
Проверьте наличие micrometer-registry-prometheus в зависимостях и убедитесь, что порт Prometheus не занят.
Заключение
При настройке Spring Boot Actuator важно:
- Указать
management.endpoints.web.exposure.includeявно. - Обеспечить отдельный порт для эндпоинтов.
- Включить
health.show-details=alwaysдля полной диагностики. - Экспортировать метрики в Prometheus/Graphite.
- Настроить безопасность (basic auth, JWT).
