本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用適用於 Go 的 X-Ray AWS 開發套件追蹤 SDK 呼叫
注意
End-of-support通知 – 在 2027 年 2 月 25 日, AWS X-Ray 將停止支援 AWS X-Ray SDKs 和協助程式。2027 年 2 月 25 日之後,您將不再收到更新或版本。如需支援時間表的詳細資訊,請參閱 X-Ray SDK 和協助程式終止支援時間表。建議您遷移至 OpenTelemetry。如需遷移至 OpenTelemetry 的詳細資訊,請參閱從 X-Ray 檢測遷移至 OpenTelemetry 檢測。
當您的應用程式呼叫 AWS 服務 來存放資料、寫入佇列或傳送通知時,適用於 Go 的 X-Ray 開發套件會在子區段中追蹤下游的呼叫。您在這些服務中存取的追蹤 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 開發套件用戶端時,請使用 呼叫方法的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 用戶端進行呼叫時,軟體開發套件會將資料表名稱新增至以資料表為目標的呼叫區段。在 主控台中,每個資料表會在服務映射中顯示為個別節點,並針對非資料表目標的呼叫使用一般 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 – 佇列名稱