Использование инструмента Трассировка

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Что такое инструмент трассировки?

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

Посмотрите это видео, чтобы ознакомиться с инструментом трассировки.

Как использовать трассировку

Использовать Trace очень просто. Вы запускаете сеанс трассировки, затем выполняете вызов API к платформе Edge и считываете результаты.

  1. Перейдите на страницу API-прокси, как описано ниже.

    Край

    Чтобы получить доступ к странице API-прокси через пользовательский интерфейс Edge:

    1. Войдите на сайт apigee.com/edge .
    2. В левой панели навигации выберите «Разработка» > «API-прокси» .

    Классический Edge (частное облако)

    Чтобы получить доступ к странице API-прокси с помощью классического интерфейса Edge:

    1. Войдите в систему по http:// ms-ip :9000 , где ms-ip — это IP-адрес или DNS-имя узла сервера управления.
    2. В верхней панели навигации выберите API > API-прокси .
  2. Выберите API-прокси на странице «API-прокси».
  3. Убедитесь, что API, который вы хотите отслеживать, развернут.
  4. Нажмите кнопку «Трассировка» , чтобы перейти к окну инструмента «Трассировка».
  5. Используйте раскрывающееся меню «Развертывание для трассировки» , чтобы выбрать среду развертывания и версию прокси-сервера, которые вы хотите отслеживать.
  6. Нажмите «Начать сеанс трассировки» . Когда сеанс трассировки активен, API-прокси записывает подробную информацию о каждом шаге в конвейере обработки. Во время выполнения сеанса трассировки сообщения и контекстные данные захватываются из реального трафика.

  7. Если через ваш прокси-сервер не проходит активный трафик, просто отправьте запрос к API. Вы можете использовать любой инструмент для отправки запроса, например, curl, Postman или любой другой привычный инструмент. Или вы можете отправить запрос непосредственно из инструмента трассировки. Просто введите URL-адрес и нажмите «Отправить» . Примечание: из инструмента трассировки можно отправлять только GET-запросы, но не POST-запросы.

    Примечание: Одна сессия трассировки может поддерживать 10 транзакций запрос/ответ на каждый обработчик сообщений через выбранный API-прокси. В облаке Edge, при обработке трафика двумя обработчиками сообщений, поддерживается 20 транзакций запрос/ответ. Сессия трассировки автоматически останавливается через 10 минут, если вы не остановите ее вручную.
  8. Когда будет зафиксировано достаточное количество запросов, нажмите кнопку «Остановить сеанс трассировки» .
  9. В левом меню отображается список перехваченных транзакций запроса/ответа. Щелкните любую из транзакций, чтобы просмотреть подробные результаты.

Как расшифровать трассировку

Инструмент трассировки состоит из двух основных частей: карты транзакций и подробной информации о фазах:

  • Карта транзакций использует значки для обозначения каждого важного шага, происходящего во время транзакции API-прокси, включая выполнение политик, условные шаги и переходы. Наведите курсор на любой значок , чтобы увидеть сводную информацию. Шаги потока запроса отображаются в верхней части карты транзакций, а шаги потока ответа — в нижней.
  • В разделе « Подробности этапа» инструмента отображается информация о внутренней обработке прокси-сервера, включая установленные или считанные переменные, заголовки запроса и ответа и многое другое. Щелкните любой значок, чтобы просмотреть подробности этапа для этого шага.

Вот пример карты трассировки, созданной с помощью инструмента, с обозначением основных сегментов обработки прокси-сервера:

Карта транзакций инструмента трассировки

Легенда карты транзакций

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

Значки карты транзакций

Клиентское приложение, отправляющее запрос на ProxyEndpoint API-прокси.
Кружками обозначены переходные конечные точки в потоке прокси-запроса. Они находятся там, где поступает запрос от клиента, когда запрос отправляется целевому объекту, когда от целевого объекта приходит ответ, и когда ответ возвращается клиенту.

Высокие полосы указывают на начало сегмента потока в потоке API-прокси. Сегменты потока: запрос ProxyEndpoint, запрос TargetEndpoint, ответ TargetEndpoint и ответ ProxyEndpoint. Сегмент включает в себя предварительный поток (PreFlow), условные потоки (Conditional Flows) и постпоток (PostFlow).

Дополнительную информацию см. в разделе «Настройка потоков» .

Указывает на то, что действия аналитики выполнялись в фоновом режиме.

Условный поток, результат которого равен true. Введение в условные потоки см. в разделе «Настройка потоков» .

Обратите внимание, что некоторые условия генерируются Edge. Например, ниже приведено выражение, которое Edge использует для проверки наличия ошибки в ProxyEndpoint:

