Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.

@bookjava
📊 Мониторинг: Пульс вашего приложения В мире мониторинга Java есть три главных игрока: 1. Spring Boot Actuator (Генерирует метрики). 2. Prometheus (Собирает и хранит их). 3. Grafana (Рисует красивые графики). Давайте разберем, как они работают вместе. 1️⃣ Spring Boot Actuator & Micrometer Сначала нужно научить приложение рассказывать о себе. В Spring Boot это делается добавлением двух зависимостей: Actuator и Micrometer. Micrometer это как SLF4J, только для метрик. Это фасад. Вы пишете код один раз, а Micrometer умеет отправлять эти данные хоть в Prometheus, хоть в Datadog, хоть в New Relic. В pom.xml: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> В application.yaml: management: endpoints: web: exposure: include: prometheus, health, info Теперь, если вы перейдете по адресу /actuator/prometheus, вы увидите не JSON, а скучный текст: # HELP jvm_memory_used_bytes The amount of used memory # TYPE jvm_memory_used_bytes gauge jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 2.5165824E7 http_server_requests_seconds_count{uri="/users",status="200",} 452.0 Это и есть пища для Прометея. 2️⃣ Prometheus: Пылесос данных Prometheus это Time Series Database (База данных временных рядов). Она хранит цифры с привязкой ко времени. Его киллер-фича: Pull Model (Модель вытягивания). В отличие от логов, которые приложение само отправляет (Push), Prometheus сам приходит к вашему приложению раз в 15 секунд и скачивает (Scrape) данные со страницы /actuator/prometheus. Почему Pull лучше Push? Если ваше приложение под дикой нагрузкой и умирает, оно не сможет отправить метрики. Но Prometheus придет, увидит, что ответа нет, и зафиксирует: "Сервис упал". 3️⃣ Grafana: Капитанский мостик Prometheus хранит данные, но смотреть на них в текстовом виде больно. Grafana подключается к Prometheus и превращает скучные цифры в космолет. Вы можете создать дашборды для всего: 🔴 JVM: Сколько памяти съедено? Как часто работает Garbage Collector? 🔴 Tomcat: Сколько потоков занято? 🔴 Бизнес-метрики: Сколько заказов оформлено за час? Какая выручка? Alerting (Оповещения): Самое важное - Графана умеет "кричать". Вы настраиваете правило: "Если количество ошибок 500 превышает 1% в течение 5 минут - отправь сообщение в Telegram/Slack команде дежурных". 🛠 Кастомные метрики Spring дает кучу метрик из коробки (CPU, Memory, HTTP requests). Но бизнесу нужны свои цифры. Создать их легко через MeterRegistry. @Service public class OrderService { private final Counter orderCounter; public OrderService(MeterRegistry registry) { // Создаем счетчик "orders.created" this.orderCounter = registry.counter("orders.created"); } public void createOrder(Order order) { repo.save(order); orderCounter.increment(); // +1 к метрике } } Теперь в Grafana вы увидите график "Заказов в секунду". 🔥 Итог 1. Actuator открывает "дверь" (/actuator/prometheus). 2. Prometheus заходит в эту дверь каждые 15 секунд и забирает цифры. 3. Grafana рисует графики на основе этих цифр и будит вас ночью, если всё сломалось. #DevOps #Monitoring #Prometheus #Grafana #SpringBoot 👉 @BookJava
Если у вас установлено приложение,
вы можете сразу перейти в канал