Мониторинг - это не просто «сервер работает»

 

 

 

 

СОСТОЯНИЕ // OBSERVABILITY_INTRO

Иллюзия стабильности: почему зелёный мониторинг не гарантирует работу

Представим обычное утро.

  • › Сервер включён.
  • › Процесс работает.
  • › CPU загружен на 48%.
  • › Памяти достаточно.
  • › Диск доступен.
// STATUS: OK //
На панели мониторинга всё зелёное.

В этот же момент:

// ЗАДЕРЖКА //

пользователь нажимает кнопку «Сохранить» и ждёт ответа 15 секунд.

// ОШИБКА //

Другой пользователь вообще получает ошибку.

// ОЧЕРЕДЬ //

В очереди обработки накопились тысячи сообщений.

// БАЗА ДАННЫХ //

А база данных уже несколько минут работает на пределе по количеству соединений.

// ФОРМАЛЬНО //

Сервер работает.

// ФАКТИЧЕСКИ //

Система уже деградирует.

// МИССИЯ МОНИТОРИНГА //

Именно поэтому современный мониторинг — это не проверка того, включён ли сервер. Его задача значительно шире: понять, что происходит с системой, насколько она здорова, как меняется её состояние и начинает ли проблема влиять на пользователей.

В инженерии надёжности это обычно связывают с наблюдаемостью, метриками, логами, трассировкой и SLO. Причём важен не сам объём собранных данных, а способность использовать их для обнаружения и диагностики проблем.

 

 

УРОВНИ // INFRASTRUCTURE_VS_APP

Сервер может работать, а система — уже нет

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

На первый взгляд всё нормально:

Сервер
 ├── CPU          42%  ✓
 ├── RAM          58%  ✓
 ├── Disk         61%  ✓
 └── Network      34%  ✓

Но если посмотреть выше:

Приложение
 ├── HTTP 500       ↑
 ├── Latency        ↑↑
 ├── Timeout        ↑
 └── Requests       ↓

а ещё выше:

Бизнес-процесс
 ├── Заказы не создаются
 ├── Платежи задерживаются
 └── Пользователи получают ошибки
// АНАЛИЗ ИНЦИДЕНТА //

становится очевидно, что проблема уже существует. Просто она находится не на уровне сервера.

Это принципиально важный момент для корпоративных систем: мониторить нужно не только инфраструктуру, но и сервисы, зависимости и пользовательские сценарии.

 

 

АРХИТЕКТУРА // OBSERVABILITY_LEVELS

Что вообще должен показывать мониторинг

Условно систему можно наблюдать на нескольких уровнях.

ПОЛЬЗОВАТЕЛЬБизнес-функцияAPI / UIServiceQueueDBInfrastructureCPURAMNetwork
// АНАЛИЗ СВЯЗЕЙ //

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

Поэтому хороший мониторинг должен позволять ответить как минимум на четыре вопроса:

  • › Система доступна?
  • › Она работает нормально или уже деградирует?
  • › Где находится проблема?
  • › Влияет ли она на пользователей и бизнес-процесс?
// ОГРАНИЧЕНИЕ ПОДХОДА //

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

 

 

ТЕЛЕМЕТРИЯ // THREE_SOURCES_OF_TELEMETRY

Три основных источника информации: метрики, логи и трассировка

В современной инфраструктуре обычно используют несколько типов телеметрии.

Метрики

Метрика — числовое значение, которое можно наблюдать во времени. Например:

CPU = 72%
Memory = 81%
Requests/sec = 1 240
Error rate = 2.8%
Latency p95 = 840 ms
Queue depth = 14 500

Метрики хорошо подходят для понимания динамики. Например, одна цифра CPU = 85% сама по себе не всегда означает проблему. Но график показывает устойчивый рост нагрузки:

20% ──────╮ │ 40% ╰────╮ 60% ╰────╮ 80% ╰──────── время →

Логи

Лог содержит событие или подробную информацию о работе системы. Логи полезны для диагностики: Что именно произошло?

14:32:18 ERROR
PaymentService
Timeout calling Bank API
order_id=48217
duration=12.8s

Трассировка

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

BrowserAPI GatewayOrder ServiceCustomer ServiceDatabasePayment Service

Вместе эти источники дают значительно больше информации, чем любой из них по отдельности.

 

 

РЕСУРСЫ // CPU_LIMITATIONS

Почему одного CPU недостаточно

CPU — одна из самых известных метрик. Но высокий CPU не всегда означает проблему. И наоборот: нормальный CPU совершенно не гарантирует исправность приложения.

Например, сервис может ждать ответа от внешней системы:

// ПОКАЗАТЕЛЬ CPU //
15%
// ПОКАЗАТЕЛЬ ПАМЯТИ //
40%
// ВРЕМЯ ОТВЕТА //
18 секунд

Причина может находиться в:

  • › базе данных;
  • › внешнем API;
  • › очереди;
  • › сетевом соединении;
  • › блокировке;
  • › ограничении пула соединений;
  • › другом внутреннем сервисе.

Поэтому мониторинг должен смотреть не только на ресурсы, но и на результат работы системы.

 

 

БИЗНЕС // BUSINESS_METRICS

Самая полезная метрика — иногда не техническая

Представим интернет-магазин. Инфраструктура выглядит нормально:

CPU       45%
RAM       62%
Network   38%

