Превью статьи
DevOps
Мониторинг
13 сентября 2024
12 минут

Как системно и эффективно построить мониторинг

Разбираем, как системно и эффективно построить мониторинг: от целей и задач до методологий сбора метрик.

Евгений Гурин avatar

Евгений Гурин

Full-Stack разработчик и DevOps с 6-ти летним опытом

Мониторинг — неотъемлемая часть сферы DevOps, которая позволяет компаниям отслеживать и оценивать состояние программных продуктов.

Построение системного мониторинга — это не просто внедрение Prometheus или Grafana. Это процесс, охватывающий определение целей, выбор методологий сбора метрик, постановку задач, разработку процессов алертинга и интеграцию мониторинга в культуру командной работы.

Попробую тут разобрать основные моменты и идеи по процессу настройки мониторинга. Тут без конкретных инструментов, о них будет в отдельной статье.

Любая минута простоя приложения, сбой в сети или неэффективная работа инфраструктуры ведут к потерям — финансовым, репутационным, организационным. Хотите чтобы коллеги вас уважали — настраивайте с умом.

Что такое мониторинг

Мониторинг — это непрерывный процесс сбора и анализа данных о работе систем, приложений, инфраструктуры и бизнес-процессов. Его цель — вовремя выявлять сбои и угрозы, отражать динамику изменений и помогать предотвращать критические проблемы.

Он является ключевой частью DevOps и SRE, помогая обеспечивать доступность, надёжность и предсказуемость сервисов.

SRE (Site Reliability Engineering) — это инженерный подход, разработанный в Google, который сочетает в себе методы разработки программного обеспечения с задачами ИТ-операций для обеспечения высокой надежности и бесперебойной работы программных сервисов.

Шаги мониторинга

Мониторинг и обработка его результатов обычно включают несколько этапов:

  1. Сбор данных — фиксация метрик, логов, трассировок и бизнес-показателей.
  2. Анализ — агрегация, выявление трендов и аномалий, сравнение с эталонами.
  3. Оценка состояния — определение, соответствует ли система целям (норма, предупреждение, инцидент).
  4. Обеспечение надёжности — автоматические реакции, алерты и действия для сохранения доступности.
  5. Подтверждение — проверка восстановления, анализ инцидента и корректировка мониторинга.

Это замкнутый цикл, позволяющий не только фиксировать проблемы, но и повышать устойчивость системы в целом.

Метрика — числовой показатель, отражающий состояние системы (например, загрузка CPU, время отклика API или количество успешных транзакций).

Алертинг — информирование о выходе метрик за установленные пределы, а также о сбоях. Алерт в таком случае — само уведомление.

Цели мониторинга

Обеспечение высокой доступности

Высокая доступность (High Availability, HA) — это свойство системы или сервиса оставаться доступным и работоспособным максимально возможное время, даже при возникновении сбоев или отказов отдельных компонентов.

Для обеспечения этой самой высокой доступности есть ряд принципов проектирования системы и набор методов, направленных на обеспечение непрерывной работы и доступности определенной системы.

C точки зрения бизнеса основное значение имеют такие параметры:

  • минимизация риска системных сбоев
  • доступность для пользователей при неожиданных отключениях или аппаратных сбоях

Для достижения высокой доступности мониторинг — первый шаг, так как позволяет заметить проблемы в принципе и принять необходимые меры.

Компоненты высокой доступности

