Есть ли метрики и алерты для обнаружения проблем?
Что проверяют
Хотят понять, отвечали ли вы за сервис после релиза или только писали код. Интересно не «у нас была Grafana», а какие сигналы вы собирали и что делали, когда алерт срабатывал. Следом часто спрашивают, как вы узнали о последнем инциденте: от мониторинга или от пользователей.
Как отвечать
Опирайтесь на свой проект, со своими метриками и реальным случаем. Каркас:
- что собирали: для сервиса схема RED: частота запросов, доля ошибок, длительность. Для ресурсов USE: загрузка, насыщение, ошибки. Плюс бизнес-метрики: заказы в минуту, длина очереди Celery, упавшие задачи;
- как в Python:
prometheus_clientс типамиCounter,Gauge,Histogram, эндпоинт/metricsили готовый экспортер для фреймворка. Под gunicorn с несколькими воркерами нужен мультипроцессный режим через переменнуюPROMETHEUS_MULTIPROC_DIR, иначе каждый воркер отдаёт свои цифры. Всё чаще вместо этого ставят OpenTelemetry SDK, а исключения уходят в Sentry; - задержка перцентилями: p95 и p99 из гистограммы, среднее прячет хвост;
- алерты: правила Prometheus с
for: 5m, чтобы не будить людей из-за одного всплеска, маршрутизация и заглушение в Alertmanager или алерты в Grafana. Хороший алерт срабатывает на симптом, который видит пользователь (рост 5xx, быстрое выгорание бюджета ошибок по SLO), и ведёт на runbook с первыми шагами.
Закончите историей: что сработало, сколько заняло обнаружение, что поменяли после разбора. Если своего мониторинга не было, скажите прямо, опишите, как узнавали о проблемах (логи, жалобы), и что настроили бы первым: метрики RED, алерт на 5xx и Sentry.
Где спотыкаются
Перечисляют инструменты без содержания. «Prometheus, Grafana, ELK» не отвечает на вопрос, какие метрики и какие пороги.
Алертят на причины вроде загрузки CPU выше порога. Такой алерт шумит, его перестают читать, и реальный инцидент тонет вместе с ним.
Кладут в лейблы user_id, полный URL или текст ошибки. Кардинальность взрывается, и Prometheus начинает тормозить или падать по памяти. Лейблы должны иметь ограниченный набор значений: шаблон маршрута, метод, код ответа.