Но бизнес-показатель «Создано заказов за минуту» показывает критическое падение:

1000 900 800 700 600 500 400 300 200 100 ──────────────── ↓ 12:40
// КРИТИЧЕСКИЙ СБОЙ //

Заказы почти перестали создаваться.

Если система умеет контролировать бизнес-метрики, проблему можно обнаружить значительно раньше, чем она проявится в виде полного отказа серверов.

Поэтому для критичных систем полезно мониторить не только:

// ТЕХНИЧЕСКИЙ ПОДХОД //

«работает ли сервис?»

// ФУНКЦИОНАЛЬНЫЙ ПОДХОД //

«выполняет ли он ту функцию, ради которой существует?»

 

 

СТАТУС // HEALTH_CHECK_LEVELS

Доступность и работоспособность — разные вещи

Можно проверить: GET /health → HTTP 200 и решить, что всё хорошо. Но health-check может проверять только то, что процесс приложения отвечает на HTTP-запрос.

При этом:

  • - база недоступна;
  • - очередь переполнена;
  • - внешний сервис не отвечает;
  • - определённая бизнес-операция сломана.
// ИЛЛЮЗИЯ СТАБИЛЬНОСТИ //
Сервис всё равно может вернуть:
200 OK.

Поэтому существуют разные уровни health-check.

LivenessПроцесс вообще жив?ReadinessСервис готов принимать нагрузку?Deep healthКритические зависимости работают?
// АРХИТЕКТУРНОЕ ОГРАНИЧЕНИЕ //

Но и глубокая проверка не должна превращаться в один гигантский запрос ко всем системам.

Health-механизмы должны соответствовать архитектуре и предназначению конкретного сервиса.

 

 

СТРАТЕГИЯ // PROACTIVE_DETECTION

Проблему нужно увидеть до пользователя

Это одна из главных целей мониторинга.

Представим динамику изменения показателей во времени:

// 12:00 //
Ошибки: 0.1%
Latency: 180 ms
// 12:10 //
Ошибки: 0.3%
Latency: 250 ms
// 12:20 //
Ошибки: 0.8%
Latency: 420 ms
// 12:30 //
Ошибки: 2.4%
Latency: 900 ms
// 12:35 [АВАРИЯ] //
Пользователи начали жаловаться
// ОГРАНИЧЕНИЕ ПОДХОДА //

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

// ПРОАКТИВНЫЙ АНАЛИЗ //

Если же система умеет определить, что показатели устойчиво ухудшаются, можно начать расследование раньше.

Именно такой подход превращает мониторинг из пассивного наблюдения в инструмент раннего обнаружения деградации.

 

 

ОПТИМИЗАЦИЯ // ALERT_NOISE_CONTROL

Не каждый сигнал должен превращаться в тревогу

Это очень важный принцип.

Допустим, система собирает 50 000 метрик. Из них 10 000 изменяются каждую минуту.

// ПОТОК ШУМА //

Если на каждое отклонение отправлять уведомление инженеру, получится не мониторинг, а поток шума.

Поэтому полезно разделять:

МетрикиНаблюдениеИнформацияТенденцияПредупреждениеКритический alert

Google SRE отдельно подчёркивает, что alert должен быть своевременным, связанным с реальным пользовательским воздействием и предполагающим конкретное действие. Слишком большое количество необязательных уведомлений приводит к alert fatigue — усталости от тревог.

 

 

РЕАГИРОВАНИЕ // QUALITY_ALERT_STRUCTURE

Хороший alert должен отвечать на вопрос «что делать?»

// ПЛОХОЕ УВЕДОМЛЕНИЕ //

CPU на сервере 91%.

И что теперь?

// ПОЛЕСНЫЙ ALERT //

API заказов: error rate выше SLO в течение 10 минут. Ошибки затрагивают 7,4% запросов. Рост начался после релиза версии 4.18. Требуется проверка.

Это уже рабочий сигнал.

При плохом уведомлении инженер должен самостоятельно выяснять:

  • - это нормально или нет;
  • - какой сервис затронут;
  • - есть ли влияние на пользователей;
  • - почему выросла нагрузка;
  • - насколько срочно нужно реагировать.

В идеале уведомление должно содержать:

  • › что произошло;
  • › когда началось;
  • › какой сервис затронут;
  • › насколько велико отклонение;
  • › какой пользовательский сценарий пострадал;
  • › ссылку на соответствующий dashboard;
  • › связанные логи;
  • › последние изменения;
  • › инструкцию или runbook, если она существует.

 

 

ПРАВИЛА // CPU_CONTEXT_RULE

Почему «CPU > 80%» — плохое универсальное правило

Представим сервер обработки данных.

Он стабильно работает на: 85–90% CPU. Но система спроектирована именно под такую нагрузку:

  • › Ошибок нет.
  • › Latency в норме.
  • › Очередь не растёт.
  • › Пользовательские операции выполняются нормально.
// ШТАТНЫЙ РЕЖИМ //

Само по себе значение 90% не обязательно требует вмешательства.

Теперь другой случай:

// ПОКАЗАТЕЛЬ РЕСУРСА //
CPU = 65%
// СИМПТОМЫ ДЕГРАДАЦИИ //
Latency       ↑
Timeouts     ↑
Queue        ↑↑
Errors       ↑
// ВЫВОД МОНИТОРИНГА //

