У меня есть код, который создает сегмент при чтении очереди. В первой функции (в той же лямбде) у меня есть следующее:
import * as AWSXRay from 'aws-xray-sdk'; // (using TypeScrpt)
AWSXRay.enableManualMode();
var segment1 = new AWSXRay.Segment("A");
Во второй функции (внутри той же лямбды), вызываемой из первой, у меня есть что-то вроде этого:
var segment2 = new AWSXRay.Segment("B", segment1.trace_id, segment1.id);
Вместо того, чтобы видеть
*->A->B
На графике AWS (на сайте) я вижу:
*->A
*->B
... где они даже не связаны, даже если у них один и тот же идентификатор трассировки, а родительские идентификаторы установлены правильно. Кажется, я чего-то упускаю, но не знаю, что ...?
Я даже попытался вытащить X-Amzn-Trace-Id
из запроса API, чтобы использовать его в качестве корневого идентификатора отслеживания для всего, но это тоже не сработало.
Это JSON для первого сегмента (A):
{
"Duration": 0.808,
"Id": "1-5d781a08-d41b49e35c3c0f38cdbd4912",
"Segments": [
{
"Document": {
"id": "74c99567f73185ce",
"name": "router",
"start_time": 1568152071.979,
"end_time": 1568152072.787,
"parent_id": "ef34fc0bcf23bbbe",
"aws": {
"xray": {
"sdk": "X-Ray for Node.js",
"sdk_version": "2.3.6",
"package": "aws-xray-sdk"
}
},
"service": {
"version": "unknown",
"runtime": "node",
"runtime_version": "v10.16.3",
"name": "unknown"
},
"trace_id": "1-5d781a08-d41b49e35c3c0f38cdbd4912"
},
"Id": "74c99567f73185ce"
}
]
}
Это JSON для второго сегмента (B):
{
"Duration": 0.801,
"Id": "1-5d781a08-d9626abbab1cfbbfe4ff0dff",
"Segments": [
{
"Document": {
"id": "e2b4faaa6538bbb2",
"name": "handleCreateLoad",
"start_time": 1568152071.98,
"end_time": 1568152072.781,
"parent_id": "74c99567f73185ce",
"aws": {
"xray": {
"sdk": "X-Ray for Node.js",
"sdk_version": "2.3.6",
"package": "aws-xray-sdk"
}
},
"service": {
"version": "unknown",
"runtime": "node",
"runtime_version": "v10.16.3",
"name": "unknown"
},
"trace_id": "1-5d781a08-d9626abbab1cfbbfe4ff0dff",
"subsegments": [
{
"id": "08ccf2f374364066",
"name": "...-CreateLoad",
"start_time": 1568152071.981,
"end_time": 1568152072.781
}
]
},
"Id": "e2b4faaa6538bbb2"
}
]
}
Совершенно ясно, что родительский идентификатор для «B» (74c99567f73185ce) указывает на идентификатор «A», но график не связывает их.
Кроме того, я думаю, что _x_amzn_trace_id
должен быть установлен при выполнении лямбда, но это не так. Это может быть корнем моих проблем.