2

AWS ECS にデプロイされた Spring Boot アプリケーションの XRAY のセットアップに関する AWS ドキュメントに従いましたが、AWS コンソールでサービスのトレースを確認できません。私が実装した変更の概要は次のとおりです。

ポリシー権限を持つロールを EC2 に追加しました

"xray:BatchGetTraces",
"xray:GetServiceGraph",
"xray:GetTraceGraph",
"xray:GetTraceSummaries",
"xray:PutTelemetryRecords",
"xray:PutTraceSegments"

追加されたトレース フィルター

@Bean
public Filter TracingFilter() {
    return new AWSXRayServletFilter("myService");
}

XRAY 依存関係を POM ファイルに追加し、 @XRayEnabledアノテーションを Controller メソッドに追加しました。

XRAY デーモンを ec2 インスタンスにダウンロードしてインストールしました

curl https://s3.dualstack.us-east-1.amazonaws.com/aws-xray-assets.us-east-1/xray-daemon/aws-xray-daemon-3.x.rpm -o /home/ec2-user/xray.rpm
yum install -y /home/ec2-user/xray.rpm

com.amazonaws.xray.emitters.UDPEmitter などの UDP ログ ステートメントが表示されていることを確認しました。

 {
  "name" : "myService",
  "id" : "1234",
  "start_time" : 1.546020031234E9,
  "trace_id" : "myTraceId",
  "end_time" : 1.546020031234E9,
  "http" : {
    "request" : {
      "method" : "POST",
      "client_ip" : "myIp",
      "url" : "myURL",
      "user_agent" : "PostmanRuntime/7.4.0",
      "x_forwarded_for" : true
    },
    "response" : {
      "content_length" : 200,
      "status" : 200
    }
  },
  "aws" : {
    "xray" : {
      "sdk_version" : "1.2.1",
      "sdk" : "X-Ray for Java"
    }
  },
  "service" : {
    "runtime" : "OpenJDK 64-Bit Server VM",
    "runtime_version" : "1.8.0_151"
  }
}

また、netstat -tulpn を使用して、デーモンが ec2 で実行されていることも確認しました。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:2000          0.0.0.0:*                           14126/xray 

XRAY トレースを取得して AWS コンソールに表示するには、他に何が必要ですか?

ロギングを有効にして docker デーモンを開始しましたが、docker デーモンがデータを AWS に送信しているという兆候は見られません。起動情報だけです。それだけです。

2018-12-28T23:14:19Z [Info] Initializing AWS X-Ray daemon 3.0.0
2018-12-28T23:14:19Z [Info] Using buffer memory limit of 304 MB
2018-12-28T23:14:19Z [Info] 4864 segment buffers allocated
2018-12-28T23:14:19Z [Info] Using region: us-east-1
2018-12-28T23:14:19Z [Info] Starting proxy http server on 127.0.0.1:2000
4

1 に答える 1