Это уже гораздо более серьёзный сигнал.

Поэтому пороговые значения полезны, но их нельзя рассматривать отдельно от контекста.

 

 

АНАЛИЗ // CORRELATING_METRICS

Метрики лучше анализировать в связке

Один показатель редко рассказывает всю историю.

// СЦЕНАРИЙ 1 //
CPU ↑
+
Traffic ↑

может быть нормальным ростом нагрузки.

// СЦЕНАРИЙ 2 //
CPU ↑
Latency ↑
Errors ↑

уже выглядит иначе.

// КОРРЕЛЯЦИЯ С ДЕПЛОЕМ //
Latency ↑
Errors ↑
Queue ↑
Recent deployment = YES

Здесь появляется конкретное направление расследования.

Поэтому хороший monitoring должен позволять сопоставлять сигналы между собой.

 

 

АНАЛИЗ_ЛОГОВ // LOG_ANALYSIS_STRATEGY

Логи нужны не для того, чтобы человек их читал целый день

Иногда под мониторингом понимают огромный поток логов:

INFO
INFO
INFO
INFO
WARNING
INFO
INFO
ERROR
INFO
...
// ЧЕЛОВЕЧЕСКИЙ ФАКТОР //

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

В них должны быть структурированные поля:

  • › timestamp;
  • › service;
  • › level;
  • › request_id;
  • › trace_id;
  • › user_id;
  • › operation;
  • › duration;
  • › error_code;
  • › message.

Тогда можно быстро ответить:

  • › Сколько ошибок возникло?
  • › В каком сервисе?
  • › После какого релиза?
  • › Для каких запросов?
  • › Какой request_id связан с конкретным обращением?

 

 

ФОРМАТ // STRUCTURED_LOGS_BENEFITS

Структурированный лог гораздо полезнее обычного текста

// ПЛОХО //

Ошибка при обращении к базе

// ЛУЧШЕ (JSON) //
{
  "level": "ERROR",
  "service": "order-service",
  "operation": "create_order",
  "error": "DB_TIMEOUT",
  "duration_ms": 12000,
  "order_id": "48217",
  "trace_id": "..."
}
// АВТОМАТИЗАЦИЯ АНАЛИЗА //

Теперь этот лог можно автоматически анализировать.

Например, для инцидента типа DB_TIMEOUT:

DB_TIMEOUTколичестводинамикасервисendpointtrace_id

Структурированное логирование становится особенно важным, когда система состоит из множества сервисов.

 

 

ТРАССИРОВКА // DISTRIBUTED_TRACING

Один запрос может оставить десятки записей

В распределённой архитектуре запрос пользователя может пройти через множество изолированных компонентов.

FrontendAPI GatewayAuth ServiceOrder ServiceCatalog ServiceDatabaseQueue

Каждый компонент создаёт собственные логи. Без корреляционного идентификатора они превращаются в разрозненные события.

С trace_id или другим correlation ID можно связать их:

Trace: 7f82...

Gateway        12 ms
Auth           18 ms
Order          94 ms
Catalog        720 ms
Database       680 ms
// ЛОКАЛИЗАЦИЯ СБОЯ //

Иразу становится видно: проблема не в gateway и не в сервере. Основное время тратится на Catalog/Database.

Именно для таких задач трассировка особенно ценна.

 

 

ОЧЕРЕДИ // QUEUE_MONITORING

Очередь тоже нужно мониторить

Очередь может быть доступна и при этом система уже находиться в серьёзной деградации.

Например:

// ВХОДЯЩИЙ ПОТОК //
1 000 сообщений/мин
// ОБРАБОТКА //
800 сообщений/мин
// ДЕФИЦИТ СКОРОСТИ //
+200 сообщений в минуту
// ПРОГНОЗ БЭКЛОГА //

Через час backlog станет огромным.

Поэтому для очередей полезно контролировать:

  • › длину очереди;
  • › скорость поступления;
  • › скорость обработки;
  • › возраст самого старого сообщения;
  • › количество ошибок;
  • › количество повторных попыток;
  • › dead-letter queue;
  • › задержку обработки.
// КРИТИЧЕСКИЙ ПАРАМЕТР //

Особенно важен возраст необработанного сообщения. Очередь из 10 000 сообщений может быть нормальной, если они обрабатываются быстро. И критичной — если старейшему сообщению уже несколько часов.

 

 

БАЗА_ДАННЫХ // DATABASE_EARLY_WARNINGS

База данных тоже может предупреждать о проблеме заранее

Сама база может ещё отвечать.

Но уже появляются признаки деградации:

Connection pool → 92%
Lock wait → ↑
Slow queries → ↑
IO latency → ↑
Replication lag → ↑

Пользователь пока видит только:

«Иногда страница открывается чуть дольше»TimeoutService unavailable
// ПРОГНОЗИРОВАНИЕ //

Поэтому мониторинг должен отслеживать предвестники отказа, а не только сам отказ.

 

 

НАГРУЗКА // TRAFFIC_GROWTH_CONTEXT

Нагрузка растёт — но это не всегда авария

Представим, что количество запросов увеличилось в три раза.

Это может быть:

  • › реальный рост бизнеса;
  • › рекламная кампания;
  • › сезонный пик;
  • › новый клиент;
  • › ошибочный бесконечный цикл;
  • › DDoS;
  • › неисправный интеграционный сервис.
