Как распечатать пользовательские подсегменты в консоли управления AWS X-Ray?

Я добавил основной сегмент маршрутов для моего REST API, который написан на Node.js и работает с функцией Lambda. Я также включил трассировку шлюза API для X-Ray. Я хочу видеть время запроса sql как подсегмент из консоли X-Ray, поэтому я использовал функцию AWSXRay.captureAsyncFunc и добавил ее для всех запросов sql, и я могу распечатать журналы трассировки. На следующем снимке экрана показаны сегмент и подсегмент для запроса GET.

Запись сегмента и сегмента рентгеновского снимка

Я хочу увидеть подсегмент в консоли управления AWS X-Ray. В разделе трассировки X-Ray я вижу только тайминги API Gateway и Lambda.

Сегменты API Gateway и Lambda в консоли AWS X-Ray

Кто-нибудь знает, как распечатать пользовательские подсегменты на временной шкале X-Ray?

Когда я нажимаю на необработанные данные на консоли X-Ray, я вижу вот что. Я хочу видеть свой специальный сегмент. На вкладке сырых данных показаны только сегменты API Gateway и Lambda.

Вкладка сырых данных


person Nil    schedule 25.03.2019    source источник


Ответы (2)


Какая версия вашей лямбда-функции исполняется в Node? Какой тип обработчика лямбда-событий вы используете? Какую версию X-Ray Node SDK вы используете? Какой стиль / библиотеку вы используете для вызова своей базы данных SQL? Это обратный вызов, обещание или async / await?

Причина, по которой ваш getItem подсегмент не отображается, вероятно, заключается в том, что в ваших журналах трассировки в этом подсегменте нет parent_id. Это потенциально проблема совместимости между средой выполнения Lambda-узла и X-Ray SDK для Nodejs, так что подсегмент SQL не фиксируется должным образом.

Не стесняйтесь открывать вопрос на https://github.com/aws/aws-xray-sdk-node с ответами на приведенные выше вопросы, чтобы можно было найти обходной путь / исправления.

person haotian465    schedule 04.04.2019
comment
Версия лямбда-узла: 8.10 - person Nil; 12.04.2019
comment
Лямбда-функция запускается службой шлюза API. AWS-xray-sdk версии 2.2.0 используется для добавления сегмента открытия / закрытия до и после экспресс-маршрутов внутри приложения. AWS-xray-sdk-core версии 2.2.0 используется для вызова captureAsyncFunc. Я не мог использовать aws-xray-sdk-postgres, потому что я использую PoolClient вместо клиента для postgres, а aws-xray-sdk-postgres ожидает объект клиента postgres. Поэтому мне пришлось использовать настраиваемую функцию захвата. - person Nil; 12.04.2019

Они отображаются на вкладке «Необработанные данные» на временной шкале консоли. Это показывает тот же самый json, который возвращается API BatchGetTraces.

person Rohit Banga    schedule 25.03.2019
comment
Когда я открываю вкладку необработанных данных, я не вижу свой настраиваемый подсегмент для запросов sql. Все, что я вижу, это то же самое, что и результаты на временной шкале. Каким-то образом мои пользовательские трассировки подсегментов не доходят до X-Ray Daemon. Хотя я могу распечатать свой собственный сегмент, я не вижу его в консоли AWS X-Ray. - person Nil; 25.03.2019
comment
Ищете подсегмент getItems? Он отсутствует для конкретной трассы или для всех трасс? Подсегмент не должен быть бесхозным, чтобы он мог быть частью трассировки. Глядя на опубликованную вами трассировку, кажется, что она является частью сегмента, то есть принадлежит сегменту. Так что не похоже, что это сирота. Также он должен быть хорошо сформирован ... Он должен иметь как минимум обязательные поля: начало, время окончания, имя, идентификатор. Опять же getItems не показывает никаких немедленных проблем - person Rohit Banga; 25.03.2019
comment
Да, я ищу подсегмент getItems. Отправленный мной след не с консоли AWS X-Ray. Я распечатал журналы запросов во время тестирования, поэтому необработанные данные не совпадают, и я не могу найти ту же трассировку с консоли X-Ray. Я разместил в качестве примера свой собственный подсегмент из моих журналов. Проблема в том, что я не вижу свой собственный фрагмент из консоли X-Ray. - person Nil; 25.03.2019