Книга: «Изучаем OpenTelemetry: современный мониторинг систем»

imageПривет, Хаброжители!

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

Классическое определение наблюдаемости звучит так: наблюдаемость — это свойство системы, отражающее то, насколько об ее внутреннем состоянии можно судить по ее внешним проявлениям. Иными словами, наблюдаемость — это степень прозрачности системы. А данные, позволяющие анализировать и контролировать работу системы, называют данными телеметрии.

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

Книга «Изучаем OpenTelemetry» Теда Янга и Остина Паркера не является ни мануалом по этой технологии, ни заменой объемной документации по ее использованию, ни учебником. Вместо этого авторы предлагают руководство по изучению OpenTelemetry, в котором излагаются:

  • основные концепции и тонкости технологии;
  • философия и дизайн OpenTelemetry;
  • способы инструментирования для разных языков программирования;
  • практики сбора и обработки данных о производительности;
  • схемы развертывания для масштабирования сбора данных для таких платформ, как Kubernetes, бессерверных систем и потоковой передачи данных;
  • практические советы по эффективному использованию технологии;
  • а также такие задачи «со звездочкой», как генеративный искусственный интеллект (GenAI), технологии FinOps и стабильность в облачных средах.


Лежащая в основе OpenTelemetry и проходящая сквозь всю книгу красной нитью концепция — это концепция «скрутки» телеметрических сигналов, благодаря которой упрощается поиск корреляций между этими сигналами. Три основные формы телеметрии: — трассировкуа, метрики и журналы — авторы рассматривают не как отдельные «столпы» наблюдаемости (как это было принято раньше), а как некое «сплетение»: именно взаимосвязи между ними и делают систему прозрачной для человека и позволяют проводить глубокий анализ проблем, возникающих при реальной эксплуатации.

image


image


Собственно, этот теоретический фундамент и закладывается в первой части книги: начальные главы посвящены текущему положению дел в области, причинам появления OpenTelemetry и философии этой технологии. Затем в книге рассматривается демонстрационное приложение, которое иллюстрирует практическое использование OpenTelemetry (и которое можно запустить на своем компьютере самостоятельно, скачав его из репозитория GitHub). По этому «мостику» читатель переходит ко второй части, в которой раскрываются следующие темы:

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


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

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

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


Предлагаем ознакомиться с отрывком «Архитектура OpenTelemetry»

OpenTelemetry состоит из трех разновидностей компонентов: средств инструментирования кода приложений, средств автоматизации развертывания инфраструктуры (например, Kubernetes) и конвейеров для отправки данных телеметрии в систему хранения. Связи между всеми этими компонентами представлены на рис. 4.1.

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

image


Телеметрия приложений


Самым важным источником телеметрии являются приложения. Это означает, что для нормальной работы OpenTelemetry ее поддержка должна быть установлена в каждом приложении. Независимо от того, делаете ли вы это автоматически при помощи агента или же вручную посредством написания кода, установленные компоненты остаются одними и теми же. На рис. 4.2 показано, как они связаны друг с другом.

Инструментирование библиотек


Самая важная телеметрия поступает от библиотек OSS, таких как фреймворки, HTTP и клиенты RPC, клиенты баз данных. В большинстве приложений библиотеки берут на себя самую тяжелую работу, и часто телеметрии от этих библиотек достаточно для обеспечения данными почти всех действий, выполняемых приложением.

image


В наши дни большинство библиотек OSS не оснащены встроенными средствами инструментирования OpenTelemetry. Это означает, что такие средства должны устанавливаться отдельно. OpenTelemetry предоставляет возможности инструментирования для многих популярных библиотек OSS.

OpenTelemetry API


Инструментирование библиотек очень полезно, но вам наверняка захочется инструментировать критические части кода приложения и бизнес-логики. Для этого вы будете использовать OpenTelemetry API. Устанавливаемые средства инструментирования библиотек также написаны с использованием этого API, поэтому существенных различий между инструментированием приложений и библиотек нет.

