X-Ray AWS SDK for Go を使用した SDK 呼び出しのトレース - AWS X-Ray

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

X-Ray AWS SDK for Go を使用した SDK 呼び出しのトレース

アプリケーションが AWS のサービス を呼び出してデータの保存、キューへの書き込み、または通知の送信を行う場合、X-Ray SDK for Go はサブセグメント の呼び出しダウンストリームを追跡します。これらのサービス (Amazon S3 バケットや Amazon SQS キューなど) 内でアクセスするトレースされた AWS のサービス および リソースは、X-Ray コンソールのトレースマップにダウンストリームノードとして表示されます。

AWS SDK クライアントをトレースするには、次の例に示すように、クライアントオブジェクトを xray.AWS() 呼び出しでラップします。

例 main.go
var dynamo *dynamodb.DynamoDB func main() { dynamo = dynamodb.New(session.Must(session.NewSession())) xray.AWS(dynamo.Client) }

次に、AWS SDK クライアントを使用する場合は、呼び出しメソッドの withContext バージョンを使用し、それをcontextハンドラーhttp.Requestに渡された オブジェクトから に渡します。

例 main.go – AWS SDK 呼び出し
func listTablesWithContext(ctx context.Context) { output := dynamo.ListTablesWithContext(ctx, &dynamodb.ListTablesInput{}) doSomething(output) }

すべてのサービスにおいて、X-Ray コンソールでコールされた API の名前を確認できます。サービスのサブセットの場合、X-Ray SDK はセグメントに情報を追加して、サービスマップでより細かく指定します。

たとえば、実装された DynamoDB クライアントでコールすると、SDK はテーブルをターゲットとするコールのセグメントにテーブル名を追加します。コンソールで、各テーブルはサービスマップ内に個別のノードとして表示され、テーブルをターゲットにしないコール用の汎用の DynamoDB ノードが表示されます。

例 項目を保存するための DynamoDB に対するコールのサブセグメント
{ "id": "24756640c0d0978a", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "DynamoDB", "namespace": "aws", "http": { "response": { "content_length": 60, "status": 200 } }, "aws": { "table_name": "scorekeep-user", "operation": "UpdateItem", "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG", } }

名前付きリソースにアクセスしたとき、次のサービスをコールすると、サービスマップに追加のノードが作成されます。特定のリソースをターゲットとしないコールでは、サービスの汎用ノードが作成されます。

  • Amazon DynamoDB – テーブル名

  • Amazon Simple Storage Service – バケットとキー名

  • Amazon Simple Queue Service – キュー名