JavaRush /Курсы /Модуль 5. Spring /Лекция 276: Настройка мониторинга и логирования микросерв...

Лекция 276: Настройка мониторинга и логирования микросервисов

Модуль 5. Spring
28 уровень , 5 лекция
Открыта
  • Мониторинг помогает отвечать на вопросы: "Почему микросервис стал медленнее работать?" или "Почему в Kafka очередь сообщений растет, а не уменьшается?".
  • Логирование помогает понять, почему пользователь получил 500-й статус вместо красивого JSON, или что произошло с транзакцией.

Введение в инструменты мониторинга и логирования

В экосистеме Spring Boot для мониторинга и логирования можно использовать три основных подхода/инструменты:

  1. Spring Boot Actuator — встроенный инструмент для получения метрик и состояния приложения.
  2. Prometheus и Grafana — для метрик и их визуализации.
  3. ELK-стек (Elasticsearch, Logstash, Kibana) — для централизованного логирования.

Мы рассмотрим базовые примеры их настройки и интеграции.


Настройка Spring Boot Actuator

Spring Boot Actuator предоставляет готовые метрики для вашего приложения "из коробки". Все, что нужно — добавить зависимость и немного настроить application.properties.

Чтобы подключить Actuator, откройте ваш файл pom.xml и добавьте:


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Активация эндпоинтов

Spring Boot Actuator поставляется с несколькими эндпоинтами, такими как /actuator/health, /actuator/metrics, но по умолчанию включены не все.

Включим все эндпоинты для тестовых целей:


management.endpoints.web.exposure.include=*

А теперь запустите приложение и перейдите по адресу: http://localhost:8080/actuator/health. Вы увидите простой JSON:


{
  "status": "UP"
}

Теперь ваш микросервис может говорить: "Я жив и здоров".

Полезные метрики

Среди полезных эндпоинтов, которые помогут вам:

  • /actuator/metrics — метрики приложения (например, CPU, память).
  • /actuator/env — переменные окружения.
  • /actuator/heapdump — дамп памяти (если внезапно что-то случилось).
  • /actuator/httptrace — трассировка последних HTTP-запросов.

Интеграция с Prometheus и Grafana

Оптимально, чтобы вы могли визуализировать метрики. Для этого используем связку Prometheus (сбор данных) и Grafana (визуализация).

Шаг 1: Настройка Prometheus

Добавьте зависимость Micrometer для Actuator:


<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Теперь добавьте в application.properties:


management.metrics.export.prometheus.enabled=true
management.endpoints.web.exposure.include=prometheus

Это создаст эндпоинт /actuator/prometheus, который Prometheus будет использовать для сбора метрик.

Шаг 2: Установка Prometheus

Скачайте Prometheus с официального сайта и настройте prometheus.yml:


scrape_configs:
  - job_name: 'spring-boot'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8080']

Запустите Prometheus:

./prometheus --config.file=prometheus.yml

Теперь данные вашего приложения собираются!

Шаг 3: Подключение Grafana

Установите Grafana с официального сайта. Создайте новый Data Source в Grafana, выбрав Prometheus, и подключите его к http://localhost:9090.

Создайте красивый дашборд с графиками и наблюдайте за своим приложением в реальном времени.


Логирование в микросервисах и ELK-стек

Логирование — это ваша "чёрная коробка", которая сохранит последовательность событий. Мы постараемся организовать централизованное логирование, чтобы проще было отслеживать события во всей системе.

Конфигурация логирования в Spring Boot

Переопределим стандартное логирование в application.properties:


logging.level.org.springframework=INFO
logging.file.name=logs/application.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n

Теперь логи сохраняются в файл application.log, а формат сообщений стал более читаемым.

Введение в ELK-стек

  • Elasticsearch — для хранения логов.
  • Logstash — для их обработки.
  • Kibana — для визуального анализа.

Создайте файл конфигурации logstash.conf:


input {
  file {
    path => "/path/to/logs/application.log"
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "microservice-logs"
  }
  stdout { codec => rubydebug }
}

Запустите Logstash:


logstash -f logstash.conf

Установите Kibana, подключите Elasticsearch как источник данных и создайте индексы для логов. Теперь вы можете анализировать данные и находить проблемы в своей системе.


Практика: настройка мониторинга и логирования

  1. Настройте Spring Boot Actuator в вашем микросервисе.
  2. Подключите Prometheus и Grafana, чтобы собирать и визуализировать метрики.
  3. Настройте логирование с ELK-стеком и централизованно собирайте логи всех микросервисов.

Полезные советы и типичные ошибки

Самая частая ошибка — забыть о том, что безопасность важнее удобства. Никогда не оставляйте эндпоинты /actuator открытыми для всех. Настройте роль-based доступ!

Также не забывайте "отфильтровывать шум" в логах. Никто не хочет читать миллион сообщений "DEBUG about X". Всегда выбирайте правильный уровень логирования (INFO, DEBUG, ERROR).


Теперь ваша система умеет не только работать, но и сообщать, как она себя чувствует! Вас больше не застанут врасплох внезапные падения, ведь мониторинг и логирование стали вашими надежными союзниками.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