1. Фундаментальные основы и стандарты Observability
Три столпа Observability: метрики, логи и трейсы
Почему две компании с одинаковым набором инструментов мониторинга получают принципиально разные результаты? Одна обнаруживает инцидент за 30 секунд и устраняет его за 5 минут. Другая — узнаёт о проблеме от пользователей через час после начала сбоя. Разница не в софте, а в понимании фундаментальных принципов Observability — способности системы отвечать на произвольные вопросы о своём внутреннем состоянии, опираясь на внешние выходные данные.
От мониторинга к Observability
Традиционный мониторинг отвечает на заранее известные вопросы: «Загрузка CPU превысила 90%?», «Сервис вернул HTTP 500?». Это работает, пока инциденты укладываются в ожидаемые сценарии. Но в распределённых системах с микросервисной архитектурой большинство сбоев — комбинированные, каскадные, непредсказуемые. Классический мониторинг здесь слеп.
Observability — это свойство системы, позволяющее понять её внутреннее состояние по внешним выходным данным без необходимости переписывать код или добавлять новые инструменты. Термин заимствован из теории управления: система называется наблюдаемой, если по выходным сигналам можно однозначно определить её внутреннее состояние.
> Если мониторинг — это проверка по чеклисту, то Observability — это расследование детектива: вы не знаете заранее, что ищете, но у вас достаточно улик, чтобы найти ответ. > > Charity Majors, CTO Honeycomb
Три фундаментальных типа телеметрии, составляющих основу Observability, — это метрики, логи и трейсы. Каждый из них решает свою задачу, но максимальную ценность даёт их комбинация.
Метрики: пульс инфраструктуры
Метрика — это числовое измерение某个аспекта работы системы в конкретный момент времени. Метрики представляют собой временные ряды (time series) — последовательности числовых значений с привязкой к временным меткам.
Метрики бывают нескольких типов:
Преимущество метрик — компактность и скорость обработки. Хранение посекундных метрик с 10 000 хостов занимает порядки гигабайт в месяц, а агрегация выполняется за миллисекунды. Именно поэтому метрики — первый уровень мониторинга: они дают мгновенный обзор состояния всей инфраструктуры.
Однако метрики имеют фундаментальное ограничение: они агрегированы. Когда вы видите, что p99 латентности вырос до 2 секунд, вы не знаете, какой именно запрос вызвал задержку, для какого пользователя и при каких обстоятельствах. Для этого нужны логи.
Логи: контекст каждого события
Лог — это запись о конкретном событии в работе системы, содержащая контекстуальную информацию: временную метку, уровень серьёзности, источник, сообщение и произвольные атрибуты.
Логи решают задачу, недоступную метрикам: они дают контекст. Метрика скажет «ошибки выросли в 3 раза», а лог покажет точный текст ошибки, стек вызовов, ID транзакции и параметры запроса.
| Характеристика | Метрики | Логи | |---|---|---| | Формат | Числовой, структурированный | Текстовый или структурированный (JSON) | | Объём | Килобайты на хост в час | Мегабайты-гигабайты на хост в час | | Скорость запросов | Миллисекунды | Секунды-минуты | | Сила | Агрегированный обзор, алертинг | Детальный контекст, расследование | | Слабость | Нет контекста | Сложно агрегировать, дороги в хранении |
Современная практика требует структурированных логов — записей в машиночитаемом формате (обычно JSON), где каждое поле имеет имя и тип. Неструктурированные логи вида ERROR 2024-01-15 14:23:01 Connection timeout to db-master плохо поддаются автоматическому анализу и поиску.
Трейсы: карта путешествия запроса
Трейс (distributed trace) — это запись полного пути одного запроса через все сервисы распределённой системы. Каждый трейс состоит из спанов (spans) — отдельных операций с временны́ми метками, иерархией вызовов и атрибутами.
Представьте электронный платёж, проходящий через API-шлюз, сервис аутентификации, платёжный шлюз, базу данных и сервис уведомлений. Трейс показывает точное время каждого этапа, позволяет увидеть, что задержка возникла на третьем шаге — при обращении к платёжному провайдеру.
Трейсы незаменимы для диагностики проблем в микросервисных архитектурах, где один пользовательский запрос может проходить через десятки сервисов. Без трассировки вы видите, что «что-то медленно работает», но не можете определить, какой именно сервис является узким местом.
Стандарт де-факто для инструментирования трейсов — OpenTelemetry, открытый проект Cloud Native Computing Foundation, унифицирующий сбор метрик, логов и трейсов через единый API и SDK.
Связь трёх типов телеметрии
Ни один из трёх типов телеметрии не является самодостаточным. Их сила — в корреляции:
Эта цепочка — от обнаружения через локализацию к объяснению — является стандартным workflow расследования инцидентов в mature-командах.
Стандарты и модели зрелости
Отраслевые стандарты помогают систематизировать подход к Observability. ITIL 4 определяет мониторинг и управление событиями как ключевую практику, а OpenTelemetry задаёт технический стандарт сбора телеметрии.
Существует несколько моделей зрелости Observability. Обобщённо их можно свести к пяти уровням:
Переход между уровнями требует не только инструментов, но и культурных изменений: перехода от культуры blame к культуре learning, инвестиций в навыки команды и зрелости процессов управления инцидентами.
Ключевой вывод: Observability — это не продукт, который можно купить, а свойство архитектуры, которое нужно выстраивать. Метрики, логи и трейсы — три кита, на которых держится способность системы рассказать о себе. Без понимания их природы, сильных и слабых сторон любые инструменты предиктивной аналитики будут работать на ненадёжном фундаменте.