mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-18 11:00:25 +00:00
rebase: bump github.com/aws/aws-sdk-go-v2/service/sts
Bumps the github-dependencies group with 1 update: [github.com/aws/aws-sdk-go-v2/service/sts](https://github.com/aws/aws-sdk-go-v2). Updates `github.com/aws/aws-sdk-go-v2/service/sts` from 1.31.3 to 1.32.1 - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.31.3...v1.32.1) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/sts dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
parent
71193bcaa1
commit
921c43a999
14
go.mod
14
go.mod
@ -5,7 +5,7 @@ go 1.22.5
|
|||||||
require (
|
require (
|
||||||
github.com/IBM/keyprotect-go-client v0.15.1
|
github.com/IBM/keyprotect-go-client v0.15.1
|
||||||
github.com/aws/aws-sdk-go v1.55.5
|
github.com/aws/aws-sdk-go v1.55.5
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.31.3
|
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1
|
||||||
github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000
|
github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000
|
||||||
github.com/ceph/go-ceph v0.29.1-0.20240925141413-065319c78733
|
github.com/ceph/go-ceph v0.29.1-0.20240925141413-065319c78733
|
||||||
github.com/container-storage-interface/spec v1.10.0
|
github.com/container-storage-interface/spec v1.10.0
|
||||||
@ -60,12 +60,12 @@ require (
|
|||||||
github.com/ansel1/merry/v2 v2.0.1 // indirect
|
github.com/ansel1/merry/v2 v2.0.1 // indirect
|
||||||
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
|
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
|
||||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
|
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
|
||||||
github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect
|
github.com/aws/aws-sdk-go-v2 v1.32.1 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1 // indirect
|
||||||
github.com/aws/smithy-go v1.21.0 // indirect
|
github.com/aws/smithy-go v1.22.0 // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/blang/semver/v4 v4.0.0 // indirect
|
github.com/blang/semver/v4 v4.0.0 // indirect
|
||||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||||
|
28
go.sum
28
go.sum
@ -1406,20 +1406,20 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l
|
|||||||
github.com/aws/aws-sdk-go v1.44.164/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
github.com/aws/aws-sdk-go v1.44.164/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||||
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
|
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
|
||||||
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
|
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U=
|
github.com/aws/aws-sdk-go-v2 v1.32.1 h1:8WuZ43ytA+TV6QEPT/R23mr7pWyI7bSSiEHdt9BS2Pw=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA=
|
github.com/aws/aws-sdk-go-v2 v1.32.1/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20 h1:OErdlGnt+hg3tTwGYAlKvFkKVUo/TXkoHcxDxuhYYU8=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20/go.mod h1:HsPfuL5gs+407ByRXBMgpYoyrV1sgMrzd18yMXQHJpo=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20 h1:822cE1CYSwY/EZnErlF46pyynuxvf1p+VydHRQW+XNs=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20/go.mod h1:79/Tn7H7hYC5Gjz6fbnOV4OeBpkao7E8Tv95RO72pMM=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1 h1:5vBMBTakOvtd8aNaicswcrr9qqCYUlasuzyoU6/0g8I=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1/go.mod h1:WSUbDa5qdg05Q558KXx2Scb+EDvOPXT9gfET0fyrJSk=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.31.3 h1:VzudTFrDCIDakXtemR7l6Qzt2+JYsVqo2MxBPt5k8T8=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1 h1:q76Ig4OaJzVJGNUSGO3wjSTBS94g+EhHIbpY9rPvkxs=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.31.3/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1/go.mod h1:664dajZ7uS7JMUMUG0R5bWbtN97KECNCVdFDdQ6Ipu8=
|
||||||
github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA=
|
github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM=
|
||||||
github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
|
github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
|
||||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||||
|
2
vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go
generated
vendored
@ -3,4 +3,4 @@
|
|||||||
package aws
|
package aws
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.31.0"
|
const goModuleVersion = "1.32.1"
|
||||||
|
320
vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go
generated
vendored
320
vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go
generated
vendored
@ -1,320 +0,0 @@
|
|||||||
// Package metrics implements metrics gathering for SDK development purposes.
|
|
||||||
//
|
|
||||||
// This package is designated as private and is intended for use only by the
|
|
||||||
// AWS client runtime. The exported API therein is not considered stable and
|
|
||||||
// is subject to breaking changes without notice.
|
|
||||||
package metrics
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/smithy-go/middleware"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// ServiceIDKey is the key for the service ID metric.
|
|
||||||
ServiceIDKey = "ServiceId"
|
|
||||||
// OperationNameKey is the key for the operation name metric.
|
|
||||||
OperationNameKey = "OperationName"
|
|
||||||
// ClientRequestIDKey is the key for the client request ID metric.
|
|
||||||
ClientRequestIDKey = "ClientRequestId"
|
|
||||||
// APICallDurationKey is the key for the API call duration metric.
|
|
||||||
APICallDurationKey = "ApiCallDuration"
|
|
||||||
// APICallSuccessfulKey is the key for the API call successful metric.
|
|
||||||
APICallSuccessfulKey = "ApiCallSuccessful"
|
|
||||||
// MarshallingDurationKey is the key for the marshalling duration metric.
|
|
||||||
MarshallingDurationKey = "MarshallingDuration"
|
|
||||||
// InThroughputKey is the key for the input throughput metric.
|
|
||||||
InThroughputKey = "InThroughput"
|
|
||||||
// OutThroughputKey is the key for the output throughput metric.
|
|
||||||
OutThroughputKey = "OutThroughput"
|
|
||||||
// RetryCountKey is the key for the retry count metric.
|
|
||||||
RetryCountKey = "RetryCount"
|
|
||||||
// HTTPStatusCodeKey is the key for the HTTP status code metric.
|
|
||||||
HTTPStatusCodeKey = "HttpStatusCode"
|
|
||||||
// AWSExtendedRequestIDKey is the key for the AWS extended request ID metric.
|
|
||||||
AWSExtendedRequestIDKey = "AwsExtendedRequestId"
|
|
||||||
// AWSRequestIDKey is the key for the AWS request ID metric.
|
|
||||||
AWSRequestIDKey = "AwsRequestId"
|
|
||||||
// BackoffDelayDurationKey is the key for the backoff delay duration metric.
|
|
||||||
BackoffDelayDurationKey = "BackoffDelayDuration"
|
|
||||||
// StreamThroughputKey is the key for the stream throughput metric.
|
|
||||||
StreamThroughputKey = "Throughput"
|
|
||||||
// ConcurrencyAcquireDurationKey is the key for the concurrency acquire duration metric.
|
|
||||||
ConcurrencyAcquireDurationKey = "ConcurrencyAcquireDuration"
|
|
||||||
// PendingConcurrencyAcquiresKey is the key for the pending concurrency acquires metric.
|
|
||||||
PendingConcurrencyAcquiresKey = "PendingConcurrencyAcquires"
|
|
||||||
// SigningDurationKey is the key for the signing duration metric.
|
|
||||||
SigningDurationKey = "SigningDuration"
|
|
||||||
// UnmarshallingDurationKey is the key for the unmarshalling duration metric.
|
|
||||||
UnmarshallingDurationKey = "UnmarshallingDuration"
|
|
||||||
// TimeToFirstByteKey is the key for the time to first byte metric.
|
|
||||||
TimeToFirstByteKey = "TimeToFirstByte"
|
|
||||||
// ServiceCallDurationKey is the key for the service call duration metric.
|
|
||||||
ServiceCallDurationKey = "ServiceCallDuration"
|
|
||||||
// EndpointResolutionDurationKey is the key for the endpoint resolution duration metric.
|
|
||||||
EndpointResolutionDurationKey = "EndpointResolutionDuration"
|
|
||||||
// AttemptNumberKey is the key for the attempt number metric.
|
|
||||||
AttemptNumberKey = "AttemptNumber"
|
|
||||||
// MaxConcurrencyKey is the key for the max concurrency metric.
|
|
||||||
MaxConcurrencyKey = "MaxConcurrency"
|
|
||||||
// AvailableConcurrencyKey is the key for the available concurrency metric.
|
|
||||||
AvailableConcurrencyKey = "AvailableConcurrency"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MetricPublisher provides the interface to provide custom MetricPublishers.
|
|
||||||
// PostRequestMetrics will be invoked by the MetricCollection middleware to post request.
|
|
||||||
// PostStreamMetrics will be invoked by ReadCloserWithMetrics to post stream metrics.
|
|
||||||
type MetricPublisher interface {
|
|
||||||
PostRequestMetrics(*MetricData) error
|
|
||||||
PostStreamMetrics(*MetricData) error
|
|
||||||
}
|
|
||||||
|
|
||||||
// Serializer provides the interface to provide custom Serializers.
|
|
||||||
// Serialize will transform any input object in its corresponding string representation.
|
|
||||||
type Serializer interface {
|
|
||||||
Serialize(obj interface{}) (string, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DefaultSerializer is an implementation of the Serializer interface.
|
|
||||||
type DefaultSerializer struct{}
|
|
||||||
|
|
||||||
// Serialize uses the default JSON serializer to obtain the string representation of an object.
|
|
||||||
func (DefaultSerializer) Serialize(obj interface{}) (string, error) {
|
|
||||||
bytes, err := json.Marshal(obj)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return string(bytes), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type metricContextKey struct{}
|
|
||||||
|
|
||||||
// MetricContext contains fields to store metric-related information.
|
|
||||||
type MetricContext struct {
|
|
||||||
connectionCounter *SharedConnectionCounter
|
|
||||||
publisher MetricPublisher
|
|
||||||
data *MetricData
|
|
||||||
}
|
|
||||||
|
|
||||||
// MetricData stores the collected metric data.
|
|
||||||
type MetricData struct {
|
|
||||||
RequestStartTime time.Time
|
|
||||||
RequestEndTime time.Time
|
|
||||||
APICallDuration time.Duration
|
|
||||||
SerializeStartTime time.Time
|
|
||||||
SerializeEndTime time.Time
|
|
||||||
MarshallingDuration time.Duration
|
|
||||||
ResolveEndpointStartTime time.Time
|
|
||||||
ResolveEndpointEndTime time.Time
|
|
||||||
EndpointResolutionDuration time.Duration
|
|
||||||
GetIdentityStartTime time.Time
|
|
||||||
GetIdentityEndTime time.Time
|
|
||||||
InThroughput float64
|
|
||||||
OutThroughput float64
|
|
||||||
RetryCount int
|
|
||||||
Success uint8
|
|
||||||
StatusCode int
|
|
||||||
ClientRequestID string
|
|
||||||
ServiceID string
|
|
||||||
OperationName string
|
|
||||||
PartitionID string
|
|
||||||
Region string
|
|
||||||
UserAgent string
|
|
||||||
RequestContentLength int64
|
|
||||||
Stream StreamMetrics
|
|
||||||
Attempts []AttemptMetrics
|
|
||||||
}
|
|
||||||
|
|
||||||
// StreamMetrics stores metrics related to streaming data.
|
|
||||||
type StreamMetrics struct {
|
|
||||||
ReadDuration time.Duration
|
|
||||||
ReadBytes int64
|
|
||||||
Throughput float64
|
|
||||||
}
|
|
||||||
|
|
||||||
// AttemptMetrics stores metrics related to individual attempts.
|
|
||||||
type AttemptMetrics struct {
|
|
||||||
ServiceCallStart time.Time
|
|
||||||
ServiceCallEnd time.Time
|
|
||||||
ServiceCallDuration time.Duration
|
|
||||||
FirstByteTime time.Time
|
|
||||||
TimeToFirstByte time.Duration
|
|
||||||
ConnRequestedTime time.Time
|
|
||||||
ConnObtainedTime time.Time
|
|
||||||
ConcurrencyAcquireDuration time.Duration
|
|
||||||
SignStartTime time.Time
|
|
||||||
SignEndTime time.Time
|
|
||||||
SigningDuration time.Duration
|
|
||||||
DeserializeStartTime time.Time
|
|
||||||
DeserializeEndTime time.Time
|
|
||||||
UnMarshallingDuration time.Duration
|
|
||||||
RetryDelay time.Duration
|
|
||||||
ResponseContentLength int64
|
|
||||||
StatusCode int
|
|
||||||
RequestID string
|
|
||||||
ExtendedRequestID string
|
|
||||||
HTTPClient string
|
|
||||||
MaxConcurrency int
|
|
||||||
PendingConnectionAcquires int
|
|
||||||
AvailableConcurrency int
|
|
||||||
ActiveRequests int
|
|
||||||
ReusedConnection bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// Data returns the MetricData associated with the MetricContext.
|
|
||||||
func (mc *MetricContext) Data() *MetricData {
|
|
||||||
return mc.data
|
|
||||||
}
|
|
||||||
|
|
||||||
// ConnectionCounter returns the SharedConnectionCounter associated with the MetricContext.
|
|
||||||
func (mc *MetricContext) ConnectionCounter() *SharedConnectionCounter {
|
|
||||||
return mc.connectionCounter
|
|
||||||
}
|
|
||||||
|
|
||||||
// Publisher returns the MetricPublisher associated with the MetricContext.
|
|
||||||
func (mc *MetricContext) Publisher() MetricPublisher {
|
|
||||||
return mc.publisher
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComputeRequestMetrics calculates and populates derived metrics based on the collected data.
|
|
||||||
func (md *MetricData) ComputeRequestMetrics() {
|
|
||||||
|
|
||||||
for idx := range md.Attempts {
|
|
||||||
attempt := &md.Attempts[idx]
|
|
||||||
attempt.ConcurrencyAcquireDuration = attempt.ConnObtainedTime.Sub(attempt.ConnRequestedTime)
|
|
||||||
attempt.SigningDuration = attempt.SignEndTime.Sub(attempt.SignStartTime)
|
|
||||||
attempt.UnMarshallingDuration = attempt.DeserializeEndTime.Sub(attempt.DeserializeStartTime)
|
|
||||||
attempt.TimeToFirstByte = attempt.FirstByteTime.Sub(attempt.ServiceCallStart)
|
|
||||||
attempt.ServiceCallDuration = attempt.ServiceCallEnd.Sub(attempt.ServiceCallStart)
|
|
||||||
}
|
|
||||||
|
|
||||||
md.APICallDuration = md.RequestEndTime.Sub(md.RequestStartTime)
|
|
||||||
md.MarshallingDuration = md.SerializeEndTime.Sub(md.SerializeStartTime)
|
|
||||||
md.EndpointResolutionDuration = md.ResolveEndpointEndTime.Sub(md.ResolveEndpointStartTime)
|
|
||||||
|
|
||||||
md.RetryCount = len(md.Attempts) - 1
|
|
||||||
|
|
||||||
latestAttempt, err := md.LatestAttempt()
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("error retrieving attempts data due to: %s. Skipping Throughput metrics", err.Error())
|
|
||||||
} else {
|
|
||||||
|
|
||||||
md.StatusCode = latestAttempt.StatusCode
|
|
||||||
|
|
||||||
if md.Success == 1 {
|
|
||||||
if latestAttempt.ResponseContentLength > 0 && latestAttempt.ServiceCallDuration > 0 {
|
|
||||||
md.InThroughput = float64(latestAttempt.ResponseContentLength) / latestAttempt.ServiceCallDuration.Seconds()
|
|
||||||
}
|
|
||||||
if md.RequestContentLength > 0 && latestAttempt.ServiceCallDuration > 0 {
|
|
||||||
md.OutThroughput = float64(md.RequestContentLength) / latestAttempt.ServiceCallDuration.Seconds()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// LatestAttempt returns the latest attempt metrics.
|
|
||||||
// It returns an error if no attempts are initialized.
|
|
||||||
func (md *MetricData) LatestAttempt() (*AttemptMetrics, error) {
|
|
||||||
if md.Attempts == nil || len(md.Attempts) == 0 {
|
|
||||||
return nil, fmt.Errorf("no attempts initialized. NewAttempt() should be called first")
|
|
||||||
}
|
|
||||||
return &md.Attempts[len(md.Attempts)-1], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewAttempt initializes new attempt metrics.
|
|
||||||
func (md *MetricData) NewAttempt() {
|
|
||||||
if md.Attempts == nil {
|
|
||||||
md.Attempts = []AttemptMetrics{}
|
|
||||||
}
|
|
||||||
md.Attempts = append(md.Attempts, AttemptMetrics{})
|
|
||||||
}
|
|
||||||
|
|
||||||
// SharedConnectionCounter is a counter shared across API calls.
|
|
||||||
type SharedConnectionCounter struct {
|
|
||||||
mu sync.Mutex
|
|
||||||
|
|
||||||
activeRequests int
|
|
||||||
pendingConnectionAcquire int
|
|
||||||
}
|
|
||||||
|
|
||||||
// ActiveRequests returns the count of active requests.
|
|
||||||
func (cc *SharedConnectionCounter) ActiveRequests() int {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
return cc.activeRequests
|
|
||||||
}
|
|
||||||
|
|
||||||
// PendingConnectionAcquire returns the count of pending connection acquires.
|
|
||||||
func (cc *SharedConnectionCounter) PendingConnectionAcquire() int {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
return cc.pendingConnectionAcquire
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddActiveRequest increments the count of active requests.
|
|
||||||
func (cc *SharedConnectionCounter) AddActiveRequest() {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
cc.activeRequests++
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveActiveRequest decrements the count of active requests.
|
|
||||||
func (cc *SharedConnectionCounter) RemoveActiveRequest() {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
cc.activeRequests--
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddPendingConnectionAcquire increments the count of pending connection acquires.
|
|
||||||
func (cc *SharedConnectionCounter) AddPendingConnectionAcquire() {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
cc.pendingConnectionAcquire++
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemovePendingConnectionAcquire decrements the count of pending connection acquires.
|
|
||||||
func (cc *SharedConnectionCounter) RemovePendingConnectionAcquire() {
|
|
||||||
cc.mu.Lock()
|
|
||||||
defer cc.mu.Unlock()
|
|
||||||
|
|
||||||
cc.pendingConnectionAcquire--
|
|
||||||
}
|
|
||||||
|
|
||||||
// InitMetricContext initializes the metric context with the provided counter and publisher.
|
|
||||||
// It returns the updated context.
|
|
||||||
func InitMetricContext(
|
|
||||||
ctx context.Context, counter *SharedConnectionCounter, publisher MetricPublisher,
|
|
||||||
) context.Context {
|
|
||||||
if middleware.GetStackValue(ctx, metricContextKey{}) == nil {
|
|
||||||
ctx = middleware.WithStackValue(ctx, metricContextKey{}, &MetricContext{
|
|
||||||
connectionCounter: counter,
|
|
||||||
publisher: publisher,
|
|
||||||
data: &MetricData{
|
|
||||||
Attempts: []AttemptMetrics{},
|
|
||||||
Stream: StreamMetrics{},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return ctx
|
|
||||||
}
|
|
||||||
|
|
||||||
// Context returns the metric context from the given context.
|
|
||||||
// It returns nil if the metric context is not found.
|
|
||||||
func Context(ctx context.Context) *MetricContext {
|
|
||||||
mctx := middleware.GetStackValue(ctx, metricContextKey{})
|
|
||||||
if mctx == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return mctx.(*MetricContext)
|
|
||||||
}
|
|
8
vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go
generated
vendored
8
vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go
generated
vendored
@ -8,7 +8,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
privatemetrics "github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics"
|
|
||||||
internalcontext "github.com/aws/aws-sdk-go-v2/internal/context"
|
internalcontext "github.com/aws/aws-sdk-go-v2/internal/context"
|
||||||
"github.com/aws/smithy-go"
|
"github.com/aws/smithy-go"
|
||||||
|
|
||||||
@ -271,13 +270,6 @@ func (r *Attempt) handleAttempt(
|
|||||||
// that time. Potentially early exist if the sleep is canceled via the
|
// that time. Potentially early exist if the sleep is canceled via the
|
||||||
// context.
|
// context.
|
||||||
retryDelay, reqErr := r.retryer.RetryDelay(attemptNum, err)
|
retryDelay, reqErr := r.retryer.RetryDelay(attemptNum, err)
|
||||||
mctx := privatemetrics.Context(ctx)
|
|
||||||
if mctx != nil {
|
|
||||||
attempt, err := mctx.Data().LatestAttempt()
|
|
||||||
if err != nil {
|
|
||||||
attempt.RetryDelay = retryDelay
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if reqErr != nil {
|
if reqErr != nil {
|
||||||
return out, attemptResult, releaseRetryToken, reqErr
|
return out, attemptResult, releaseRetryToken, reqErr
|
||||||
}
|
}
|
||||||
|
8
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md
generated
vendored
8
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md
generated
vendored
@ -1,3 +1,11 @@
|
|||||||
|
# v1.3.20 (2024-10-07)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
# v1.3.19 (2024-10-04)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
# v1.3.18 (2024-09-20)
|
# v1.3.18 (2024-09-20)
|
||||||
|
|
||||||
* **Dependency Update**: Updated to the latest SDK module versions
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
2
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go
generated
vendored
@ -3,4 +3,4 @@
|
|||||||
package configsources
|
package configsources
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.3.18"
|
const goModuleVersion = "1.3.20"
|
||||||
|
8
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md
generated
vendored
8
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md
generated
vendored
@ -1,3 +1,11 @@
|
|||||||
|
# v2.6.20 (2024-10-07)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
# v2.6.19 (2024-10-04)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
# v2.6.18 (2024-09-20)
|
# v2.6.18 (2024-09-20)
|
||||||
|
|
||||||
* **Dependency Update**: Updated to the latest SDK module versions
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
2
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go
generated
vendored
@ -3,4 +3,4 @@
|
|||||||
package endpoints
|
package endpoints
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "2.6.18"
|
const goModuleVersion = "2.6.20"
|
||||||
|
4
vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md
generated
vendored
4
vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md
generated
vendored
@ -1,3 +1,7 @@
|
|||||||
|
# v1.12.0 (2024-10-04)
|
||||||
|
|
||||||
|
* **Feature**: Add support for HTTP client metrics.
|
||||||
|
|
||||||
# v1.11.5 (2024-09-20)
|
# v1.11.5 (2024-09-20)
|
||||||
|
|
||||||
* No change notes available for this release.
|
* No change notes available for this release.
|
||||||
|
@ -3,4 +3,4 @@
|
|||||||
package acceptencoding
|
package acceptencoding
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.11.5"
|
const goModuleVersion = "1.12.0"
|
||||||
|
9
vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md
generated
vendored
9
vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md
generated
vendored
@ -1,3 +1,12 @@
|
|||||||
|
# v1.12.1 (2024-10-07)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
# v1.12.0 (2024-10-04)
|
||||||
|
|
||||||
|
* **Feature**: Add support for HTTP client metrics.
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
# v1.11.20 (2024-09-20)
|
# v1.11.20 (2024-09-20)
|
||||||
|
|
||||||
* **Dependency Update**: Updated to the latest SDK module versions
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
@ -3,4 +3,4 @@
|
|||||||
package presignedurl
|
package presignedurl
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.11.20"
|
const goModuleVersion = "1.12.1"
|
||||||
|
13
vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md
generated
vendored
13
vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md
generated
vendored
@ -1,3 +1,16 @@
|
|||||||
|
# v1.32.1 (2024-10-07)
|
||||||
|
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
# v1.32.0 (2024-10-04)
|
||||||
|
|
||||||
|
* **Feature**: Add support for HTTP client metrics.
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
# v1.31.4 (2024-10-03)
|
||||||
|
|
||||||
|
* No change notes available for this release.
|
||||||
|
|
||||||
# v1.31.3 (2024-09-27)
|
# v1.31.3 (2024-09-27)
|
||||||
|
|
||||||
* No change notes available for this release.
|
* No change notes available for this release.
|
||||||
|
8
vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go
generated
vendored
8
vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go
generated
vendored
@ -190,10 +190,10 @@ func New(options Options, optFns ...func(*Options)) *Client {
|
|||||||
|
|
||||||
resolveEndpointResolverV2(&options)
|
resolveEndpointResolverV2(&options)
|
||||||
|
|
||||||
resolveMeterProvider(&options)
|
|
||||||
|
|
||||||
resolveTracerProvider(&options)
|
resolveTracerProvider(&options)
|
||||||
|
|
||||||
|
resolveMeterProvider(&options)
|
||||||
|
|
||||||
resolveAuthSchemeResolver(&options)
|
resolveAuthSchemeResolver(&options)
|
||||||
|
|
||||||
for _, fn := range optFns {
|
for _, fn := range optFns {
|
||||||
@ -278,7 +278,9 @@ func (c *Client) invokeOperation(
|
|||||||
defer endTimer()
|
defer endTimer()
|
||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
handler := smithyhttp.NewClientHandler(options.HTTPClient)
|
handler := smithyhttp.NewClientHandlerWithOptions(options.HTTPClient, func(o *smithyhttp.ClientHandler) {
|
||||||
|
o.Meter = options.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/sts")
|
||||||
|
})
|
||||||
decorated := middleware.DecorateHandler(handler, stack)
|
decorated := middleware.DecorateHandler(handler, stack)
|
||||||
result, metadata, err = decorated.Handle(ctx, params)
|
result, metadata, err = decorated.Handle(ctx, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
2
vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go
generated
vendored
@ -3,4 +3,4 @@
|
|||||||
package sts
|
package sts
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.31.3"
|
const goModuleVersion = "1.32.1"
|
||||||
|
15
vendor/github.com/aws/smithy-go/CHANGELOG.md
generated
vendored
15
vendor/github.com/aws/smithy-go/CHANGELOG.md
generated
vendored
@ -1,3 +1,18 @@
|
|||||||
|
# Release (2024-10-03)
|
||||||
|
|
||||||
|
## General Highlights
|
||||||
|
* **Dependency Update**: Updated to the latest SDK module versions
|
||||||
|
|
||||||
|
## Module Highlights
|
||||||
|
* `github.com/aws/smithy-go`: v1.22.0
|
||||||
|
* **Feature**: Add HTTP client metrics.
|
||||||
|
|
||||||
|
# Release (2024-09-25)
|
||||||
|
|
||||||
|
## Module Highlights
|
||||||
|
* `github.com/aws/smithy-go/aws-http-auth`: [v1.0.0](aws-http-auth/CHANGELOG.md#v100-2024-09-25)
|
||||||
|
* **Release**: Initial release of module aws-http-auth, which implements generically consumable SigV4 and SigV4a request signing.
|
||||||
|
|
||||||
# Release (2024-09-19)
|
# Release (2024-09-19)
|
||||||
|
|
||||||
## General Highlights
|
## General Highlights
|
||||||
|
2
vendor/github.com/aws/smithy-go/go_module_metadata.go
generated
vendored
2
vendor/github.com/aws/smithy-go/go_module_metadata.go
generated
vendored
@ -3,4 +3,4 @@
|
|||||||
package smithy
|
package smithy
|
||||||
|
|
||||||
// goModuleVersion is the tagged release for this module
|
// goModuleVersion is the tagged release for this module
|
||||||
const goModuleVersion = "1.21.0"
|
const goModuleVersion = "1.22.0"
|
||||||
|
27
vendor/github.com/aws/smithy-go/transport/http/client.go
generated
vendored
27
vendor/github.com/aws/smithy-go/transport/http/client.go
generated
vendored
@ -6,6 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
smithy "github.com/aws/smithy-go"
|
smithy "github.com/aws/smithy-go"
|
||||||
|
"github.com/aws/smithy-go/metrics"
|
||||||
"github.com/aws/smithy-go/middleware"
|
"github.com/aws/smithy-go/middleware"
|
||||||
"github.com/aws/smithy-go/tracing"
|
"github.com/aws/smithy-go/tracing"
|
||||||
)
|
)
|
||||||
@ -28,13 +29,30 @@ func (fn ClientDoFunc) Do(r *http.Request) (*http.Response, error) {
|
|||||||
// implementation is http.Client.
|
// implementation is http.Client.
|
||||||
type ClientHandler struct {
|
type ClientHandler struct {
|
||||||
client ClientDo
|
client ClientDo
|
||||||
|
|
||||||
|
Meter metrics.Meter // For HTTP client metrics.
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewClientHandler returns an initialized middleware handler for the client.
|
// NewClientHandler returns an initialized middleware handler for the client.
|
||||||
|
//
|
||||||
|
// Deprecated: Use [NewClientHandlerWithOptions].
|
||||||
func NewClientHandler(client ClientDo) ClientHandler {
|
func NewClientHandler(client ClientDo) ClientHandler {
|
||||||
return ClientHandler{
|
return NewClientHandlerWithOptions(client)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewClientHandlerWithOptions returns an initialized middleware handler for the client
|
||||||
|
// with applied options.
|
||||||
|
func NewClientHandlerWithOptions(client ClientDo, opts ...func(*ClientHandler)) ClientHandler {
|
||||||
|
h := ClientHandler{
|
||||||
client: client,
|
client: client,
|
||||||
}
|
}
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(&h)
|
||||||
|
}
|
||||||
|
if h.Meter == nil {
|
||||||
|
h.Meter = metrics.NopMeterProvider{}.Meter("")
|
||||||
|
}
|
||||||
|
return h
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle implements the middleware Handler interface, that will invoke the
|
// Handle implements the middleware Handler interface, that will invoke the
|
||||||
@ -46,6 +64,11 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) (
|
|||||||
ctx, span := tracing.StartSpan(ctx, "DoHTTPRequest")
|
ctx, span := tracing.StartSpan(ctx, "DoHTTPRequest")
|
||||||
defer span.End()
|
defer span.End()
|
||||||
|
|
||||||
|
ctx, client, err := withMetrics(ctx, c.client, c.Meter)
|
||||||
|
if err != nil {
|
||||||
|
return nil, metadata, fmt.Errorf("instrument with HTTP metrics: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
req, ok := input.(*Request)
|
req, ok := input.(*Request)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, metadata, fmt.Errorf("expect Smithy http.Request value as input, got unsupported type %T", input)
|
return nil, metadata, fmt.Errorf("expect Smithy http.Request value as input, got unsupported type %T", input)
|
||||||
@ -66,7 +89,7 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) (
|
|||||||
span.SetProperty("http.request_content_length", length)
|
span.SetProperty("http.request_content_length", length)
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := c.client.Do(builtRequest)
|
resp, err := client.Do(builtRequest)
|
||||||
if resp == nil {
|
if resp == nil {
|
||||||
// Ensure a http response value is always present to prevent unexpected
|
// Ensure a http response value is always present to prevent unexpected
|
||||||
// panics.
|
// panics.
|
||||||
|
184
vendor/github.com/aws/smithy-go/transport/http/metrics.go
generated
vendored
Normal file
184
vendor/github.com/aws/smithy-go/transport/http/metrics.go
generated
vendored
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
package http
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptrace"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/smithy-go/metrics"
|
||||||
|
)
|
||||||
|
|
||||||
|
var now = time.Now
|
||||||
|
|
||||||
|
// withMetrics instruments an HTTP client and context to collect HTTP metrics.
|
||||||
|
func withMetrics(parent context.Context, client ClientDo, meter metrics.Meter) (
|
||||||
|
context.Context, ClientDo, error,
|
||||||
|
) {
|
||||||
|
hm, err := newHTTPMetrics(meter)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx := httptrace.WithClientTrace(parent, &httptrace.ClientTrace{
|
||||||
|
DNSStart: hm.DNSStart,
|
||||||
|
ConnectStart: hm.ConnectStart,
|
||||||
|
TLSHandshakeStart: hm.TLSHandshakeStart,
|
||||||
|
|
||||||
|
GotConn: hm.GotConn(parent),
|
||||||
|
PutIdleConn: hm.PutIdleConn(parent),
|
||||||
|
ConnectDone: hm.ConnectDone(parent),
|
||||||
|
DNSDone: hm.DNSDone(parent),
|
||||||
|
TLSHandshakeDone: hm.TLSHandshakeDone(parent),
|
||||||
|
GotFirstResponseByte: hm.GotFirstResponseByte(parent),
|
||||||
|
})
|
||||||
|
return ctx, &timedClientDo{client, hm}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type timedClientDo struct {
|
||||||
|
ClientDo
|
||||||
|
hm *httpMetrics
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *timedClientDo) Do(r *http.Request) (*http.Response, error) {
|
||||||
|
c.hm.doStart = now()
|
||||||
|
resp, err := c.ClientDo.Do(r)
|
||||||
|
|
||||||
|
c.hm.DoRequestDuration.Record(r.Context(), elapsed(c.hm.doStart))
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
type httpMetrics struct {
|
||||||
|
DNSLookupDuration metrics.Float64Histogram // client.http.connections.dns_lookup_duration
|
||||||
|
ConnectDuration metrics.Float64Histogram // client.http.connections.acquire_duration
|
||||||
|
TLSHandshakeDuration metrics.Float64Histogram // client.http.connections.tls_handshake_duration
|
||||||
|
ConnectionUsage metrics.Int64UpDownCounter // client.http.connections.usage
|
||||||
|
|
||||||
|
DoRequestDuration metrics.Float64Histogram // client.http.do_request_duration
|
||||||
|
TimeToFirstByte metrics.Float64Histogram // client.http.time_to_first_byte
|
||||||
|
|
||||||
|
doStart time.Time
|
||||||
|
dnsStart time.Time
|
||||||
|
connectStart time.Time
|
||||||
|
tlsStart time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func newHTTPMetrics(meter metrics.Meter) (*httpMetrics, error) {
|
||||||
|
hm := &httpMetrics{}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
hm.DNSLookupDuration, err = meter.Float64Histogram("client.http.connections.dns_lookup_duration", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "s"
|
||||||
|
o.Description = "The time it takes a request to perform DNS lookup."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
hm.ConnectDuration, err = meter.Float64Histogram("client.http.connections.acquire_duration", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "s"
|
||||||
|
o.Description = "The time it takes a request to acquire a connection."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
hm.TLSHandshakeDuration, err = meter.Float64Histogram("client.http.connections.tls_handshake_duration", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "s"
|
||||||
|
o.Description = "The time it takes an HTTP request to perform the TLS handshake."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
hm.ConnectionUsage, err = meter.Int64UpDownCounter("client.http.connections.usage", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "{connection}"
|
||||||
|
o.Description = "Current state of connections pool."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
hm.DoRequestDuration, err = meter.Float64Histogram("client.http.do_request_duration", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "s"
|
||||||
|
o.Description = "Time spent performing an entire HTTP transaction."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
hm.TimeToFirstByte, err = meter.Float64Histogram("client.http.time_to_first_byte", func(o *metrics.InstrumentOptions) {
|
||||||
|
o.UnitLabel = "s"
|
||||||
|
o.Description = "Time from start of transaction to when the first response byte is available."
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return hm, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) DNSStart(httptrace.DNSStartInfo) {
|
||||||
|
m.dnsStart = now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) ConnectStart(string, string) {
|
||||||
|
m.connectStart = now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) TLSHandshakeStart() {
|
||||||
|
m.tlsStart = now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) GotConn(ctx context.Context) func(httptrace.GotConnInfo) {
|
||||||
|
return func(httptrace.GotConnInfo) {
|
||||||
|
m.addConnAcquired(ctx, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) PutIdleConn(ctx context.Context) func(error) {
|
||||||
|
return func(error) {
|
||||||
|
m.addConnAcquired(ctx, -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) DNSDone(ctx context.Context) func(httptrace.DNSDoneInfo) {
|
||||||
|
return func(httptrace.DNSDoneInfo) {
|
||||||
|
m.DNSLookupDuration.Record(ctx, elapsed(m.dnsStart))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) ConnectDone(ctx context.Context) func(string, string, error) {
|
||||||
|
return func(string, string, error) {
|
||||||
|
m.ConnectDuration.Record(ctx, elapsed(m.connectStart))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) TLSHandshakeDone(ctx context.Context) func(tls.ConnectionState, error) {
|
||||||
|
return func(tls.ConnectionState, error) {
|
||||||
|
m.TLSHandshakeDuration.Record(ctx, elapsed(m.tlsStart))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) GotFirstResponseByte(ctx context.Context) func() {
|
||||||
|
return func() {
|
||||||
|
m.TimeToFirstByte.Record(ctx, elapsed(m.doStart))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *httpMetrics) addConnAcquired(ctx context.Context, incr int64) {
|
||||||
|
m.ConnectionUsage.Add(ctx, incr, func(o *metrics.RecordMetricOptions) {
|
||||||
|
o.Properties.Set("state", "acquired")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not used: it is recommended to track acquired vs idle conn, but we can't
|
||||||
|
// determine when something is truly idle with the current HTTP client hooks
|
||||||
|
// available to us.
|
||||||
|
func (m *httpMetrics) addConnIdle(ctx context.Context, incr int64) {
|
||||||
|
m.ConnectionUsage.Add(ctx, incr, func(o *metrics.RecordMetricOptions) {
|
||||||
|
o.Properties.Set("state", "idle")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func elapsed(start time.Time) float64 {
|
||||||
|
end := now()
|
||||||
|
elapsed := end.Sub(start)
|
||||||
|
return float64(elapsed) / 1e9
|
||||||
|
}
|
15
vendor/modules.txt
vendored
15
vendor/modules.txt
vendored
@ -126,12 +126,11 @@ github.com/aws/aws-sdk-go/service/sso/ssoiface
|
|||||||
github.com/aws/aws-sdk-go/service/ssooidc
|
github.com/aws/aws-sdk-go/service/ssooidc
|
||||||
github.com/aws/aws-sdk-go/service/sts
|
github.com/aws/aws-sdk-go/service/sts
|
||||||
github.com/aws/aws-sdk-go/service/sts/stsiface
|
github.com/aws/aws-sdk-go/service/sts/stsiface
|
||||||
# github.com/aws/aws-sdk-go-v2 v1.31.0
|
# github.com/aws/aws-sdk-go-v2 v1.32.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/aws
|
github.com/aws/aws-sdk-go-v2/aws
|
||||||
github.com/aws/aws-sdk-go-v2/aws/defaults
|
github.com/aws/aws-sdk-go-v2/aws/defaults
|
||||||
github.com/aws/aws-sdk-go-v2/aws/middleware
|
github.com/aws/aws-sdk-go-v2/aws/middleware
|
||||||
github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics
|
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/query
|
github.com/aws/aws-sdk-go-v2/aws/protocol/query
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/xml
|
github.com/aws/aws-sdk-go-v2/aws/protocol/xml
|
||||||
github.com/aws/aws-sdk-go-v2/aws/ratelimit
|
github.com/aws/aws-sdk-go-v2/aws/ratelimit
|
||||||
@ -150,24 +149,24 @@ github.com/aws/aws-sdk-go-v2/internal/sdk
|
|||||||
github.com/aws/aws-sdk-go-v2/internal/strings
|
github.com/aws/aws-sdk-go-v2/internal/strings
|
||||||
github.com/aws/aws-sdk-go-v2/internal/sync/singleflight
|
github.com/aws/aws-sdk-go-v2/internal/sync/singleflight
|
||||||
github.com/aws/aws-sdk-go-v2/internal/timeconv
|
github.com/aws/aws-sdk-go-v2/internal/timeconv
|
||||||
# github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18
|
# github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources
|
github.com/aws/aws-sdk-go-v2/internal/configsources
|
||||||
# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18
|
# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2
|
||||||
# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5
|
# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding
|
||||||
# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20
|
# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url
|
||||||
# github.com/aws/aws-sdk-go-v2/service/sts v1.31.3
|
# github.com/aws/aws-sdk-go-v2/service/sts v1.32.1
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts
|
github.com/aws/aws-sdk-go-v2/service/sts
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
|
github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts/types
|
github.com/aws/aws-sdk-go-v2/service/sts/types
|
||||||
# github.com/aws/smithy-go v1.21.0
|
# github.com/aws/smithy-go v1.22.0
|
||||||
## explicit; go 1.21
|
## explicit; go 1.21
|
||||||
github.com/aws/smithy-go
|
github.com/aws/smithy-go
|
||||||
github.com/aws/smithy-go/auth
|
github.com/aws/smithy-go/auth
|
||||||
|
Loading…
Reference in New Issue
Block a user