Вот небольшая схема, которая объединяет несколько направлений, которые вместе обеспечивают непрерывную работу системы.

  1. Проектирование системы
  • Архитектурные решения — выбор архитектуры, которая поддерживает масштабируемость и отказоустойчивость. Это к счастью не на плечах девопсов, тут всё на совести разработчиков.
  • Механизмы резервирования — дублирование критически важных компонентов: серверов, баз данных, сетевого оборудования. В целом большинство механизмов отказоустойчивости сводится к обеспечению возможности масштабирования и к дублированию точек отказа
  • Возможность отката системы — если проблема возникнет. в новой версии нужно как минимум заранее заложить способ отката к предыдущей. По опыту не в каждой системе это вообще предусмотрено.
  1. Управление рисками
  • Анализ потенциальных сбоев — выявление уязвимых мест и сценариев отказов. Тут аналитическая работа, поиск уязвимых мест и анализ собранных метрик. Например если видно постоянно сотни зависших транзакций в БД, то возможно с системой что-то не так.
  • Стратегии снижения последствий — меры, уменьшающие ущерб от инцидентов (например, географическое распределение, репликация данных). Если инцидент случится, нужно иметь план действий для скорейшего восстановления работоспособности системы.
  1. Методы обеспечения надежности
  • Стратегии мониторинга — постоянное наблюдение за системой для быстрого обнаружения проблем.
  • Протоколы обслуживания — регламенты обновлений, резервного копирования и тестирования, чтобы исключить простои. На этом этапе стоит написать подробные инструкции и чеклисты.
  1. Обработка сбоев. К сожалению сбой в какой-то момент всё же случится
  • Стратегии переключения на резервный план — механизмы failover, балансировщики нагрузки, автоматическое переключение. Либо восстанавливаем работу серверов вручную, в разных компаниях происходит по-разному.
  • Протоколы восстановления — инструкции по возврату системы в рабочее состояние после сбоя (Disaster Recovery Plan).

Ключевые метрики для оценки качества

1. Время обнаружения (TTD — Time to Detect)

Время между моментом возникновения сбоя и моментом его обнаружения.

В идеале система сама сообщает об ошибке до того, как пользователи её заметят.

2. Время устранения неполадок (TTM — Time to Mitigate / Troubleshoot)

Время, за которое команда идентифицирует причину сбоя и применяет временное или постоянное решение, уменьшающее влияние проблемы.

Как минимизировать TTM:

  • чёткие инструкции (playbooks, runbooks) для типовых инцидентов;
  • автоматизация устранения (self-healing системы, auto-scaling, автоматический failover);
  • изоляция проблемных компонентов (circuit breaker, feature flag, выключение части функционала);
  • хорошо отлаженные процедуры эскалации (кто и за что отвечает).

За счёт автоматизации устранение неполадок занимает секунды/минуты, а не часы.

3. Время восстановления системы (TTR — Time to Recover / Repair)

Время, которое требуется, чтобы вернуть систему в нормальное рабочее состояние после сбоя.

Это прямая метрика, по которой бизнес оценивает надёжность IT — чем дольше восстановление, тем больше простои и убытки.

Как минимизировать TTR:

  • резервные копии и репликация (базы данных, файловые хранилища, конфигурации);
  • стратегии Disaster Recovery (DRP) и регулярные учения;
  • автоматический rollback релизов при сбоях;
  • инфраструктура как код (Terraform, Ansible, Kubernetes) для быстрой переустановки сервисов;
  • использование "горячих" или "тёплых" резервов (standby-серверы, кластеры).

В идеале при сбое пользователи даже не замечают переключения на резервную систему (Recovery = секунды).

4. Взаимосвязь TTD, TTM и TTR

  • TTD отвечает за скорость реакции — узнали ли мы вовремя?
  • TTM отвечает за эффективность устранения — быстро ли локализовали и сняли проблему?
  • TTR отвечает за восстановление — как скоро всё снова работает в полном объёме?

Все три метрики вместе формируют показатель MTTR (Mean Time To Recovery), который отражает общую устойчивость системы.

Отслеживание сбоев и инцидентов

Мониторинг позволяет видеть инциденты не постфактум, а в реальном времени. Это снижает среднее время восстановления (MTTR) и повышает устойчивость системы.

В данной задачи наиболее важно корректно настроить алертинг, чтобы не вызывать огромный поток спама, об этом далее.

Оценка экспериментальных результатов

Оценка экспериментальных результатов

При внедрении новых функций или архитектурных изменений мониторинг позволяет оценить, улучшилось ли поведение системы. Например, снизилась ли латентность API после оптимизации базы данных или внедрения кэша.

