Открыть сервис

Наблюдаемость

Наблюдаемость — это свойство системы, позволяющее внешнему наблюдателю (человеку-оператору, мониторинговой системе или алгоритму) делать выводы о её внутреннем состоянии на основе анализа внешних выходных данных (логов, метрик, трассировок, событий). В контексте информационных технологий и DevOps наблюдаемость является ключевым принципом для управления сложными распределёнными системами, микросервисными архитектурами и облачными инфраструктурами.

История возникновения и развития

Термин «наблюдаемость» (observability) был заимствован из теории автоматического управления и математической теории систем. В 1960-х годах американский математик Рудольф Калман ввёл понятие наблюдаемости как критерия, определяющего, можно ли восстановить вектор состояния динамической системы по известным входным и выходным сигналам. В классической теории управления система считается наблюдаемой, если по её выходным данным за конечный интервал времени можно однозначно определить все её внутренние переменные.

В сферу программной инженерии и эксплуатации IT-систем термин проник в начале 2010-х годов вместе с ростом популярности микросервисной архитектуры, контейнеризации и облачных вычислений. Традиционные методы мониторинга (мониторинг на основе чёрных ящиков, проверка доступности сервисов по протоколу ICMP или HTTP) перестали быть достаточными для понимания поведения сложных распределённых приложений. В 2015—2017 годах концепция наблюдаемости была популяризирована сообществом DevOps, в частности компаниями Honeycomb, Lightstep и New Relic, а также книгами и докладами инженеров из Twitter, Uber и Netflix.

Отличие наблюдаемости от мониторинга

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

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

Основные компоненты наблюдаемости

В современной практике наблюдаемость принято описывать через три столпа (three pillars of observability), хотя некоторые авторы критикуют эту модель за излишнюю упрощённость.

Логи (Logs)

Логи представляют собой записи событий, происходящих в системе. Каждая запись содержит временную метку, уровень важности (info, warning, error) и текстовое сообщение. Логи бывают структурированными (формат JSON) и неструктурированными (простой текст). В наблюдаемых системах логи обычно централизуются с помощью таких инструментов, как Elasticsearch, Loki или Splunk.

Метрики (Metrics)

Метрики — это числовые показатели, измеряемые в определённые моменты времени. Они делятся на:

Для хранения и визуализации метрик используются системы вроде Prometheus, Graphite, InfluxDB.

Трассировки (Traces)

Трассировки (или распределённая трассировка) позволяют отслеживать путь одного запроса через множество сервисов. Каждая трассировка состоит из спанов (spans) — единиц работы, имеющих идентификатор родительского спана, время начала и длительность. Трассировки дают возможность увидеть, какой именно сервис или вызов стал причиной замедления или ошибки. Популярные инструменты: Jaeger, Zipkin, OpenTelemetry.

Инструменты и практики

OpenTelemetry

OpenTelemetry (OTel) — это открытый стандарт и набор библиотек для сбора телеметрии (логов, метрик и трассировок) из приложений. Он стал фактическим стандартом в индустрии, поддерживается большинством облачных провайдеров и платформ мониторинга. OpenTelemetry предоставляет единый API для инструментирования кода, независимо от языка программирования.

Service Level Objectives (SLO)

Наблюдаемость тесно связана с практикой управления уровнем обслуживания. SLO — это целевые показатели надёжности сервиса (например, «99,9% запросов должны выполняться быстрее 200 мс»). Наблюдаемость позволяет измерять фактические значения SLO и выявлять моменты, когда сервис приближается к нарушению соглашения.

Анализ первопричин (Root Cause Analysis)

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

Критика и ограничения

Концепция наблюдаемости подвергается критике по нескольким направлениям:

Применение в различных отраслях

Хотя термин наиболее распространён в IT, принципы наблюдаемости применяются и в других областях:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →