Я хотел бы отслеживать вызовы между микросервисами Spring, развернутыми как aws lambdas, с помощью aws-ray.
Настройка выглядит следующим образом:
Микросервис A с конечной точкой api, развернутый как aws lambda
Микросервис B с конечной точкой api, развернутый как лямбда-выражение aws, вызывающий микросервис A через https
Оба микросервиса включают зависимости aws для xray:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-bom</artifactId>
<version>1.2.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-core</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-apache-http</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-aws-sdk</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-aws-sdk-instrumentor</artifactId>
</dependency>
</dependencies>
Для обоих микросервисов трассировка была включена через файл модели бессерверного приложения sam.yaml:
Resources:
FunctionA:
Type: AWS::Serverless::Function
Properties:
Handler: example.HandlerA::handleRequest
Runtime: java8
CodeUri: target/foo.jar
MemorySize: 512
Tracing: Active
Policies:
- AWSLambdaBasicExecutionRole
- AWSXrayWriteOnlyAccess
Timeout: 20
Events:
GetResource:
Type: Api
Properties:
Path: /{proxy+}
Method: any
Хотя я могу видеть трассировки отдельных вызовов служб A и B в рентгеновском веб-интерфейсе, вызов B через A не отображается как составная трасса.
Любые идеи? Возможно, мне нужно создать экземпляр фильтра сервлета. Просто включения зависимостей будет недостаточно, верно?