Цель — проверка различных гипотез в процессе развития продукта. Например:

  • улучшит ли новая конфигурация базы данных производительность,
  • увеличит ли новая версия API стабильность,
  • повысит ли редизайн кнопки «Купить» конверсию.

Мониторинг здесь нужен, чтобы:

  1. Измерить влияние изменений на систему или бизнес-метрики;
  2. Выявить негативные эффекты (например, ускорение работы одного модуля вызвало рост нагрузки на другой);
  3. Сравнить результаты с базовыми значениями (что было «до» и что стало «после»);
  4. Принять решение — оставить изменения, доработать или откатить.

Примеры метрик для оценки экспериментов

  1. Технические
    • время ответа сервисов (latency p95/p99);
    • частота ошибок (HTTP 5xx, SQL-ошибки);
    • использование ресурсов (CPU, RAM, disk IO).
  2. Бизнес-метрики
    • конверсии (регистрация, покупка, клик по кнопке);
    • удержание пользователей (retention);
    • средний чек или выручка на пользователя.
  3. Операционные
    • MTTR (время восстановления после сбоев);
    • количество инцидентов в период эксперимента;
    • нагрузка на команду (сколько ручных вмешательств потребовалось).

A/B-тестирование как часть мониторинга

Одно из основных применений мориторинга для проверки экспериментов — это A/B-тесты. Метод проверки гипотез, когда пользователи случайным образом делятся на группы:

  • Группа А — контрольная (работает со старой версией системы/функции);
  • Группа B — экспериментальная (получает новую версию).

Например:

  • новая функция кеширования → проверяем, снизилась ли задержка API;
  • новый UI корзины → измеряем рост числа завершённых покупок;
  • альтернативный алгоритм балансировки нагрузки → смотрим на стабильность сервисов.

Как мониторинг интегрируется с экспериментами

  1. Dashboards для сравнения Визуализация ключевых метрик для группы A и группы B в реальном времени (например, Grafana или DataDog).
  2. Алертинг в период эксперимента Если в группе B резко растёт количество ошибок или падает конверсия, эксперимент автоматически останавливается.
  3. Аналитика после экспериментов После завершения A/B-теста сохраняются результаты: какой вариант показал себя лучше, какие были побочные эффекты.

Польза от мониторинга в экспериментах

  • помогает безопасно внедрять новые функции;
  • минимизирует риск внедрения изменений, которые ухудшают продукт;
  • даёт прозрачность: видно, что изменения действительно приносят пользу;
  • ускоряет принятие решений на основе фактов, а не предположений.

Задачи мониторинга: Улучшение процессов

Задачи мониторинга

Сокращение времени простоя

Благодаря автоматическому оповещению о проблемах и точным метрикам можно оперативно реагировать на инциденты, сокращая как MTTR, так и общее время простоя.

Раннее обнаружение проблем на тестировании

Мониторинг стоит внедрять не только в продакшене, но и в тестовых окружениях. Это позволяет выявлять различные проблемы релиза, (например утечки памяти, ошибки в конфигурациях или проблемы с масштабированием) ещё до развертывания на основное окружение.

Также есть смысл использовать мониторинг в процессе нагрузочного тестирования. Типовой сценарий нагрузки и сбор метрик в процессе позволяет отследить исторические изменения и оценивать тенденции производительности продукта.

Улучшение безопасности и производительности

Анализ аномалий помогает не только находить технические баги, но и обнаруживать подозрительную активность (например, резкий рост трафика на определённом порту).

Автоматизация для совместной работы

Мониторинг интегрируется с системами CI/CD и управления инцидентами. Это позволяет автоматически открывать тикеты, привлекать нужных специалистов и связывать данные между инструментами.

Повышение видимости и прозрачности

Мониторинг делает систему «прозрачной» как для инженеров, так и для менеджеров. DevOps-команды получают детальные метрики, а бизнес — сводные отчёты в виде дашбордов.

Особенно это актуально при изучении инцидентов. Проверка системы мониторинга в момент инцидента — один из основных способов поиска причины возникших проблем.