// ИЗОЛИРОВАННЫЙ СИГНАЛ //

Сам факт роста трафика ничего не объясняет.

Поэтому мониторинг должен связывать нагрузку с другими показателями:

// ШТАТНЫЙ МАСШТАБ //
Traffic ↑
 ├── CPU ↑
 ├── Latency →
 ├── Errors →
 └── Throughput ↑

Если всё работает нормально — это просто рост нагрузки.

// СБОЙ РЕСУРСОВ //
Traffic ↑
 ├── CPU ↑↑
 ├── Latency ↑↑
 ├── Errors ↑
 └── Throughput ↓

система уже не справляется.

 

 

ДИАГНОСТИКА // CAUSE_VS_SYMPTOM

Есть разница между причиной и симптомом

Допустим, пользователи получают: HTTP 500. Это симптом.

Причина может находиться глубже:

HTTP 500Application ErrorDatabase TimeoutConnection Pool ExhaustedUnexpected traffic growth
// ОГРАНИЧЕНИЕ ПОДХОДА //

Если поставить alert только на HTTP 500, команда узнает о проблеме поздно.

// ДИФФЕРЕНЦИАЦИЯ СИГНАЛОВ //

Если мониторить и количество соединений, и latency базы, и нагрузку, можно увидеть развитие ситуации раньше.

Но важно не пытаться создать alert на каждый промежуточный показатель.

Одни сигналы нужны для раннего обнаружения, другие — для диагностики.

 

 

ЦЕЛИ // SLI_SLO_TARGETS

SLI и SLO: мониторить нужно то, что важно пользователю

В зрелом подходе к надёжности полезно определить SLI — Service Level Indicator, то есть измеримый показатель качества работы сервиса.

Например:

  • › SLI = доля успешных запросов
  • › SLI = доля запросов, выполненных быстрее 500 мс

Затем определяется SLO — Service Level Objective. Например:

// ЦЕЛЬ УСПЕШНОСТИ //
99,9%

запросов должны завершаться успешно.

// ЦЕЛЬ СКОРОСТИ //
95%

запросов должны выполняться быстрее 500 мс.

// МЕТОДОЛОГИЯ GOOGLE //

Так мониторинг получает не просто набор графиков, а конкретную цель. Google SRE использует SLI/SLO именно как способ объективно измерять надёжность сервиса.

 

 

СТРАТЕГИЯ // SLO_VS_THRESHOLDS

Почему SLO лучше бесконечных порогов

Можно поставить десятки правил:

CPU > 80%
RAM > 85%
Disk > 90%
Latency > 500 ms
Errors > 1%
Queue > 10 000
// ОГРАНИЧЕНИЕ ПОДХОДА //

Но эти значения не всегда говорят о реальном пользовательском воздействии.

SLO позволяет задать вопрос иначе: Выполняет ли система обещанный уровень качества?

ПользовательУспешность операцииSLISLOНормаНарушениеAlert

Так мониторинг становится ближе к бизнес-результату.

 

 

ЗАВИСИМОСТИ // DEPENDENCY_MAPPING

Мониторинг должен видеть зависимости

Современное приложение редко работает изолированно.

Например:

Order Service
     ├──► PostgreSQL
     ├──► Redis
     ├──► Kafka
     ├──► Payment API
     └──► Customer Service
// СВЯЗАННЫЙ СБОЙ //

Сам Order Service может работать. Но если Payment API начинает отвечать по 20 секунд, пользователи почувствуют проблему именно в заказах.

Поэтому важно знать не только: «Order Service здоров?» но и: «От каких компонентов он зависит и как они сейчас работают?»

В сложной инфраструктуре полезно иметь карту зависимостей:

Order ServiceDBQueuePayment APIStorage

Тогда расследование инцидента становится значительно быстрее.

 

 

МЕТОДОЛОГИЯ // MONITORING_VS_OBSERVABILITY

Мониторинг и observability — не одно и то же

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

// MONITORING //

Отвечает прежде всего на вопрос:

Что происходит с системой?
// OBSERVABILITY //

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

// ПРИМЕР ФАКТА //

Error rate = 5%.

Это мониторинг.
// ПРИМЕР ИССЛЕДОВАНИЯ //

Почему ошибки возникли только у заказов определённого типа после изменения конфигурации?

требует уже более глубокого анализа.

Поэтому observability обычно строится вокруг нескольких источников телеметрии:

Metrics
+
Logs
+
Traces
+
Events
+
Changes
+
Service topology

Чем сложнее архитектура, тем важнее возможность связать эти данные между собой.

 

 

СТРУКТУРА // ENTERPRISE_METRICS_MAP

Что мониторить в корпоративной системе

Универсального списка не существует, но базовый набор обычно включает несколько уровней.

// ИНФРАСТРУКТУРА //
  • › CPU;
  • › RAM;
  • › дисковое пространство;
  • › I/O;
  • › сеть;
  • › состояние хостов;
  • › состояние виртуальных машин;
  • › контейнеры.
// СЕРВИСЫ //
  • › доступность;
  • › количество запросов;
  • › latency;
  • › error rate;
  • › throughput;
  • › рестарты;
  • › состояние зависимостей.
// БАЗЫ ДАННЫХ //
  • › connections;
  • › slow queries;
  • › locks;
  • › replication lag;
  • › storage;
  • › cache hit ratio;
  • › нагрузку на CPU и I/O.
