Эксплуатация и DevOps · 5 минут
Наблюдаемость продукта: что мониторить, чтобы бизнес узнавал о проблеме первым
Понятный план observability для веб-сервиса и внутренних систем: метрики, логи, трассировка, алерты, резервное восстановление и ответственность команды.
Мониторинг начинается с критичного пути
Не нужно измерять всё одинаково. Определите действия, остановка которых сразу влияет на деньги или работу: вход, заказ, платёж, заявка, синхронизация или выпуск документа.
Для каждого пути зафиксируйте ожидаемое время, допустимую долю ошибок и владельца реакции.
Три слоя наблюдаемости
Метрики показывают масштаб проблемы, логи объясняют событие, а трассировка связывает запрос между сервисами. Вместе они сокращают путь от «что-то медленно» до конкретной причины.
Собирайте идентификатор операции и корреляцию, но не отправляйте в логи лишние персональные данные.
Алерт должен приводить к действию
Сигнал без инструкции быстро превращается в шум. Для каждого алерта укажите порог, канал, ответственного и первую проверку: откатить релиз, включить резервный путь или восстановить очередь.
Разделяйте предупреждение и инцидент. Ночной звонок должен означать реальный риск для пользователей.
Восстановление — часть мониторинга
Резервная копия сама по себе не гарантирует восстановление. Периодически проверяйте, сколько занимает возврат данных, какие секреты нужны и что увидит пользователь во время деградации.
После инцидента обновляйте runbook и добавляйте измерение, которое поможет заметить повтор раньше.
Мониторинг начинается с критичного пути пользователя
Не нужно одинаково измерять каждый endpoint. Выберите операции, где ошибка влияет на деньги или работу: вход, заказ, платёж, синхронизация, публикация документа. Для каждой задайте ожидаемое время, допустимую ошибку и владельца.
Связывайте технический сигнал с бизнес-контекстом через operation ID и понятные названия метрик. Рост очереди важен не сам по себе, а потому что заявки перестают обрабатываться вовремя.
Алерт должен приводить к действию
У каждого сигнала должны быть порог, канал, ответственный и первая проверка. Если после уведомления команда открывает десятки графиков без runbook, алерт превращается в шум.
Разделяйте предупреждение, деградацию и инцидент. Ночная страница должна означать реальный риск для пользователя, а не любое изменение нагрузки.
Восстановление проверяется до инцидента
Проведите controlled failure: остановите воркер, отключите зависимость, заполните очередь или восстановите копию в тестовом окружении. Измерьте время обнаружения, восстановления и потери данных.
После каждого инцидента обновляйте runbook и добавляйте сигнал, который обнаружил бы проблему раньше. Наблюдаемость развивается вместе с системой.
Метрики должны отвечать на вопрос бизнеса
Вместо коллекции графиков сформулируйте вопросы: принимает ли система заявки, сколько длится подтверждение и не растёт ли очередь быстрее обработки. Для каждого вопроса выберите одну основную метрику и несколько диагностических.
Порог без контекста бесполезен. Сравнивайте значение с обычным диапазоном, временем суток и объёмом трафика, иначе команда будет реагировать на нормальный пик.
Логи и трассировка связывают уровни
Единый operation ID должен проходить через HTTP, очередь, воркер и запись в базу. Тогда инцидент можно расследовать от пользовательского действия до конкретной зависимости.
Не логируйте персональные данные и токены. Структурированный формат, уровни и срок хранения должны быть частью эксплуатационного стандарта.
Проверяйте алерты как продукт
Попросите другого инженера пройти runbook по одному уведомлению. Если действие или владелец неочевидны, сигнал ещё не готов.
Регулярно удаляйте неиспользуемые алерты и пересматривайте пороги после изменения архитектуры. Наблюдаемость должна уменьшать шум, а не накапливать его.
Наблюдаемость должна отвечать на вопрос бизнеса
Свяжите технический сигнал с эффектом: заявки не проходят, платежи ждут, сотрудники не видят документ. Такой контекст помогает выбрать приоритет и не тратить время на красивый график без действия.
Для каждой метрики запишите норму, порог и владельца. Если никто не знает, что делать после алерта, это пока не рабочая метрика.
Не смешивайте доступность и полезность
Сервис может отвечать 200, но сохранять неверный статус или отдавать устаревшие остатки. Добавьте синтетические проверки критичного пути и сверку бизнес-результата.
Сигналы должны быть безопасными: маскируйте персональные данные и ограничивайте доступ к трассировкам.
SLO связывает техническую цель с обещанием
Для критичного пути задайте доступность, задержку и допустимую долю ошибок за период. Это помогает решить, нужен ли ночной алерт или достаточно задачи в backlog. Без SLO команда спорит о графиках вместо влияния на пользователя.
Следите за очередями и возрастом работы
Для фоновых операций важна не только длина очереди, но и возраст самого старого сообщения. Рост возраста показывает, что бизнес уже ждёт результат, даже если сервис отвечает быстро. Добавьте алерт и безопасную процедуру повторной доставки.
Регулярно проверяйте, что алерты доходят
Тестовый сигнал должен пройти тот же канал, что и реальный инцидент. Раз в квартал проверяйте ротацию, права и контакты владельцев. Непроверенный pager создаёт ложное чувство готовности в самый дорогой момент.