((error.state equals PROXY_REQ_FLOW) or (error.state equals PROXY_RESP_FLOW))

Условный поток, результат которого равен false. Введение в условные потоки см. в разделе «Настройка потоков» .

Обратите внимание, что некоторые условия генерируются Edge. Например, ниже приведено выражение, которое Edge использует для проверки наличия ошибки в TargetEndpoint:

(((error.state equals TARGET_REQ_FLOW) or (error.state equals TARGET_RESP_FLOW)) or ((error.state equals REQ_SENT) or (error.state equals RESP_START)))

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

Правильное выполнение политик четко обозначается галочками. В случае ошибки на значке отображается красный восклицательный знак.

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

Эта ошибка появляется, когда целевым бэкэндом является приложение Node.js. См. Обзор Node.js в Apigee Edge .
Целевой бэкэнд, вызываемый API-прокси.
Временная шкала показывает, сколько времени (в миллисекундах) потребовалось для завершения обработки. Сравнение прошедших временных отрезков помогает выявить политики, выполнение которых занимает больше всего времени и которые замедляют вызовы API.
Символ эпсилон обозначает временной промежуток меньше миллисекунды.

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

Ошибка. Отображается на значке политики, когда условие шага политики принимает значение false (см. Переменные и условия потока ), или на значке политики RaiseFault всякий раз, когда выполняется политика RaiseFault.
Пропущено. Отображается на значке политики, если политика не была выполнена, поскольку условие шага оказалось ложным. Дополнительную информацию см. в разделе «Переменные и условия потока» .

Понимание деталей фазы

Раздел «Подробности этапа» инструмента предоставляет много информации о состоянии вашего прокси-сервера на каждом этапе обработки. Вот некоторые из деталей, представленных в разделе «Подробности этапа». Щелкните любой значок в инструменте трассировки, чтобы просмотреть подробности для выбранного этапа, или используйте кнопки «Далее» / «Назад» , чтобы перейти от одного этапа к другому.

Детали этапа Описание
Прокси-конечная точка Указывает, какой поток ProxyEndpoint был выбран для выполнения. API-прокси может иметь несколько именованных конечных точек прокси.
Переменные

Отображает список переменных потока, которые были считаны и которым было присвоено значение политикой. См. также раздел «Управление состоянием прокси-сервера с помощью переменных потока» .

Примечание :

  • Знак равенства (=) указывает на значение, присвоенное переменной.
  • Перечеркнутый знак равенства (≠) указывает на то, что переменной не удалось присвоить значение, поскольку она доступна только для чтения или произошла ошибка при выполнении политики.
  • Пустое поле указывает на то, что значение переменной было считано.
Заголовки запроса Отображает заголовки HTTP-запроса.
Запрос содержимого Отображает тело HTTP-запроса.
Характеристики Свойства представляют собой внутреннее состояние API-прокси. По умолчанию они не отображаются.
Целевая конечная точка Указывает, какой целевой объект (TargetEndpoint) был выбран для выполнения.
Заголовки ответа Отображает заголовки HTTP-ответа.
Содержание ответа Отображает тело HTTP-ответа.
PostClientFlow Отображает информацию о PostClientFlow, который выполняется после того, как запрос возвращается в запрашивающее клиентское приложение. К PostClientFlow можно прикрепить только политики MessageLogging. В настоящее время PostClientFlow используется в основном для измерения временного интервала между начальной и конечной метками времени ответного сообщения.

Уточнение захвата сообщений с помощью фильтров.

Вы можете отфильтровать запросы, отображаемые в инструменте трассировки, указав значения заголовков и/или параметров запроса. Фильтры позволяют нацелиться на конкретные вызовы, которые могут вызывать проблемы. Например, вам может потребоваться сосредоточиться на запросах с определенным содержимым или запросах, поступающих от определенных партнеров или приложений. Вы можете фильтровать по следующим параметрам:

  • HTTP-заголовки — ограничьте трассировку только вызовами, содержащими определенный заголовок. Это хороший способ помочь в устранении неполадок. Вы можете отправить заголовок разработчику вашего приложения и попросить его включить его в вызов, вызывающий проблемы. Тогда Apigee Edge будет записывать только вызовы с этим конкретным заголовком, чтобы вы могли изучить результаты.
  • Параметры запроса — будут записываться только вызовы, содержащие определенное значение параметра.

Что нужно знать о функции фильтра

  • После указания параметров фильтра в полях фильтра необходимо перезапустить сеанс трассировки.
  • Параметры фильтра объединяются с помощью логической операции И. Для успешного совпадения все указанные пары «имя/значение» запроса и/или заголовка должны присутствовать в запросе.
  • В инструменте «Фильтры» сопоставление с шаблонами не поддерживается.
  • Параметры и значения фильтра чувствительны к регистру.