// ОЧЕРЕДИ //
  • › backlog;
  • › processing rate;
  • › oldest message age;
  • › retry;
  • › DLQ;
  • › consumer lag.
// ПРИЛОЖЕНИЯ //
  • › исключения;
  • › ошибки;
  • › бизнес-события;
  • › длительные операции;
  • › деградация отдельных функций.
// БИЗНЕС-УРОВЕНЬ //
  • › количество заказов;
  • › успешность платежей;
  • › количество обработанных документов;
  • › время выполнения бизнес-операций;
  • › процент неуспешных операций.
// КРИТИЧЕСКАЯ ЗОНА //

Именно последний уровень часто оказывается недооценённым.

 

 

ПРОГНОЗ // PROACTIVE_DISK_WARNING

Что значит «увидеть проблему заранее»

Раннее обнаружение — это не обязательно предсказание будущего с помощью искусственного интеллекта. Иногда всё гораздо проще.

Например:

Disk usage 70% ──────────────── 75% ╲ 80% ╲ 85% ╲ 90% ╲ 95% ╲ X отказ
// ПРОГНОЗ ТЕНДЕНЦИИ //

Если система знает скорость заполнения диска, она может предупредить: При текущем темпе свободное пространство закончится примерно через 9 часов.

// ПО ФАКТУ СБОЯ //

Disk full.

// РАННЕЕ ПРЕДУПРЕЖДЕНИЕ //

Это уже гораздо полезнее, чем уведомление по факту случившегося инцидента.

 

 

ПРОГНОЗИРОВАНИЕ // CAPACITY_FORECASTING

Прогнозирование полезно не только для дисков

Аналогичная логика применяется к:

  • › росту базы данных;
  • › очередям;
  • › количеству соединений;
  • › пропускной способности;
  • › сертификатам;
  • › сроку действия токенов;
  • › лимитам API;
  • › capacity инфраструктуры.
Текущая нагрузкаИсторическая динамикаТрендПрогноз достижения лимитаПредупреждение
// УПРАВЛЕНИЕ РЕСУРСАМИ //

Это уже переход от мониторинга факта к управлению capacity.

 

 

НАДЁЖНОСТЬ // MONITORING_FAILURE_RISKS

Но автоматические уведомления тоже могут сломаться

Есть парадокс: система мониторинга должна сама быть объектом мониторинга.

// ЛОЖНАЯ БЕЗОПАСНОСТЬ //

Если серверы работают, но мониторинг перестал собирать данные, зелёные графики могут создать ложное ощущение безопасности.

Поэтому нужно контролировать:

  • › поступление телеметрии;
  • › состояние агентов;
  • › задержку данных;
  • › состояние самого мониторинга;
  • › доступность системы уведомлений;
  • › корректность правил.

Особенно опасен сценарий:

Система сломаласьMonitoring не получил данныеAlert не сформированКоманда считает, что всё нормально

 

 

КРИТИЧНОСТЬ // ALERT_SEVERITY_LEVELS

Алертинг должен учитывать серьёзность

Не каждая проблема требует звонка инженеру ночью.

Можно использовать несколько уровней:

INFOсостояние изменилосьWARNINGесть потенциальная проблемаCRITICALтребуется немедленное действие

Например:

// УРОВЕНЬ INFO //

Свободное место уменьшилось до 30%.

// УРОВЕНЬ WARNING //

При текущей скорости заполнения диск достигнет критического уровня примерно через 6 часов.

// УРОВЕНЬ CRITICAL //

Недостаточно места. Запись данных остановлена.

// РЕЗУЛЬТАТ СТРАТЕГИИ //

Это позволяет не превращать каждое отклонение в аварию.

 

 

ЭФФЕКТИВНОСТЬ // ALERT_FATIGUE_IMPACT

Плохой мониторинг создаёт больше проблем, чем решает

Представим команду, которая получает: 300 уведомлений в день.

Через месяцавтоматически игнорируют часть из нихЧерез полгода«Ето опять тот самый alert»Среди сотен неважных уведомленийпоявляется критическая проблемаЕё пропускают
// ОЦЕНКА СИСТЕМЫ //

Поэтому качество мониторинга определяется не количеством alert'ов. Хороший мониторинг отправляет человеку только те сигналы, на которые действительно нужно реагировать.

Такой принцип прямо отражён и в практиках Google SRE: alert должен быть actionable, а чрезмерное количество тревог создаёт шум и снижает эффективность реагирования.

 

 

ПРОЦЕССЫ // INCIDENT_RESPONSE_LIFECYCLE

Что должно происходить после alert

Само уведомление — ещё не решение проблемы.

СигналAlertОпределение критичностиОтветственныйДиагностикаМитигированиеВосстановлениеАнализ причиныИзменение системы
// РУТИННЫЕ ПЕРЕЗАПУСКИ //

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

Хорошая эксплуатация должна приводить к изменениям, которые уменьшают вероятность повторения.

 

 

РАСЛЕДОВАНИЕ // INCIDENT_INVESTIGATION

Мониторинг должен помогать расследовать, а не просто сообщать об аварии

Допустим, приходит alert: Error rate > 5%.

Инженеру нужны ответы:

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

Инеальный путь выглядит так:

AlertDashboardLogsTracesRecent deploymentsDependenciesRunbook
// НАЗНАЧЕНИЕ СИГНАЛА //