У OpenTelemetry API имеется особое свойство: ее безопасно вызывать даже в том случае, если поддержка OpenTelemetry не установлена в приложении. Это означает, что библиотеки OSS могут включать средства инструментирования OpenTelemetry, которые будут автоматически активизироваться. С другой стороны, когда библиотека устанавливается в приложениях, не использующих OpenTelemetry, все обойдется пустой операцией с нулевыми затратами. За дополнительной информацией об инструментировании библиотек OSS обращайтесь к главе 6.

OpenTelemetry SDK


Чтобы вызовы OpenTelemetry API, отправляемые из библиотек и кода приложения, действительно обрабатывались, необходимо установить клиент OpenTelemetry. Мы будем называть этот клиент OpenTelemetry SDK. SDK представляет собой подключаемый фреймворк, состоящий из алгоритмов выборки, перехватчиков жизненного цикла и экспортеров, которые могут настраиваться при помощи переменных окружения или конфигурационных файлов YAML.

О важности инструментивания

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


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

Телеметрия инфраструктуры


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

OpenTelemetry постепенно интегрируется в Kubernetes и другие облачные сервисы. Но даже без OpenTelemetry многие инфраструктурные сервисы предоставляют ту или иную разновидность полезной телеметрии. OpenTelemetry поставляется с рядом компонентов, которые могут использоваться для сбора существующих данных и включения их в конвейер телеметрии, поступающей от приложения. (За дополнительной информацией обращайтесь к главе 7.)

Конвейеры телеметрии


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

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

Для решения этой проблемы в OpenTelemetry входят два первичных компонента: OpenTelemetry Protocol (OTLP), рассмотренный в главе 3, и Collector, подробно рассматриваемый в главе 8.

Чего нет в OpenTelemetry


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

Почему? По причине стандартизации. Хотя и можно разработать стабильный, универсальный язык для описания компьютерных операций, аналитическая часть наблюдаемости будет вечно развиваться. Одной из целей создания OpenTelemetry была совместимость со всеми средствами анализа и содействие построению многих более совершенных и новаторских инструментов в будущем. В результате проект OpenTelemetry никогда не будет расширен включением некоторой формы «официального» бэкенда наблюдаемости, который бы рассматривался как особый или выделяющийся на фоне остальных систем наблюдаемости в мире. Такое разделение обязанностей — стандартизированная поставка телеметрии в вечно изменяющемся окружении аналитических средств — играет фундаментальную роль в том, как проект OpenTelemetry «видит» окружающий мир.

Об авторах
imageТед Янг — один из соучредителей проекта OpenTelemetry. За прошедшие 20 лет он проектировал и строил различные крупномасштабные распределенные системы, включая конвейеры визуальных эффектов и контейнерные системы планирования. Он живет на маленькой ферме в Портленде, штат Орегон, и в свободное время снимает комические фильмы, плохие фильмы и комически плохие фильмы.

imageОстин Паркер — директор по Open Source в honeycomb.io, соучредитель проекта OpenTelemetry и участник Руководящего комитета OpenTelemetry. За 20 с лишним лет работы в IT и отрасли разработки ПО Остин построил облачно-ориентированные платформы для многих отраслей, включая банковское дело, здравоохранение и телекоммуникации, и поддерживал их. Кроме того, Остин часто пишет книги, выступает на международных конференциях и координирует работу сообществ по темам открытого кода и наблюдаемости. Он написал книгу «Distributed Tracing in Practice», является сопредседателем и организатором Observability Day по Северной Америке, Европе, Среднему Востоку и Африке, а также основателем первого (и единственного в мире) виртуального мероприятия DevOps в «Animal Crossing», Deserted Island DevOps. Вы сможете больше узнать о его книгах на сайте aparker.io.


Более подробно с книгой можно ознакомиться на сайте издательства:

» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — OpenTelemetry

© Habrahabr.ru