Как создать фильтр трассировки

  1. Если запущена трассировочная сессия, остановите ее, нажав кнопку «Остановить трассировочную сессию» .
  2. Чтобы развернуть поле «Фильтры», нажмите «Фильтры» в верхнем левом углу инструмента «Трассировка».

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

    В инструменте «Трассировка», в разделе «Фильтры», в подразделе «Параметры запроса» заданы два примера имен и значений.
  4. Запустите сеанс трассировки.
  5. Вызывайте свои API. Только запросы, содержащие все указанные заголовки и/или параметры запроса, приводят к успешному совпадению.

В разделе «Транзакции» отображаются четыре результата, соответствующие двум предустановленным параметрам запроса.

В приведенном выше примере этот вызов API отобразится в трассировке:

http://docs-test.apigee.net/cats?name=Penny&breed=Calico

Но этого не произойдет:

http://docs-test.apigee.net/cats?name=Penny

Отладка с помощью трассировки

Функция трассировки позволяет увидеть множество внутренних деталей работы API-прокси. Например:

  • Вы можете с первого взгляда увидеть, какие политики выполняются корректно, а какие — с ошибкой.
  • Допустим, вы заметили на одной из панелей аналитики, что производительность одного из ваших API снизилась необычным образом. Теперь вы можете использовать трассировку (Trace), чтобы определить, где находится узкое место. Трассировка показывает время в миллисекундах, необходимое для завершения каждого этапа обработки. Если вы обнаружите, что какой-то этап занимает слишком много времени, вы можете принять корректирующие меры.
  • Просматривая детали этапа, вы можете проверить заголовки, отправляемые на серверную часть, просмотреть переменные, установленные политиками, и так далее.
  • Проверив базовый путь, вы можете убедиться, что политика направляет сообщение на правильный сервер.

Выбор параметров просмотра

Выберите параметры просмотра для сеанса трассировки.

Вариант Описание
Показать правила для инвалидов Отобразить все отключенные политики. Политику можно отключить с помощью общедоступного API. См. справочник по настройке прокси-сервера API .
Показать пропущенные фазы Укажите все пропущенные этапы. Пропущенный этап возникает, когда политика не была выполнена, поскольку условие шага оказалось ложным. Дополнительную информацию см. в разделе «Переменные и условия потока» .
Показать все FlowInfos Представляют переходы внутри сегмента потока.
Автоматическое сравнение выбранных фаз Сравнивает выбранную фазу с предыдущей. Отключите эту функцию, чтобы отображалась только выбранная фаза.
Показать переменные Показать или скрыть переменные, которые были считаны и/или которым было присвоено значение.
Показать свойства Свойства отражают внутреннее состояние API-прокси. (По умолчанию скрыты.)

Загрузка результатов трассировки

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

Для загрузки нажмите «Загрузить сессию трассировки» .

Отображение запросов как curl

После отслеживания вызова API к целевому серверу вы можете просмотреть запрос как команду curl. Это особенно полезно для отладки по нескольким причинам:

  • API-прокси может изменять запрос, поэтому полезно посмотреть, чем отличается запрос от прокси к целевому серверу от исходного запроса. Команда curl отображает измененный запрос.
  • Для сообщений большого объема curl позволяет просматривать HTTP-заголовки и содержимое сообщения в одном месте. (В настоящее время существует ограничение примерно в 1000 символов. Совет по преодолению этого ограничения можно найти в этом сообщении на форуме сообщества .)

В целях безопасности функция curl маскирует заголовок HTTP Authorization.

Чтобы в трассировке отображались запросы в формате curl после выполнения вызова API, выберите этап «Запрос отправлен на целевой сервер» на диаграмме карты транзакций, а затем нажмите кнопку « Показать curl» в столбце «Запрос отправлен на целевой сервер» на панели сведений об этапе.

Аннотации на изображении указывают на кнопку «Показать завиток» и один из кругов на диаграмме «Карта транзакций».

Поддержка Apigee в использовании Trace

По умолчанию Apigee Edge позволяет службе поддержки Apigee использовать инструмент трассировки на ваших прокси-серверах API для оказания поддержки. Вы можете отключить эту опцию в любое время. Однако отключение этой опции может ограничить возможности службы поддержки Apigee по оказанию вам поддержки.

Чтобы запретить службе поддержки Apigee использовать инструмент Trace:

  1. Войдите на https://apigee.com/edge .
  2. Выберите «Администратор» > «Конфиденциальность и безопасность» на левой панели навигации.
  3. Щелкните переключатель Включить поддержку Apigee для трассировки , чтобы отключить использование инструмента трассировки службой поддержки Apigee.