Что и как мониторить?

В целом выбор метрик во многом не ограничен и есть смысл выбирать под ваши задачи

Мониторинг инфраструктуры

Инфраструктура

Здесь предполагается мониторить показатели железа, виртуальных машин и прочего оборудования. Из минимума обычно самое важное следующее:

  • Устройство онлайн
  • Загрузка CPU, RAM, сетевых интерфейсов
  • Свободное место на дисках
  • Запуск и остановка виртуальных машин
  • Состояние RAID-массивов
  • Использование виртуальных ресурсов
  • Чтение-запись на диск

Мониторинг приложений

Приложения

Тут мониторим уже показатели прикладных систем. Позволяет получить представление о том как работают развернутые приложения.

Внимание стоит уделить как самому разрабатываемому продукту, так и инфраструктурному ПО, различным базам данных, которые используются приложением.

Веб-Приложение:

  • Время отклика API (среднее и максимальное)
  • Время обработки запроса (среднее и максимальное)
  • Количество ошибок (HTTP 4xx, 5xx)
  • Логика работы критических функций
  • Активность пользователей (регистрация, входы и прочее)
  • Количество запросов, RPS (Requests Per Second), также агрегация по минутам, часам

Базы данных:

  • Количество открытых соединений и транзакций
  • Количество записей
  • Загрузка по памяти
  • Блокировки таблиц
  • Соотношение операций чтения-записи

Кеши:

  • Количество, процентное соотношение попаданий и промахов
  • Время жизни записей
  • Throughput — количество операций чтения/записи за единицу времени

Мониторинг сетей

Сети

  • Пропускная способность
  • Задержки и потери пакетов
  • Состояние балансировщиков
  • Региональная доступность. Также крайне полезная метрика для распределенных систем, однако тут нужны агенты проверка доступности в разных регионах

Мониторинг бизнес метрик

Бизнес-метрики

Наиболее привязанные к бизнес задачам метрики. Такие метрики позволяют привязать действия пользователей к прибыли компании и оценивать конверсию.

  • Количество заказов, регистраций
  • Время обработки транзакций
  • Уровень отказов пользователей
  • Процент пользователей, дошедших до различных этапов
    • регистрация
    • заполнение формы
    • оплата
  • Использование услуг (частота, типы услуг)

Мониторинг команд

Команды DevOps

Метрики, отслеживающие работу команды и помогающие оценить процесс и качество работы

  • Время развертывания на окружение
  • Среднее время от задачи до релиза. Эта метрика обычно очень нравится менеджерам, однако к реальному выполнению задач не всегда имеет отношение
  • Частота релизов
  • Время реакции на инциденты
  • Количество ошибок при развертывании
  • Время отката системы

События

Наиболее комплексная часть сбора метрик. Допустим все виды метрик уже внедрены и теперь вы знаете всё, что происходит в системе. Однако вы всё ещё можете не знать почему это происходит.

Предположим, известна конверсия из зарегистрированного пользователя в оплатившего — 1%. Получается из 100 человек оплачивает услуги только один.

Если при этом пользователю нужно пройти 30 экранов и сделать десятки кликов, то сценарий оплаты работает неправильно и нужно срочно его менять!

Для понимания причинно-следственной связи нужно писать еще один тип метрик — события, которые генерируют пользователи и разные компоненты системы.

События:

  • Попадание на экран
  • Клик
  • Скролл до конца

Методологии сбора метрик

Методологии сбора метрик

RED (Rate, Errors, Duration)

Методология RED ориентирована на мониторинг пользовательских сервисов и прикладного уровня. Она особенно полезна для микросервисной архитектуры и веб-приложений.

Основные метрики:

  1. Rate (частота запросов)
    сколько запросов получает система в секунду;
    помогает понять нагрузку на сервис.
    Пример: 500 RPS (requests per second).
  2. Errors (количество ошибок)
    сколько запросов завершились ошибкой;
    важно отслеживать как абсолютное значение, так и процент от общего числа.
    Пример: 1% запросов возвращают 500 Internal Server Error.
  3. Duration (время обработки запросов)
    латентность: насколько быстро система отвечает пользователям;
    ключевой фактор для UX.
    Пример: 95-й перцентиль времени ответа = 300 мс.

