aws x-ray を使用して、aws ラムダとしてデプロイされた Spring マイクロ サービス間の呼び出しを追跡したいと思います。
セットアップは次のとおりです。
aws ラムダとしてデプロイされた API エンドポイントを持つマイクロサービス A
https 経由でマイクロサービス A を呼び出す aws ラムダとしてデプロイされた API エンドポイントを持つマイクロサービス B
どちらのマイクロサービスにも、xray の aws 依存関係が含まれています。
<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
X 線 Web インターフェイスでサービス A と B の個々の呼び出しのトレースを確認できますが、A を介した B の呼び出しは複合トレースとして表示されません。
何か案は?おそらく、サーブレット フィルターをインスタンス化する必要があります。依存関係を含めるだけでは不十分ですよね?