📊 Мониторинг: Пульс вашего приложения
В мире мониторинга 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.
В
В
Теперь, если вы перейдете по адресу
Это и есть пища для Прометея.
2️⃣ Prometheus: Пылесос данных
Prometheus это Time Series Database (База данных временных рядов). Она хранит цифры с привязкой ко времени.
Его киллер-фича: Pull Model (Модель вытягивания).
В отличие от логов, которые приложение само отправляет (Push), Prometheus сам приходит к вашему приложению раз в 15 секунд и скачивает (Scrape) данные со страницы
Почему Pull лучше Push?
Если ваше приложение под дикой нагрузкой и умирает, оно не сможет отправить метрики. Но Prometheus придет, увидит, что ответа нет, и зафиксирует: "Сервис упал".
3️⃣ Grafana: Капитанский мостик
Prometheus хранит данные, но смотреть на них в текстовом виде больно.
Grafana подключается к Prometheus и превращает скучные цифры в космолет.
Вы можете создать дашборды для всего:
🔴 JVM: Сколько памяти съедено? Как часто работает Garbage Collector?
🔴 Tomcat: Сколько потоков занято?
🔴 Бизнес-метрики: Сколько заказов оформлено за час? Какая выручка?
Alerting (Оповещения):
Самое важное - Графана умеет "кричать".
Вы настраиваете правило: "Если количество ошибок 500 превышает 1% в течение 5 минут - отправь сообщение в Telegram/Slack команде дежурных".
🛠 Кастомные метрики
Spring дает кучу метрик из коробки (CPU, Memory, HTTP requests). Но бизнесу нужны свои цифры.
Создать их легко через
Теперь в Grafana вы увидите график "Заказов в секунду".
🔥 Итог
1. Actuator открывает "дверь" (
2. Prometheus заходит в эту дверь каждые 15 секунд и забирает цифры.
3. Grafana рисует графики на основе этих цифр и будит вас ночью, если всё сломалось.
#DevOps #Monitoring #Prometheus #Grafana #SpringBoot
📲 Мы в MAX
👉@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 и превращает скучные цифры в космолет.
Вы можете создать дашборды для всего:
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
📲 Мы в MAX
👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2