Проверка доступности ничего не показывает
Мониторинг ограничен пингом раз в пять минут: он видит, что сайт лежит, но не замечает, что 40% заказов не проходит из-за ошибок на шаге оплаты при полностью доступной главной.
Выберите тему — соберём контекст
Собираем метрики, централизуем логи и добавляем сквозной трейсинг. Настраиваем алерты, которые означают реальный сбой, а не шум, и прикладываем к каждому из них порядок действий.
Или сразу: +7 (962) 368-39-51 Telegram
Формально мониторинг есть почти всегда. Проблема в том, что он отвечает не на те вопросы, которые возникают во время инцидента.
Мониторинг ограничен пингом раз в пять минут: он видит, что сайт лежит, но не замечает, что 40% заказов не проходит из-за ошибок на шаге оплаты при полностью доступной главной.
У каждого сервера свои файлы, форматы разные, срок хранения не определён. Разбор инцидента превращается в последовательность ssh и grep, а после перезапуска контейнера логи исчезают вовсе.
Двести уведомлений в сутки на всё подряд, включая временные всплески CPU. Дежурный перестаёт реагировать, и настоящее падение теряется среди шума.
Известна загрузка процессора, но неизвестно, сколько занимает запрос к каталогу, какая доля ошибок 5xx и как растёт очередь. Объяснить вчерашние тормоза нечем.
Без трейсинга невозможно определить, добавила ли две секунды ваша база, внешний платёжный шлюз или воркер очереди. Гипотезы проверяются вслепую.
В тело запроса пишутся телефоны, адреса и токены авторизации, а срок хранения логов не определён. Это одновременно и риск утечки, и вопрос к соответствию требованиям по персональным данным.
Три уровня дополняют друг друга: метрики показывают, что сломалось, логи — что именно произошло, трейсы — где потерялось время.
Собираем показатели инфраструктуры и приложения и сводим их в дашборды, по которым действительно можно вести инцидент.
Логи собираются в одном месте, приводятся к структурному виду и становятся пригодными для поиска, а не только для чтения глазами.
Сквозной трейс показывает путь запроса через сервисы, очереди и базы — и сразу отвечает на вопрос, где именно потрачено время.
Алерт — это не «CPU выше 70%», а «пользователи не могут оформить заказ». К каждому прилагается порядок действий.
От минимального работающего набора к полной картине. Метрики и алерты по ключевым сценариям появляются в первую неделю.
Определяем, какие сценарии критичны для бизнеса, как они измеряются и какие отказы должны поднимать дежурного. Фиксируем целевые показатели.
Разворачиваем Prometheus и экспортёры, добавляем метрики приложения, собираем первые дашборды и синтетические проверки ключевых сценариев.
Настраиваем сбор логов с маскированием данных и политикой хранения, подключаем OpenTelemetry и связываем трейсы с логами и метриками.
Настраиваем маршрутизацию уведомлений, убираем шум, пишем инструкции на каждый алерт, проводим разбор реальных срабатываний и корректируем пороги.
Три инструмента наблюдаемости стоят разного и отвечают на разные вопросы. Метрики — это числа, которые дешёво хранить годами: они показывают, что поведение системы изменилось, и служат основой для алертов. Логи — детальные записи о событиях: они дороже в хранении, зато позволяют восстановить точную последовательность действий при разборе инцидента. Трейсы — путь одного запроса через все сервисы: они отвечают на вопрос «где именно потерялось время».
На практике мы опираемся на две проверенные системы показателей. Для инфраструктуры — USE: загрузка (utilization), насыщение (saturation), ошибки (errors) по каждому ресурсу. Для сервисов — RED: частота запросов (rate), ошибки (errors), длительность (duration). Если эти метрики собираются по ключевым сценариям, большинство инцидентов обнаруживается до обращений пользователей.
Шумные алерты опаснее их отсутствия: команда привыкает игнорировать уведомления, и настоящее падение проходит незамеченным. Главная причина шума — алерты по причинам вместо симптомов. Загрузка процессора на 85% сама по себе не проблема, если запросы обслуживаются за обычное время.
Мы ставим уведомления на пользовательские симптомы: рост доли ошибок, превышение времени ответа, снижение числа успешных заказов, исчерпание error budget. Дополнительно настраиваем уровни: критичное будит дежурного, предупреждения копятся и разбираются в рабочее время, а связанные уведомления подавляются на время активного инцидента. У каждого алерта есть владелец и инструкция: что проверить, что сделать, кого позвать. Пороги пересматриваются после каждого разбора — это и есть способ поддерживать сигнал чистым.
Хранение всех логов «на всякий случай» быстро становится одной из самых дорогих статей инфраструктурных расходов: объём растёт вместе с трафиком, а полезность большинства записей исчерпывается в первые дни. Мы разделяем данные по ценности: горячее хранилище на 14–30 дней для оперативного разбора, тёплое — на 3–6 месяцев для расследований, дальше — выборочная архивная выгрузка значимых событий.
Отдельный обязательный шаг — работа с персональными данными. Телефоны, адреса, номера документов и токены авторизации не должны попадать в логи в открытом виде: маскируем их на этапе сбора, ограничиваем доступ к хранилищу ролями и фиксируем сроки хранения в политике. Такой порядок снимает большую часть вопросов при проверках и одновременно уменьшает объём хранимых данных.
Зависит от требований к размещению данных и от готовности команды эксплуатировать хранилища. Собственный контур на Prometheus, Loki и Grafana даёт полный контроль и предсказуемые расходы на инфраструктуру, но требует сопровождения, места на дисках и обновлений. Облачные сервисы снимают эксплуатацию и быстро масштабируются, но данные уходят наружу, а счёт растёт вместе с объёмом метрик и логов. Мы считаем оба варианта под ваш профиль нагрузки.
Логи отвечают на вопрос «что произошло», но плохо отвечают на вопрос «где потерялось время», когда запрос проходит несколько сервисов, очередей и внешних API. Трейсинг показывает длительность каждого шага и позволяет сразу увидеть, что, например, две секунды добавил вызов платёжного шлюза, а не запрос к базе. Мы внедряем OpenTelemetry постепенно: сначала на критичных сценариях, где такие вопросы возникают чаще всего.
Для проекта среднего размера с десятком сервисов достаточно выделенного узла с 4–8 ядрами, 16 ГБ памяти и SSD-диском: Prometheus с разумным retention, Loki для логов и Grafana живут на одной машине. Основной потребитель — хранилище метрик и логов, поэтому важнее не процессор, а диск и настроенные правила хранения. Точные цифры мы считаем после оценки объёма метрик, числа сервисов и требуемого срока хранения.
Базовая версия — метрики узлов и приложения, дашборд ключевого сценария и три-четыре алерта на симптомы — настраивается за одну-две недели и уже закрывает большую часть задач дежурства. Логи с централизованным поиском и трейсинг добавляются следующими этапами. Мы сознательно идём в таком порядке: сначала то, что уменьшает время обнаружения, затем то, что уменьшает время разбора.
Смежные задачи, которые обычно решаются в одном проекте с этой.
Расскажите, что уже собирается и какие сценарии критичны, — предложим минимальный набор метрик и алертов.
Cookie и аналитика
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie (Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия — от него можно отказаться. Подробнее: Политика использования cookie и обработка персональных данных.