本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用X-Ray SDK for .NET跟踪 AWS 开发工具包调用
在应用程序调用 AWS 服务来存储数据、写入队列或发送通知时,X-Ray SDK for .NET在子分段中跟踪下游的调用。所跟踪 AWS 服务以及您在这些服务中访问的资源(例如,Amazon S3 存储桶或 Amazon SQS 队列),在 X-Ray 控制台的服务地图上显示为下游节点。
您可以通过在创建前调用 RegisterXRayForAllServices
来检测所有适用于 .NET 的 AWS 开发工具包客户端。
例 SampleController.cs - DynamoDB 客户端分析
using Amazon;
using Amazon.Util;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DocumentModel;
using Amazon.XRay.Recorder.Core;
using Amazon.XRay.Recorder.Handlers.AwsSdk;
namespace SampleEBWebApplication.Controllers
{
public class SampleController : ApiController
{
AWSSDKHandler.RegisterXRayForAllServices();
private static readonly Lazy<AmazonDynamoDBClient> LazyDdbClient = new Lazy<AmazonDynamoDBClient>(() =>
{
var client = new AmazonDynamoDBClient(EC2InstanceMetadata.Region ?? RegionEndpoint.USEast1);
return client;
});
要分析一些服务的客户端而不包括另一些服务,请调用 RegisterXRay
而不是 RegisterXRayForAllServices
。使用服务客户端接口的名称替换突出显示的文本。
AWSSDKHandler.RegisterXRay<IAmazonDynamoDB
>()
对于所有服务,您都可以看到在 X-Ray 控制台中调用的 API 的名称。对于一部分服务,X-Ray 开发工具包会向分段中添加信息以在服务地图中提供更好的精细度。
例如,当您使用已分析的 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 – 队列名称