Skip to content

Commit ef4a9a0

Browse files
authored
internal: capture user-agent in metrics (#2644)
1 parent c964dbd commit ef4a9a0

File tree

4 files changed

+41
-0
lines changed

4 files changed

+41
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "33f76639-3bb3-44b9-b26b-55846650e8a0",
3+
"type": "feature",
4+
"description": "Capture user agent in internal metrics.",
5+
"modules": [
6+
"."
7+
]
8+
}

aws/middleware/private/metrics/metrics.go

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ type MetricData struct {
124124
OperationName string
125125
PartitionID string
126126
Region string
127+
UserAgent string
127128
RequestContentLength int64
128129
Stream StreamMetrics
129130
Attempts []AttemptMetrics

aws/middleware/private/metrics/middleware/configuration.go

+3
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ func WithMetricMiddlewares(
5454
if err := timeSigning(stack); err != nil {
5555
return err
5656
}
57+
if err := stack.Build.Add(&captureUserAgent{}, middleware.After); err != nil {
58+
return err
59+
}
5760
return nil
5861
}
5962
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package middleware
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics"
8+
"github.com/aws/smithy-go/middleware"
9+
smithyhttp "github.com/aws/smithy-go/transport/http"
10+
)
11+
12+
type captureUserAgent struct{}
13+
14+
func (*captureUserAgent) ID() string { return "captureUserAgent" }
15+
16+
func (*captureUserAgent) HandleBuild(
17+
ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler,
18+
) (
19+
out middleware.BuildOutput, md middleware.Metadata, err error,
20+
) {
21+
r, ok := in.Request.(*smithyhttp.Request)
22+
if !ok {
23+
return out, md, fmt.Errorf("unexpected transport type %T", in.Request)
24+
}
25+
26+
mctx := metrics.Context(ctx)
27+
mctx.Data().UserAgent = r.Header.Get("User-Agent")
28+
return next.HandleBuild(ctx, in)
29+
}

0 commit comments

Comments
 (0)