Урок 7 из 8 · 20 мин · обновлено
Мониторинг и логи: Prometheus, Grafana, оповещения
Как узнать о проблеме раньше пользователей: метрики и логи, четыре золотых сигнала, связка Prometheus и Grafana, правила оповещений и почему лишние тревоги вредны.
Узнать раньше пользователей
Худший способ узнать о сбое — от покупателя, который не смог оплатить заказ. В «Чайной лавке» так и было: сайт тормозил полдня, а команда узнала об этом из отзывов.
Мониторинг — постоянное наблюдение за сервисом, чтобы проблему заметила система, а не пользователь. Он отвечает на два вопроса: «всё ли сейчас в порядке?» и «что случилось?», если не в порядке.
Метрики и логи
| Метрики | Логи | |
|---|---|---|
| Что это | Числа во времени | Записи о событиях |
| Пример | 120 запросов в секунду, 2% ошибок | POST /checkout 500 Database timeout |
| Отвечают на вопрос | Что происходит и насколько плохо? | Почему это происходит? |
| Инструменты | Prometheus, Grafana | Системы сбора логов, например Loki или Elasticsearch |
Обычно по метрикам замечают проблему, а по логам находят её причину.
Четыре золотых сигнала
Если метрик сотни, с чего начать? Инженеры, которые строили большие сервисы, советуют смотреть на четыре золотых сигнала:
- Задержка — сколько времени занимает ответ. Страница заказа открывается за 0,3 секунды или за 5?
- Трафик — сколько запросов приходит. Резкий рост — распродажа или атака, резкое падение — что-то сломалось.
- Ошибки — какая доля запросов завершается неудачей.
- Насыщенность — насколько загружены ресурсы: процессор, память, диск. Диск заполнен на 95% — скоро всё остановится.
Prometheus и Grafana
Самая распространённая связка для метрик:
- Prometheus регулярно опрашивает приложения и серверы, собирает метрики и хранит их;
- Grafana строит по ним графики и дашборды — экраны с главными показателями сервиса.
Prometheus понимает запросы на своём языке. Например, доля ошибок сайта за последние 5 минут:
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))
На дашборде «Чайной лавки» — четыре графика по золотым сигналам и отдельно — число оплаченных заказов в час. Последний график понятен даже владелице: если он упал до нуля в рабочее время, что-то точно не так.
Оповещения
Смотреть на графики круглосуточно никто не будет. Поэтому настраивают оповещения: при выполнении условия система присылает сообщение дежурному. Пример правила для Prometheus:
groups:
- name: shop
rules:
- alert: ManyErrors
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "Больше 5% запросов к сайту завершаются ошибкой"
Тревога сработает, если доля ошибок больше 5% пять минут подряд — for: 5m отсеивает короткие случайные всплески.
Главное правило оповещений: каждое должно требовать действия. Если тревоги приходят по десять раз в день и ничего не значат, команда начнёт их игнорировать — и пропустит настоящую. Настройка мониторинга — это постоянная работа по удалению лишнего шума.
Попробуйте сами. Придумайте три оповещения для «Чайной лавки», которые действительно требуют реакции, и одно, которое лучше показывать только на дашборде.
Пример ответа
Оповещения:
- Сайт не отвечает на проверку дольше 2 минут.
- Больше 5% запросов к оформлению заказа завершаются ошибкой 5 минут подряд.
- Диск на сервере базы данных заполнен больше чем на 90%.
Только на дашборде: загрузка процессора 70%. Это нормальная работа под нагрузкой, а не авария. Если она начнёт мешать пользователям, это покажут задержка и ошибки.
Мини-тест · 4 вопроса
Проверьте себя
Выберите вариант, который кажется вам правильным. В конце вы увидите свой результат и объяснение к каждому вопросу.
-
Чем метрики отличаются от логов?
Метрика показывает, что «ошибок стало 5% вместо 0,1%». Логи помогают понять, какие именно запросы падают и почему.
-
Что из этого — один из четырёх золотых сигналов?
Четыре сигнала — задержка, трафик, ошибки и насыщенность. Они быстро показывают, здоров ли сервис.
-
Для чего обычно используют Grafana?
Prometheus собирает и хранит метрики, а Grafana строит по ним наглядные графики.
-
Почему вредно настроить оповещения на всё подряд?
Каждая тревога должна означать: «нужно что-то сделать». Иначе важное сообщение утонет среди сотни ненужных.