使用適用於 Go 的 X-Ray AWS SDK 追蹤 SDK 呼叫 - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用適用於 Go 的 X-Ray AWS SDK 追蹤 SDK 呼叫

當您的應用程式呼叫 AWS 服務 以儲存資料、寫入佇列或傳送通知時,Go 的 X-Ray SDK 會追蹤子區段中下游的呼叫。您在這些服務中存取的追蹤 AWS 服務 和資源 (例如,Amazon S3 儲存貯體或 Amazon SQS 佇列) 會在 X-Ray 主控台的追蹤對應上顯示為下游節點。

若要追蹤 AWS 開發套件用戶端,請使用 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對象傳遞。

範例 主. 去- 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 簡單存儲服務 — 存儲桶和密鑰名稱

  • Amazon 簡單隊列服務-隊列名稱