Тогда alert становится входной точкой расследования, а не просто тревожным сообщением.

 

 

ИЗМЕНЕНИЯ // CHANGE_MANAGEMENT_METRICS

Мониторинг изменений так же важен, как мониторинг ресурсов

Очень часто проблема появляется после конкретных действий внутри инфраструктуры:

  • › нового релиза;
  • › изменения конфигурации;
  • › миграции;
  • › изменения базы;
  • › обновления сертификата;
  • › изменения сетевых правил;
  • › изменения нагрузки;
  • › изменения интеграции.

Поэтому полезно связывать временную шкалу инцидента:

12:00  Deploy
12:03  Latency ↑
12:05  Errors ↑
12:07  SLO violated
12:08  Alert
// ТЕНДЕНЦИЯ СОБЫТИЙ //

Такая корреляция значительно ускоряет поиск причины.

 

 

ИНТЕРФЕЙСЫ // DASHBOARD_HIERARCHY

Не нужно пытаться построить один гигантский dashboard

На большой системе невозможно создать один экран, на котором будут одновременно собраны все параметры системы:

  • - все серверы;
  • - все контейнеры;
  • - все базы;
  • - все очереди;
  • - все API;
  • - все бизнес-метрики;
  • - все логи.
// ПРОБЛЕМА ВИЗУАЛИЗАЦИИ //

Такой dashboard быстро превращается в стену из графиков.

Гораздо полезнее иметь уровни:

Уровень 1Состояние бизнесаУровень 2Критические сервисыУровень 3КомпонентыУровень 4Детальная диагностика
// ПОТРЕБИТЕЛЬ: MANAGEMENT //

Для руководителя нужен один уровень информации.

// ПОТРЕБИТЕЛЬ: ENGINEERING //

Для инженера — совершенно другой.

 

 

РОЛИ // ROLE_DASHBOARDS

Что мониторить руководителю, а что инженеру

// ДЛЯ РУКОВОДИТЕЛЯ //

Руководителю может быть важно:

  • › доступность критичных систем;
  • › количество инцидентов;
  • › время восстановления;
  • › соблюдение SLO;
  • › влияние на бизнес;
  • › динамика отказов.
// ДЛЯ ИНЖЕНЕРА //

Инженеру нужны:

  • › CPU;
  • › память;
  • › latency;
  • › traces;
  • › logs;
  • › database metrics;
  • › queue lag;
  • › ошибки;
  • › зависимости;
  • › изменения конфигурации.
// ЕДИНАЯ ЭКОСИСТЕМА //

Это одна система мониторинга, но разные представления данных.

 

 

АРХИТЕКТУРА // OBSERVABILITY_PIPELINE

Хорошая архитектура мониторинга выглядит как конвейер

Условно конвейер сбора и обработки телеметрии можно представить в виде сквозной структуры.

ИСТОЧНИКИMetricsLogsTracesСбор и хранениеАналитикаDashboardRulesAlertИнженер

Но зрелая система идёт ещё дальше:

AlertContextMetricsLogsTracesChangesDependenciesRunbooks
// ЭФФЕКТИВНОСТЬ ДИАГНОСТИКИ //

Так уменьшается время от обнаружения проблемы до понимания её причины.

 

 

ПРОЦЕССЫ // BUSINESS_PROCESS_MONITORING

Мониторинг должен быть связан с бизнес-процессами

Для корпоративной системы недостаточно сказать: «Сервис доступен».

Нужно знать:

  • › «Можно ли сейчас создать заказ?»
  • › «Проходит ли платёж?»
  • › «Обрабатываются ли документы?»
  • › «Передаются ли данные между ERP и WMS?»
  • › «Обновляются ли остатки?»

Например:

// СОСТОЯНИЕ КОМПОНЕНТОВ //
ERP работает ✓
WMS работает ✓
API работает ✓
// СКВОЗНОЙ ПРОЦЕСС //
Создание заказа ✗
// ЛОКАЛИЗАЦИЯ ИНЦИДЕНТА //

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

Поэтому самые ценные проверки часто находятся на уровне сквозного сценария.

 

 

ЭМУЛЯЦИЯ // SYNTHETIC_MONITORING

Synthetic monitoring: проверить систему как пользователь

Иногда полезно не ждать реального пользователя, а регулярно выполнять тестовый сценарий.

Например:

Открыть системуАвторизоватьсяОткрыть карточкуСоздать тестовый объектПроверить результат
// РАННЕЕ ПРЕДУПРЕЖДЕНИЕ //

Если сценарий перестал выполняться, система может сообщить об этом до того, как реальный пользователь столкнётся с проблемой.

Такой подход особенно полезен для критичных внешних сервисов и бизнес-функций.

 

 

ПРОЕКТИРОВАНИЕ // OBSERVABILITY_BY_DESIGN

Мониторинг — это часть архитектуры, а не дополнение после разработки

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

  • - нет нужных метрик;
  • - логи неструктурированные;
  • - невозможно связать запросы между сервисами;
  • - нет correlation ID;
  • - отсутствуют health-check;
  • - невозможно понять состояние очереди;
  • - бизнес-сценарии никак не измеряются.
// ПОСЛЕДСТВИЯ ПОДХОДА //

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

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

 

 

