Перейти к основному содержимому
Перейти к основному содержимому

Обсервабилити

Современные программные системы сложны. Микросервисы, облачная инфраструктура и распределённые системы значительно усложнили понимание того, что происходит внутри наших приложений. Когда что-то идёт не так, командам нужно быстро выяснить, где и почему это произошло.

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

Что такое обсервабилити?

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

Эта область значительно эволюционировала, и её развитие удобно рассматривать через две отдельные «генерации» подходов к обсервабилити.

Первое поколение, часто называемое Observability 1.0, было построено вокруг традиционного подхода «трёх столпов» — метрик, логов и трейсов. Этот подход требовал использования нескольких инструментов и хранилищ данных для разных типов телеметрии. Он часто вынуждал инженеров заранее определять, что именно они хотят измерять, что делало поддержку нескольких систем дорогостоящей и сложной.

Современное обсервабилити, или Observability 2.0, использует принципиально иной подход. Оно основано на сборе широких, структурированных событий для каждой единицы работы (например, HTTP-запроса и ответа) в нашей системе. Этот подход фиксирует данные с высокой кардинальностью, такие как идентификаторы пользователей, идентификаторы запросов, хэши Git-коммитов, идентификаторы инстансов, имена подов в Kubernetes, конкретные параметры маршрутов и идентификаторы транзакций поставщиков. Общее практическое правило — добавлять единицу метаданных, если она может помочь нам понять, как ведёт себя система.

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

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

Три столпа обсервабилити

Чтобы лучше понять, как обсервабилити развивалась и как она работает на практике, рассмотрим три ее столпа — логи, метрики и трейсы.

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

  1. Логи — текстовые записи дискретных событий, происходящих в системе. Они предоставляют детальный контекст для конкретных событий, ошибок и изменений состояния.
  2. Метрики — числовые показатели, собираемые во времени. К ним относятся счетчики, gauge-метрики и гистограммы, которые помогают отслеживать производительность системы, использование ресурсов и бизнес‑KPI (ключевые показатели эффективности).
  3. Трейсы — записи, отслеживающие путь запросов по мере их прохождения через распределенные системы. Они помогают понять взаимосвязи между сервисами и выявлять узкие места в производительности.

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

Преимущества обсервабилити

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

В своей книге "Observability Engineering" (O'Reilly, 2022) Charity Majors, Liz Fong-Jones и George Miranda, опираясь на отраслевые исследования и практический опыт, выделяют четыре ключевых бизнес-преимущества, которые организации могут получить при внедрении надлежащих практик обсервабилити. Рассмотрим эти преимущества:

Более высокий дополнительный доход

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

  1. Улучшенный опыт клиентов: быстрое разрешение проблем и предотвращение деградации сервиса ведут к более высокой удовлетворённости и удержанию клиентов.
  2. Повышенная надёжность системы: лучшая доступность означает больше успешных транзакций и меньше упущенных бизнес-возможностей.
  3. Повышенная производительность: возможность выявлять и оптимизировать узкие места производительности помогает поддерживать высокую отзывчивость сервисов и сохранять вовлечённость клиентов.
  4. Конкурентное преимущество: организации, способные поддерживать высокое качество сервиса благодаря комплексному мониторингу и быстрому устранению проблем, часто получают преимущество перед конкурентами.

Снижение затрат за счёт более быстрого реагирования на инциденты

Одно из самых очевидных преимуществ обсервабилити — снижение затрат на персонал благодаря более быстрому обнаружению и устранению проблем. Это достигается за счёт:

  • Сокращения среднего времени обнаружения (MTTD) и среднего времени устранения (MTTR)
  • Сокращения времени ответа на запросы, что ускоряет расследование инцидентов
  • Более быстрой идентификации узких мест производительности
  • Сокращения времени, проводимого на дежурствах
  • Меньшего количества ресурсов, расходуемых на ненужные откаты

Мы видим это на практике — [trip.com построила свою систему обсервабилити на ClickHouse](trip.com built their observability system with ClickHouse) и добилась ускорения выполнения запросов в 4–30 раз по сравнению с предыдущим решением, при этом 90% запросов выполняются менее чем за 300 мс, что обеспечивает быстрое расследование инцидентов.

Экономия затрат за счёт предотвращённых инцидентов

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

  • Выявляют потенциальные проблемы до того, как они становятся критическими
  • Анализируют паттерны, чтобы предотвратить повторяющиеся инциденты
  • Понимают поведение системы в различных условиях
  • Проактивно устраняют узкие места производительности
  • Принимают основанные на данных решения по улучшению системы

Собственная платформа обсервабилити ClickHouse, LogHouse, демонстрирует это. Она позволяет нашим инженерам, работающим над ядром, искать исторические паттерны во всех кластерах, что помогает предотвращать повторяющиеся проблемы.

Экономия затрат за счет снижения текучести кадров

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

  • Повышению удовлетворённости работой за счёт более качественного инструментария
  • Снижению выгорания разработчиков за счёт меньшего количества нерешённых инцидентов
  • Сокращению усталости от алёртов благодаря лучшему соотношению сигнал/шум
  • Уменьшению стресса во время on-call‑дежурств за счёт более эффективного управления инцидентами
  • Повышению уверенности команды в надёжности системы

Мы видим это на практике — когда Fastly мигрировал на ClickHouse, их инженеры были поражены улучшением производительности запросов и отмечали:

«Я не мог в это поверить. Мне пришлось несколько раз перепроверить, просто чтобы убедиться, что я действительно правильно выполняю запрос... результаты приходят слишком быстро. Это не имеет смысла».

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

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

Проблемы при внедрении обсервабилити

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

Объём данных и масштабируемость

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

Интеграция с существующими системами

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

Пробелы в навыках

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

Управление затратами

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

Хранение данных и управление сроками их хранения

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

Стандартизация и зависимость от поставщика

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

Безопасность и соответствие требованиям

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

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

Для решения этих задач организациям необходим хорошо структурированный подход к внедрению обсервабилити. Стандартный пайплайн обсервабилити эволюционировал и теперь служит фреймворком для эффективного сбора, обработки и анализа телеметрических данных. Одним из самых ранних и наиболее влиятельных примеров этой эволюции является опыт Twitter в 2013 году.