适用于 .NET 的 Amazon SDK 版本 4(V4)已经发布!
要开始使用新版本的 SDK,请参阅 适用于 .NET 的 Amazon SDK(V4)开发人员指南,尤其是关于迁移到版本 4 的主题。
可观测性
可观测性是指可以根据系统发出的数据推断出其当前状态的程度。发出的数据通常称为遥测。
适用于 .NET 的 Amazon SDK 可以提供两种常见的遥测信号、指标和追踪记录以及日志记录。您可以连接 TelemetryProvider,以将遥测数据发送到可观测性后端(例如 Amazon X-Ray 或 Amazon CloudWatch),然后对其进行处理。
默认情况下,SDK 中的遥测信号处于禁用状态。本主题介绍如何启用和配置遥测输出。
其他资源
有关启用和使用可观测性的更多信息,请参阅以下资源:
-
博客文章 Enhancing Observability in the 适用于 .NET 的 Amazon SDK with OpenTelemetry
。 -
博客文章 Announcing the general availability of Amazon .NET OpenTelemetry libraries
。 -
有关 Amazon Tools for PowerShell 中可观测性的示例,请参阅 Tools for PowerShell 用户指南中的可观测性。
配置 TelemetryProvider
您可以在应用程序中为所有服务客户端或单个客户端全局配置 TelemetryProvider,如以下示例所示。遥测提供程序一节提供了有关遥测实现的信息,包括有关随 SDK 提供的实现的信息。
配置默认的全局遥测提供程序
默认情况下,每个服务客户端都尝试使用全局可用的遥测提供程序。这样,您只需设置一次提供程序,所有客户端都会使用它。此操作只需执行一次,且必须在创建任何服务客户端之前进行。
以下代码片段展示了如何设置全局遥测提供程序。然后,它会创建一个 Amazon S3 服务客户端,并尝试执行失败的操作。该代码向应用程序添加追踪记录和指标。该代码使用以下 NuGet 软件包:OpenTelemetry.Exporter.Console 和 OpenTelemetry.Instrumentation.AWS。
注意
如果您使用 Amazon IAM Identity Center 进行身份验证,请务必同时添加 AWSSDK.SSO 和 AWSSDK.SSOOIDC。
using Amazon.S3; using OpenTelemetry; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; Sdk.CreateTracerProviderBuilder() .ConfigureResource(e => e.AddService("DemoOtel")) .AddAWSInstrumentation() .AddConsoleExporter() .Build(); Sdk.CreateMeterProviderBuilder() .ConfigureResource(e => e.AddService("DemoOtel")) .AddAWSInstrumentation() .AddConsoleExporter() .Build(); var s3Client = new AmazonS3Client(); try { var listBucketsResponse = await s3Client.ListBucketsAsync(); // Attempt to delete a bucket that doesn't exist. var deleteBucketResponse = await s3Client.DeleteBucketAsync("amzn-s3-demo-bucket"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read();
为特定服务客户端配置遥测提供程序
您可以为单个服务客户端配置特定的遥测提供程序(而不是全局遥测提供程序)。为此,请使用服务客户端构造函数的 Config 对象的 TelemetryProvider 类。例如,请参阅 AmazonS3Config 并找到 TelemetryProvider 属性。有关自定义遥测实现的信息,请参阅遥测提供程序。