View a markdown version of this page

跟踪和指标 - 适用于 Go 的 AWS SDK v2

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

跟踪和指标

用于记录 S 适用于 Go 的 AWS SDK DK 操作的跟踪跨度和客户端指标。默认情况下,客户端对跟踪和指标都使用无操作实现,这意味着除非您配置提供程序,否则不会收集任何数据。

服务客户端有两个可观察性配置选项:

  • TracerProvider— 用于创建追踪器和记录客户跟踪跨度的入口点。

  • MeterProvider— 创建仪表和记录客户端指标的入口点。

虽然受到 OpenTelemetry (OTel) 规范的启发,但 APIs 它们是在中独立定义的smithy-go。SDK 提供了适配器模块,用于将具体的 OTel SDK 实现与 SDK 的提供者接口连接起来。

跟踪

使用 s mithyoteltr acing 适配器模块将 OTel trace.TracerProvider连接到服务客户端。

以下示例显示了如何为 Amazon S3 客户端配置跟踪:

import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/smithy-go/tracing/smithyoteltracing" "go.opentelemetry.io/otel/trace" ) // provider is an OTel trace.TracerProvider that you have configured. var provider trace.TracerProvider svc := s3.NewFromConfig(cfg, func(o *s3.Options) { o.TracerProvider = smithyoteltracing.Adapt(provider) })

SDK 操作采用跨度层次结构进行检测,该层次结构涵盖了操作生命周期的高级组件,例如请求序列化、签名和重试循环。

指标

使用 s mithyotelmetrics 适配器模块将 OTel metric.MeterProvider连接到服务客户端。

以下示例说明如何为 Amazon S3 客户端配置指标:

import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/smithy-go/metrics/smithyotelmetrics" "go.opentelemetry.io/otel/metric" ) // provider is an OTel metric.MeterProvider that you have configured. var provider metric.MeterProvider svc := s3.NewFromConfig(cfg, func(o *s3.Options) { o.MeterProvider = smithyotelmetrics.Adapt(provider) })

受支持的指标

SDK 客户端收集以下指标:

指标名称 单位 Type 说明
client.call.duration s 直方图 总呼叫时长,包括重试次数、发送或接收请求和响应正文的时间。
client.call.attempts {attempt} MonotonicCounter 单个操作的尝试次数。
client.call.errors {error} MonotonicCounter 某项操作的错误数。
client.call.attempt_duration s 直方图 连接到服务、发送请求以及取回 HTTP 状态码和标头的时间(包括等待发送的排队时间)。
client.call.resolve_endpoint_duration s 直方图 为请求解析终端节点(终端节点解析器,不是 DNS)的时间。
client.call.deserialization_duration s 直方图 是时候反序列化消息正文了。
client.call.auth.signing_duration s 直方图 签署请求的时间。
client.call.auth.resolve_identity_duration s 直方图 从身份提供者那里获取身份(AWS 凭证、持有者令牌等)的时间。

在适用的情况下,每个指标都包含以下属性(维度):

  • rpc.service— 服务名称。

  • rpc.method— 操作名称。

  • exception.type— 错误类型(包含在中client.call.errors)。

  • auth.scheme_id— 身份验证方案(包含在与身份验证相关的指标中)。

HTTP 客户端指标

SDK 的 HTTP 客户端收集以下与底层 HTTP 连接生命周期相关的其他指标:

指标名称 单位 Type 说明
client.http.connections.acquire_duration s 直方图 请求获取连接所花费的时间。
client.http.connections.dns_lookup_duration s 直方图 执行 DNS 查询所花费的时间。
client.http.connections.tls_handshake_duration s 直方图 执行 TLS 握手所需的时间。
client.http.connections.usage {连接} UpDownCounter 池中连接的当前状态。使用值为idle或的state维度acquired
client.http.do_request_duration s 直方图 执行 HTTP 请求所花费的总时间。
client.http.time_to_first_byte s 直方图 从发送请求到收到第一个响应字节的时间。