ИЕРАРХИЯ // LOGICAL_HIERARCHY_LEVELS

Что действительно стоит мониторить

Если свести всё к практической модели, можно выделить пять уровней.

// 1. ДОСТУПНОСТЬ //

Работает ли компонент вообще?

// 2. ПРОИЗВОДИТЕЛЬНОСТЬ //

Не стал ли он работать значительно медленнее?

// 3. ОШИБКИ //

Не увеличилась ли доля неуспешных операций?

// 4. ЗАВИСИМОСТИ //

Не деградировал ли компонент, от которого зависит сервис?

// 5. РЕЗУЛЬТАТ //

Может ли человек выполнить нужное действие?

// ОЦЕНКА МЕТОДОЛОГИИ //

Именно пятый уровень показывает, насколько инфраструктура действительно выполняет свою задачу.

 

 

МЕТОДОЛОГИЯ // OBSERVABILITY_VS_MONITORING_CONCEPT

Идея «всё зелёное» может быть опасной

Сам Order Service может работать. Но этого недостаточно для оценки стабильности.

// ФОРМАЛЬНЫЙ СТАТУС //

«Order Service здоров?»

// АНАЛИЗ КОНТЕКСТА //

«От каких компонентов он зависит и как они сейчас работают?»

Мониторинг и observability — не одно и то же

Термины часто используют как синонимы, хотя между ними есть различие. Что происходит с системой?

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

// КОНСТАТАЦИЯ ФАКТА //
Error rate = 5%.
// ГЛУБОКИЙ АНАЛИЗ //
Почему ошибки возникли только у заказов определённого типа после изменения конфигурации?

Поэтому observability обычно строится вокруг нескольких источников телеметрии:

Metrics
+
Logs
+
Traces
+
Events
+
Changes
+
Service topology

Чем сложнее архитектура, тем важнее возможность связать эти данные между собой.

 

 

СТРУКТУРА // ENTERPRISE_SYSTEM_METRICS_MAP

Что мониторить в корпоративной системе

// ИНФРАСТРУКТУРА //
  • › CPU;
  • › RAM;
  • › дисковое пространство;
  • › I/O;
  • › сеть;
  • › состояние хостов;
  • › состояние виртуальных машин;
  • › контейнеры.
// СЕРВИСЫ //
  • › доступность;
  • › количество запросов;
  • › latency;
  • › error rate;
  • › throughput;
  • › рестарты;
  • › состояние зависимостей.
// БАЗЫ ДАННЫХ //
  • › connections;
  • › slow queries;
  • › locks;
  • › replication lag;
  • › storage;
  • › cache hit ratio;
  • › нагрузку на CPU и I/O.
// ОЧЕРЕДИ //
  • › backlog;
  • › processing rate;
  • › oldest message age;
  • › retry;
  • › DLQ;
  • › consumer lag.
// ПРИЛОЖЕНИЯ //
  • › исключения;
  • › ошибки;
  • › бизнес-события;
  • › длительные операции;
  • › деградация отдельных функций.
// БИЗНЕС-УРОВЕНЬ //
  • › количество заказов;
  • › успешность платежей;
  • › количество обработанных документов;
  • › время выполнения бизнес-операций;
  • › процент неуспешных операций.

 

 

ПРОГНОЗ // PROACTIVE_DISK_WARNING

Что значит «увидеть проблему заранее»

Раннее обнаружение — это не обязательно предсказание будущего с помощью искусственного интеллекта. Иногда всё гораздо проще.

Например:

Disk usage 70% ──────────────── 75% ╲ 80% ╲ 85% ╲ 90% ╲ 95% ╲ X отказ
// ПРОГНОЗ ТЕНДЕНЦИИ //

Если система знает скорость заполнения диска, она может предупредить: При текущем темпе свободное пространство закончится примерно через 9 часов.

// ПО ФАКТУ СБОЯ //

Disk full.

// РАННЕЕ ПРЕДУПРЕЖДЕНИЕ //

Это уже гораздо полезнее, чем уведомление по факту случившегося инцидента.

 

 

ПРОГНОЗИРОВАНИЕ // CAPACITY_AND_SELF_MONITORING

Прогнозирование полезно не только для дисков

Аналогичная логика применяется к:

  • › росту базы данных;
  • › очередям;
  • › количеству соединений;
  • › пропускной способности;
  • › сертификатам;
  • › сроку действия токенов;
  • › лимитам API;
  • › capacity инфраструктуры.

Например:

Текущая нагрузкаИсторическая динамикаТрендПрогноз достижения лимитаПредупреждение
// МЕТА-МОНИТОРИНГ //

система мониторинга должна сама быть объектом мониторинга.

Поэтому нужно контролировать:

  • › поступление телеметрии;
  • › состояние агентов;
  • › задержку данных;
  • › состояние самого мониторинга;
  • › доступность системы уведомлений;
  • › корректность правил.
Система сломаласьMonitoring не получил данныеAlert не сформированКоманда считает, что всё нормально

 

 

КРИТИЧНОСТЬ // ALERT_SEVERITY_LEVELS

Алертинг должен учитывать серьёзность

Можно использовать несколько уровней:

INFOсостояние изменилосьWARNINGесть потенциальная проблемаCRITICALтребуется немедленное действие
// УРОВЕНЬ INFO //

Свободное место уменьшилось до 30%.

// УРОВЕНЬ WARNING //

