Что такое распределенное отслеживание?
Распределенное отслеживание – это отслеживание запросов данных, проходящих через распределенную систему. Современная архитектура микросервисов часто состоит из нескольких небольших независимых компонентов – эти компоненты постоянно взаимодействуют и обмениваются данными с помощью API для выполнения сложной работы. С помощью распределенного отслеживания разработчики могут наблюдать или визуализировать запрос, проходящий по разным микросервисам. Это помогает устранять ошибки и решать проблемы с производительностью.
В чем преимущества распределенного отслеживания?
Разработчики программного обеспечения могут внедрять системы распределенного отслеживания практически в любой среде, оптимизированной для облака, а также записывать распределенные отслеживания, генерируемые облачными приложениями. Кроме того, инструменты отслеживания поддерживают множество языков программирования и программных стеков, что позволяет разработчикам осуществлять мониторинг и собирать данные о производительности различных приложений на одной платформе.
Разработчики используют распределенное отслеживание с целью улучшать наблюдаемость и решать проблемы с производительностью, что невозможно при помощи обычных инструментов отладки и мониторинга программного обеспечения.
Ниже приведены дополнительные преимущества распределенного отслеживания.
Ускоренное устранение неполадок программного обеспечения
Современные приложения используют множество микросервисов для обмена данными и выполнения запросов в распределенных системах. Устранять проблемы с производительностью в архитектуре на основе микросервисов значительно сложнее, чем в монолитном приложении. В отличие от монолитного приложения, причины проблем с архитектурой микросервисов зачастую неочевидны – сложные пересекающиеся взаимодействия между несколькими программными модулями могут затруднить диагностику.
С помощью распределенного отслеживания разработчики программного обеспечения могут осуществлять мониторинг информации, проходящей по сложным путям, соединяющим различные микросервисы и хранилища данных, а также отслеживать запросы и точно визуализировать пути распространения данных. Они также могут быстро решать проблемы с производительностью и минимизировать перебои в обслуживании.
Более качественное сотрудничество разработчиков
В создании облачного приложения часто участвуют несколько разработчиков, каждый из которых отвечает за один или несколько микросервисов. Процесс замедляется, если разработчики не могут отслеживать данные, которыми обмениваются микросервисы. Используя системы распределенного отслеживания разработчики могут сотрудничать, предоставляя телеметрические данные, такие как журналы и отслеживания, по каждому запросу микросервиса, а также точно реагировать на ошибки и другие проблемы программного обеспечения, обнаруженные при разработке и тестировании.
Сокращение времени выхода на рынок
Организации, внедряющие платформы распределенного отслеживания, могут упростить и ускорить выпуск программного обеспечения для конечных пользователей. Разработчики анализируют распределенные отслеживания на предмет информации, которая поможет ускорить разработку, минимизировать затраты, понять поведение пользователей и повысить готовность к выходу на рынок.
Какие существуют типы распределенного отслеживания?
Разработчики программного обеспечения используют инструменты распределенного отслеживания для мониторинга, анализа и оптимизации приложений.
Отслеживание кода
Отслеживание кода – это программный процесс, проверяющий поток исходных кодов в приложении при выполнении определенной функции. Это помогает разработчикам понять логику кода и выявить в нем проблемы. Например, отслеживание кода используется чтобы проверить, вызвал ли запрос к сервису шаги по запросу базы данных. Если некоторые программные функции не отвечают, система отслеживания определит соответствующий статус ошибки и сохранит время отклика.
Отслеживание программ
Отслеживание программ – это метод, при котором разработчики могут проверять адреса инструкций и переменных, вызываемых активным приложением. Программное приложение в рабочем состоянии обрабатывает каждую строку кода, которая находится в специально выделенном пространстве памяти, и переменные, хранящиеся в памяти компьютера. Без автоматизированного инструмента сложно проверять изменения в памяти программ и данных. С помощью отслеживания программ разработчики могут диагностировать такие проблемы производительности, как переполнение памяти, чрезмерное потребление ресурсов и блокировка логических операций.
Комплексное отслеживание
Благодаря комплексному отслеживанию команды разработчиков могут наблюдать, как преобразовываются данные вследствие запроса к сервису. Когда приложение инициирует запрос, оно отправляет данные другим программным компонентам для дальнейшей обработки. Разработчики отслеживают и компилируют изменения в критически важных данных от начала до конца цепочки, что дает им детальное представление о проходящих через приложение запросах.
Как работает комплексное распределенное отслеживание в архитектуре микросервисов?
Используя приложения, пользователи инициируют запросы, обрабатывающиеся в разных компонентах.
Представим, что пользователь бронирует билеты на сайте кинотеатра. Он вводит свои контактные данные, сведения о фильме и платежную информацию и выбирает «Забронировать сейчас». Создается запрос, который проходит по цепочке микросервисов.
- На микросервисе A проверяются введенные пользователем данные.
- На микросервисе B они записываются в базе данных клиентов.
- На микросервисе C проверяется и утверждается платеж.
- На микросервисе D определяется нужное клиенту место и генерируется билет.
- На микросервисе E создается отформатированный PDF-файл билета.
Билет в формате PDF затем возвращается обратно по цепочке микросервисов от E до A, в конечном итоге доходя до пользователя. Приведенный выше пример прост: запрос часто проходит через несколько десятков микросервисов и даже цепочек компонентов стороннего программного обеспечения за пределами приложения. Это комплексный процесс.
Благодаря системам распределенного отслеживания можно наблюдать за запросами и их обработкой в микросервисах и компонентах программного обеспечения в среде распределенных вычислений. Распределенное отслеживание представляет собой график и все действия, происходящие между генерацией запроса и ответом на него. Разработчики программного обеспечения отслеживают перемещения данных по нескольким микросервисам, с которыми взаимодействует первоначальный запрос.
Интервалы
Обрабатывая запрос к сервису, приложение может выполнить несколько действий. В распределенном отслеживании эти действия представлены в виде интервалов. Например, интервал может представлять собой вызов API, аутентификацию пользователя или предоставление доступа к хранилищу. Если один запрос приводит к нескольким действиям, начальный (родительский) интервал может разветвляться на несколько дочерних. Эти вложенные слои родительских и дочерних интервалов представляют собой непрерывную логическую цепочку шагов, предпринятых для выполнения запроса к сервису.
Идентификаторы отслеживаний
Система распределенного отслеживания присваивает каждому запросу уникальный идентификатор. Каждый интервал наследует идентификатор исходного запроса. Интервалам также присваивается уникальный идентификатор, помогающий системе отслеживания консолидировать собранные метаданные, журналы и метрики.
Сбор метрик
Когда каждый интервал проходит через разные микросервисы, к нему добавляются метрики, которые дают разработчикам глубокое и точное представление о поведении программного обеспечения. По интервалам можно собирать данные о частоте ошибок, метках времени, скорости ответа и других метаданных. После того как полный цикл отслеживания завершается, инструмент распределенного отслеживания объединяет все собранные данные.
Например, вызов API оценивается по времени отклика, статусу ошибки и разбивке вторичных функций, выполняемых несколькими сторонними сервисами. Инструмент отслеживания преобразует данные в визуализации, выделяя ключевые показатели и сводки об эффективности. Таким образом, инженеры по надежности сайта могут быстро выявлять ошибки, проверять критически важные элементы данных, а также совместно с разработчиками устранять проблемы с производительностью и обеспечивать соблюдение соглашений об уровне обслуживания (SLA).
Какие существуют стандарты распределенного отслеживания?
Стандарты распределенного отслеживания включают общую платформу и программные инструменты для разработчиков. С помощью этих стандартов можно отслеживать, визуализировать и анализировать запросы к сервисам в средах современных приложений. Стандартизируя рабочий процесс распределенного отслеживания, разработчики программного обеспечения могут управлять им без привязки к поставщикам.
В следующих разделах описываются стандарты, обеспечивающие совместимость при распределенном отслеживании.
Стандарт OpenTracing
OpenTracing – это стандарт распределенного отслеживания с открытым исходным кодом, разработанный Cloud Native Computing Foundation (CNCF). OpenTracing позволяет разработчикам создавать отслеживания с помощью инструментального API и генерировать их из разных частей базы кода, библиотеки или других зависимостей.
Стандарт OpenCensus
OpenCensus состоит из многоязычных библиотек, способных извлекать программные метрики и отправлять их на анализ в серверные системы. Разработчики могут управлять созданием и сбором отслеживаний с помощью предоставленного API. В отличие от OpenTracing, разработчики работают с OpenCensus не из отдельных баз кода и библиотек, а из единого репозитория проектов.
Стандарт OpenTelemetry
OpenTelemetry объединяет OpenTracing и OpenCensus. Он сочетает в себе лучшие функции обоих стандартов и обеспечивает комплексную платформу распределенного отслеживания. OpenTelemetry предоставляет API, библиотеки, обширные наборы инструментов для разработчиков и т. д., что значительно упрощает распределенное отслеживание.
В чем разница между распределенным отслеживанием и ведением журналов?
Ведение журнала означает записывание определенных событий, происходящих во время работы приложения. С помощью инструментов для ведения журналов можно записывать события с указанием времени, такие как системные ошибки, действия пользователей, статусы связи и другие показатели, чтобы помочь командам разработчиков выявлять аномалии в системе. Существует два типа ведения журналов.
- Под централизованным ведением журналов подразумевается сбор всех действий, а также их регистрация и сохранение в едином местоположении.
- При распределенном ведении журналов файлы хранятся в разных местах в облаке.
Оба метода предоставляют статический обзор инцидентов, показывающий разработчикам, что произошло в приложении. Напротив, распределенное отслеживание обеспечивает журнал аудита, позволяющий выяснить, почему произошел инцидент, путем сопоставления различных телеметрических данных, собранных по результатам запроса к сервису. В распределенном отслеживании можно использовать ведение журналов и другие методы сбора данных, чтобы отслеживать конкретные запросы к сервису.
С какими проблемами можно столкнуться в распределенном отслеживании?
Распределенное отслеживание упростило разработчикам задачи по диагностике, отладке и устранению проблем программного обеспечения. Несмотря на это, необходимо учитывать проблемы при выборе инструментов отслеживания, приведенные ниже.
Обработка кодов вручную
В некоторых инструментах команды разработчиков программного обеспечения вручную обрабатывают свои коды для создания необходимых отслеживаний. Когда разработчики изменяют коды для отслеживания запросов, возникает риск ошибок, влияющих на производственную среду. Кроме того, отсутствие автоматизации усложняет отслеживание, приводит к задержкам и, возможно, к неточному сбору данных.
Ограниченное покрытие интерфейсных сервисов
Разработчики, возможно, не смогут полностью контролировать проблемы с производительностью, если их инструменты отслеживания ограничены анализом внутренних сервисов. В некоторых случаях система распределенного отслеживания начинает собирать данные только тогда, когда первый внутренний сервис получает запрос. Так, разработчики не могут обнаруживать и решать проблемы, связанные с интерфейсными сервисами, во время соответствующего пользовательского сеанса.
Случайные отслеживания
В некоторых инструментах отслеживания проводятся выборочно, что ухудшает наблюдаемость и лишает разработчиков возможности определять приоритеты. Выборочные данные ограничены, поэтому организациям требуются дополнительные подходы к устранению неполадок программного обеспечения и выявлению проблем, которые сложно отследить.
Как AWS может помочь удовлетворить ваши требования к распределенному отслеживанию?
AWS X-Ray – это платформа распределенного отслеживания, которая помогает разработчикам программного обеспечения отслеживать запросы пользователей и выявлять проблемы в своих облачных приложениях. С помощью X-Ray организации визуализируют метрики приложений и повышают доступность рабочих процессов. Благодаря AWS X-Ray вы можете:
- интегрироваться с приложениями, работающими в Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda и AWS Elastic Beanstalk.
- устанавливать подходящие частоты дискретизации, чтобы обеспечить в отслеживаниях полную видимость;
- визуализировать агрегированные данные с помощью карты сервисов, отображающей ключевые показатели, такие как задержки и частота отказов.
Начните работу с распределенным отслеживанием на AWS, создав аккаунт уже сегодня.
AWS: дальнейшие шаги
Получите мгновенный доступ к уровню бесплатного пользования AWS.