Вопросы и ответы по AWS X-Ray

Общие вопросы

AWS X-Ray помогает разработчикам анализировать свои продукты и распределенные приложения (например, на базе архитектуры микросервисов), а также устранять ошибки. X-Ray позволяет оценить производительность приложения и сервисов, на которых основана его работа, чтобы определить и устранить первопричины снижения производительности и сбоев. X‑Ray обеспечивает комплексное отслеживание запросов и их маршрутов в приложении и показывает карту внутренних компонентов приложения. X-Ray используется для анализа приложений на стадии разработки и развертывания, от простых трехступенчатых вариантов до сложных приложений, состоящих из тысяч микросервисов.

Сегодня при создании и развертывании распределенных приложений разработчики вынуждены следить за перемещением запросов между компонентами приложения с помощью процессов, привязанных к отдельным ресурсам и сервисам. Задача осложняется еще и разницей форматов журналов и носителей в разных инфраструктурах, сервисах и ресурсах, на которых работает приложение или которые оно использует. Таким образом, найти свое место для каждого элемента данных и воссоздать полный маршрут запроса с момента создания на сервисе или устройстве конечного пользователя и до возвращения ответа из приложения становится очень непросто. X-Ray предоставляет модель сбора данных о запросах к приложению, которая ориентирована на пользователя, а не на сервисы и ресурсы. Эта модель позволяет построить ориентированную на пользователя картину перемещения запросов между ресурсами и сервисами. X-Ray автоматически собирает и сопоставляет все необходимые данные, позволяя разработчикам сосредоточиться на развитии взаимодействия с пользователем через свое приложение.

X-Ray помогает выполнять следующие задачи.

  • Создание карты сервисов. X-Ray отслеживает запросы к приложениям и создает карту используемых ими сервисов. Это позволяет увидеть связи между сервисами приложения, создать дерево зависимостей, обнаружить задержки и ошибки при работе между зонами доступности и регионами AWS, идентифицировать сервисы, которые работают неправильно и т. д.
  • Выявление ошибок. X-Ray анализирует код, возвращаемый при обработке каждого запроса к приложению, и автоматически выделяет ошибки в коде приложения. Это позволяет легко исправлять ошибки в коде приложения, не воссоздавая их.
  • Создание собственных приложений для анализа и визуализации. X-Ray включает набор API для запросов, позволяющих создавать собственные приложения для анализа и визуализации на основе собираемых X-Ray данных.

Основные понятия

Маршрут в X-Ray – это набор точек данных с общим ID маршрута. К примеру, когда клиент создает запрос к приложению, этому запросу назначается уникальный ID маршрута. Запрос начинает перемещаться между сервисами приложения, и сервисы передают информацию об этом запросе в X-Ray с помощью этого уникального ID маршрута. Каждый элемент данных, передаваемый сервисом приложения в X-Ray – это сегмент, а маршрут – это набор таких сегментов.

Сегмент X-Ray содержит все точки данных одного компонента распределенного приложения (например, сервиса авторизации). Сегменты включают в себя определенные системой и пользователем данные в виде аннотаций и состоят из одного или более подсегментов – удаленных вызовов, выполненных сервисом. Например, когда приложение в ответ на запрос выполняет вызов базы данных, для этого запроса создается сегмент, подсегменты которого описывают выполненный вызов базы данных и полученный ответ. Подсегмент может содержать такие данные, как запросы, использованные таблицы, отметки времени и статусы ошибок.

Аннотация в X-Ray – это определенные системой или пользователем данные, связанные с сегментом. Сегмент может содержать несколько аннотаций. Определенные системой аннотации включают данные, добавляемые в сегмент сервисами AWS, а определенные пользователем аннотации – это метаданные, добавляемые в сегмент разработчиком. Например, данные о регионе для вызовов сервисов AWS могут быть добавлены в созданный приложением сегмент автоматически, а данные о регионе для вызовов сервисов, не принадлежащих AWS, нужно добавлять самостоятельно.

Ошибки в X-Ray – это системные аннотации, привязанные к сегментам, в которых вызов вернул сообщение об ошибке. Ошибка включает в себя сообщение об ошибке, маршрут стека и любую дополнительную информацию (например, версию или ID подтверждения записи), которая поможет сопоставить ошибку с исходным файлом.

Для оптимизации производительности и стоимости сервис X-Ray не собирает данные по каждому запросу, отправленному в приложение. Вместо этого сервис собирает данные по статистически значимому количеству запросов. Сервис X-Ray не следует использовать как инструмент для аудита и проверки соответствия требованиям, так как он не гарантирует полноту данных.

Демон X-Ray собирает сведения о маршрутах и отправляет их в сервис X-Ray для последующего объединения, анализа и хранения. Демон позволяет упростить вашу работу: вы отправляете данные в сервис X-Ray вместо использования API напрямую.

Работа с AWS X-Ray

Чтобы начать работу с X-Ray, подключите языковой пакет SDK X-Ray к приложению и установите демон X-Ray. Подробнее см. в Руководстве пользователя X-Ray.

X-Ray можно использовать для отслеживания и отладки синхронных запросов и асинхронных событий в распределенных приложениях любого размера. Например, с помощью X-Ray можно отслеживать сетевые запросы к интернет-приложению или асинхронные события, использующие очереди Amazon SQS.

X-Ray можно использовать с приложениями, работающими на EC2, ECS, в Lambda, Amazon SQS, Amazon SNS и Elastic Beanstalk. Кроме того, SDK X-Ray автоматически отслеживает метаданные API-запросов к сервисам AWS, выполненных с помощью SDK AWS. В SDK X-Ray входят дополнения для драйверов MySQL и PostgreSQL.

При использовании Elastic Beanstalk следует включить в код приложения соответствующие языковые библиотеки X-Ray. Для приложений, работающих в других сервисах AWS, таких как EC2 и ECS, необходимо установить демон X-Ray и обработать код приложения.

Да, у сервиса X-Ray есть набор API для обработки данных о запросах, сбора маршрутов и настройки сервиса. С помощью API X-Ray можно дополнительно разработать собственные приложения для анализа и визуализации.

Да. X-Ray регистрирует все вызовы API как события управления. Сервис также регистрирует вызовы трассировок как события данных, в том числе в PutTraceSegments и GetTimeSeriesServiceStatistics и других API. По умолчанию данные о событиях не регистрируются. Чтобы их зарегистрировать, необходимо настроить отслеживание событий CloudTrail или хранилище данных о событиях для их сбора.

Регионы

Подробнее см. на странице «Продукты и сервисы по регионам».

Да, X-Ray позволяет следить за запросами в адрес приложений и сервисов, распределенных на несколько регионов. Данные X-Ray хранятся в регионах обработки, но при этом информации достаточно для того, чтобы объединить данные и сформировать общую карту маршрутов. Региональные аннотации для сервисов AWS создаются автоматически. При этом собственные сервисы клиента должны самостоятельно добавлять региональные аннотации для поддержания работы в нескольких регионах.

Работа с данными

Данные о маршрутах, отправляемые X-Ray, обычно становятся доступны для загрузки и фильтрации в течение 30 секунд с момента их получения сервисом.

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

X-Ray всегда старается предоставить полную информацию о маршрутах. При этом в некоторых ситуациях (ошибки соединения, задержки при получении сегментов и т. д.) данные, предоставляемые через API X-Ray, будут неполными. В таких случаях X-Ray отмечает маршруты как частичные или неполные.

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