При текущей скорости заполнения диск достигнет критического уровня примерно через 6 часов.

// УРОВЕНЬ CRITICAL //

Недостаточно места. Запись данных остановлена.

// РЕЗУЛЬТАТ СТРАТЕГИИ //

Это позволяет не превращать каждое отклонение в аварию.

 

 

ЭФФЕКТИВНОСТЬ // ALERT_FATIGUE_IMPACT

Плохой мониторинг создаёт больше проблем, чем решает

Через полгода:

// ЭФФЕКТ ПРИВЫКАНИЯ //
«Это опять тот самый alert».
// ПОТЕРЯ СИГНАЛА //

И однажды среди сотен неважных уведомлений появляется действительно критическая проблема.

Поэтому качество мониторинга определяется не количеством alert'ов.

// ПРАВИЛЬНЫЙ ФИЛЬТР //

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

Такой принцип прямо отражён и в практиках Google SRE: alert должен быть actionable, а чрезмерное количество тревог создаёт шум и снижает эффективность реагирования.

 

 

ПСИХОЛОГИЯ // GREEN_DASHBOARD_ILLUSION

Что должно происходить после alert

Само уведомление — ещё не решение проблемы. Зрелый процесс выглядит примерно так:

// ИЛЛЮЗИЯ СТАБИЛЬНОСТИ //

Зелёный dashboard создаёт психологическое ощущение безопасности. Но зелёный цвет может означать только: сервер отвечает.

Он не означает:

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

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

 

 

ИТОГИ // BUSINESS_OBSERVABILITY_CONCLUSION

От мониторинга инфраструктуры к наблюдаемости бизнеса

Разница между простым и зрелым подходом хорошо видна на одном примере.

// ПРОСТОЙ МОНИТОРИНГ //
Server UP
CPU 43%
RAM 61%
Disk 52%
// ЗРЕЛЫЙ МОНИТОРИНГ //
Заказы
 ├── Success rate: 99,94%
 ├── p95 latency: 420 ms
 ├── Error rate: 0,06%
 └── Queue lag: 1,2 sec
Dependencies
 ├── DB: healthy
 ├── Payment API: degraded
 └── Message broker: healthy
// ПОЛНАЯ КАРТИНА //

Во втором случае команда видит не просто состояние серверов. Она видит:

как система выполняет свою работу.

 

 

ФИЛОСОФИЯ // CORE_MONITORING_PRINCIPLE

Главный принцип

// ОГРАНИЧЕНИЕ ОБЫЧНОГО ПОДХОДА //
Мониторинг не должен отвечать только на вопрос:
«Сервер работает?»

Гораздо важнее вопросы:

  • › «Система работает нормально?»
  • › «Не начала ли она деградировать?»
  • › «Какой компонент является источником проблемы?»
  • › «Затронут ли пользовательский сценарий?»
  • › «Успеем ли мы отреагировать до серьёзного сбоя?»

Именно для этого нужны метрики, логи, трассировка, health-check, контроль очередей, мониторинг зависимостей, SLI/SLO и продуманный alerting.

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

ЗРЕЛЫЙ МОНИТОРИНГМетрикиЛогиТрассировкаHealth-checkОчередиSLO (Уровень качества)

Хорошая система мониторинга не пытается сообщить человеку обо всём, что происходит в инфраструктуре. Она должна отделять нормальное поведение от действительно значимых отклонений, своевременно сообщать о проблемах и давать достаточно контекста, чтобы быстро понять, что произошло.

// МЕТОДОЛОГИЯ SRE //

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

// ЧЕМ МОНИТОРИНГ НЕ ЯВЛЯЕТСЯ //

Поэтому мониторинг — это не экран с зелёными индикаторами.

// ИСТИННОЕ НАЗНАЧЕНИЕ //

Это система раннего обнаружения проблем, диагностики и контроля над тем, насколько надёжно корпоративная информационная система выполняет свою работу.

 

 

НАВИГАЦИЯ // SUGGESTED_READING
 
[ Модуль // ИНТЕГРАЦИИ ]

API, Webhook или очередь сообщений?

 
[ Модуль // ИНТЕГРАЦИИ ]

Когда API есть, а интеграция всё равно не работает

 
[ Модуль // АВТОМАТИЗАЦИЯ ]

Как соединить производство и корпоративные системы

 
[ EXPERTISE JOURNAL ]

Все инженерные материалы и экспертные статьи

 
[ CORE GLOSSARY ]

Полный алфавитный справочник ИТ-терминов

 

[ DIRECT EMAIL LINE ]
info@log-ai.ru

 

🔒 Данные и доступ к системам заказчика обрабатываются в соответствии с согласованными требованиями к безопасности и конфиденциальности. Условия доступа, хранения и обработки данных определяются архитектурой проекта и договором.

Сайт носит исключительно информационный характер и не является публичной офертой в соответствии со статьёй 437 Гражданского кодекса РФ. Цены, состав и условия предоставления услуг уточняются при проектировании решения и фиксируются в договоре. Условия технического сопровождения и уровень сервиса могут дополнительно определяться отдельным соглашением (SLA).

© 2026 Log-AI Москва
Автоматизация бизнеса и ИИ-решения под ключ
Самозанятый Скопец Антон Викторович ИНН 741709260870
Политика конфиденциальности Пользовательское соглашение
AI Ассистент
×