本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
跟踪和指标
用于记录 S 适用于 Go 的 AWS SDK DK 操作的跟踪跨度和客户端指标。默认情况下,客户端对跟踪和指标都使用无操作实现,这意味着除非您配置提供程序,否则不会收集任何数据。
服务客户端有两个可观察性配置选项:
-
TracerProvider
— 用于创建追踪器和记录客户跟踪跨度的入口点。 -
MeterProvider
— 创建仪表和记录客户端指标的入口点。
虽然受到 OpenTelemetry (OTel) 规范的启发,但 APIs 它们是在中独立定义的smithy-go。SDK 提供了适配器模块,用于将具体的 OTel SDK 实现与 SDK 的提供者接口连接起来。
跟踪
使用 s mithyoteltrtrace.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 mithyotelmetricsmetric.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 | 直方图 | 从发送请求到收到第一个响应字节的时间。 |