2

aws x-ray を使用して、aws ラムダとしてデプロイされた Spring マイクロ サービス間の呼び出しを追跡したいと思います。

セットアップは次のとおりです。

  1. aws ラムダとしてデプロイされた API エンドポイントを持つマイクロサービス A

  2. 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 の呼び出しは複合トレースとして表示されません。

何か案は?おそらく、サーブレット フィルターをインスタンス化する必要があります。依存関係を含めるだけでは不十分ですよね?

4

1 に答える 1