Позволяет быстро понять: отвечает ли сервис вообще, насколько часто падает и насколько он быстрый.

USE (Utilization, Saturation, Errors)

Методология USE применяется для низкоуровневого мониторинга ресурсов — серверов, железа, системных компонентов.

Основные метрики:

  1. Utilization (использование)
    процент времени, когда ресурс занят.
    Пример: CPU 85%, диск занят 70%.
  2. Saturation (насыщение)
    насколько ресурс перегружен, есть ли очереди задач.
    Пример: очередь из 200 операций записи на диск.
  3. Errors (ошибки)
    количество аппаратных или системных ошибок.
    Пример: сбои в сети, ошибки чтения с диска, packet drops.

USE полезен для диагностики bottleneck’ов и оптимизации инфраструктуры: помогает находить точки перегрузки и узкие места.

LTES (Latency, Traffic, Errors, Saturation)

Методология LTES — это адаптация идей RED + USE, более широкая и универсальная.

Основные метрики:

  1. Latency (задержка)
    время ответа системы на запрос.
    Пример: медиана = 150 мс, 99-й перцентиль = 1.2 с.
  2. Traffic (трафик)
    объём нагрузки, которую получает система.
    Пример: 10 000 HTTP-запросов/мин, 1 Гбит/с сетевого трафика.
  3. Errors (ошибки)
    количество или доля запросов, завершившихся сбоем.
    Пример: 0.5% запросов возвращают 502 Bad Gateway.
  4. Saturation (насыщение)
    насколько близко система к пределам.
    Пример: 90% использования пула соединений к БД.

LTES удобен как универсальная модель, потому что сочетает мониторинг и приложений, и инфраструктуры.

Как выбрать методологию

Выбор методологии

Если кратко:

  • Для инфраструктуры → USE
  • Для приложений и API → RED
  • Для смешанных сценариев → LTES
  • В реальности часто комбинируют методики, подстраивая их под контекст бизнеса.

Подробно. Факторы выбора методологии:

  1. Тип системы
  • Инфраструктурные ресурсы (серверы, диски, сеть, CPU, память) → больше подходит USE, так как он сфокусирован на аппаратных ресурсах и системных ограничениях.
  • Прикладные сервисы, API, микросервисы → лучше использовать RED, так как он показывает то, что видит конечный пользователь: скорость, стабильность и ошибки.
  • Гибридные системы (инфраструктура + приложения + бизнес-метрики) → логично брать LTES, так как она объединяет подходы и учитывает разные уровни стека.
  1. Цель мониторинга
  • Поиск узких местUSE (показывает, где перегружен CPU, сеть или диск).
  • Контроль качества сервиса для пользователейRED (важно время ответа, ошибки и частота запросов).
  • Комплексное наблюдение, DevOps/SRE-практикиLTES (даёт баланс между ресурсами, производительностью и пользовательским опытом).

Заключение

Эффективный мониторинг — это основа отслеживание состояния систем. Он объединяет инфраструктуру, приложения и бизнес-метрики в единую систему, которая позволяет не просто реагировать на сбои, но и предугадывать их.

Системный подход к мониторингу строится на трёх принципах:

  1. Прозрачность — вся команда видит, что происходит.
  2. Предсказуемость — метрики позволяют находить тренды и предотвращать сбои.
  3. Интеграция — мониторинг становится частью CI/CD и процессов управления инцидентами.

Не менее важным является информирование о сбоях и выставление алертинга, об этом будет уже в отдельной статье.

Обсудить проект

Опишите вашу задачу, мы проведём исследование и ответим вам как можно скорее.

С радостью проконсультируем вас любым из доступных способов.

Оставляя заявку, вы соглашаетесь с политикой обработки данных