本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
追蹤和指標
經過 適用於 Go 的 AWS SDK 檢測,可記錄 SDK 操作的追蹤範圍和用戶端指標。根據預設,用戶端會針對追蹤和指標使用無操作實作,這表示除非您設定提供者,否則不會收集任何資料。
服務用戶端有兩個可觀測性的組態選項:
-
TracerProvider
– 用於建立追蹤器和記錄用戶端追蹤範圍的進入點。 -
MeterProvider
– 用於建立計量和記錄用戶端指標的進入點。
雖然受到 OpenTelemetry (OTel) 規格的啟發,但這些 APIs會在 中獨立定義smithy-go。開發套件提供轉接器模組,可將具體的 OTel 開發套件實作連接到開發套件的提供者界面。
追蹤
使用 smithyoteltracingtrace.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 操作使用跨階層進行檢測,涵蓋操作生命週期的高階元件,例如請求序列化、簽署和重試迴圈。
指標
使用 smithyotelmetricsmetric.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 用戶端指標
軟體開發套件的 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 |
{connection} | UpDownCounter | 集區中連線的目前狀態。使用值為 idle或 的state維度acquired。 |
client.http.do_request_duration |
s | 直方圖 | 執行 HTTP 請求所花費的總時間。 |
client.http.time_to_first_byte |
s | 直方圖 | 從傳送請求到接收第一個回應位元組的時間。 |