Skip to content

Commit 517eadc

Browse files
committed
Migrate CloudWatch exporter to SDKv2
1 parent 7b58d63 commit 517eadc

File tree

26 files changed

+940
-14827
lines changed

26 files changed

+940
-14827
lines changed

cfg/aws/v2/aws_sdk_logging.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import (
1313
)
1414

1515
// Hard coded strings that match actual variable names in the AWS SDK.
16-
// I don't expect these names to change, or their meaning to change.
17-
// Update this map if/when AWS SDK adds more levels (unlikely).
1816
var stringToLevelMap = map[string]aws.ClientLogMode{
1917
// AWS SDK v2 Levels
2018
"LogRequest": aws.LogRequest,
@@ -47,6 +45,9 @@ func SetSDKLogLevel(sdkLogLevelString string) {
4745
levels := strings.Split(sdkLogLevelString, "|")
4846
for _, v := range levels {
4947
trimmed := strings.TrimSpace(v)
48+
if trimmed == "LogDebugWithRequestErrors" {
49+
log.Println(`W! AWS SDK log level "LogDebugWithRequestErrors" is no longer supported. This will be evaluated as the equivalent of "LogDebug".`)
50+
}
5051
// If v not in map, then OR with 0 is harmless.
5152
temp |= stringToLevelMap[trimmed]
5253
}

cfg/aws/v2/aws_sdk_logging_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func TestSetSDKLogLevel(t *testing.T) {
4040
{input: "LogDebugWithSigning", want: aws.LogRequest | aws.LogResponse | aws.LogSigning},
4141
{input: "LogDebugWithHTTPBody", want: aws.LogRequestWithBody | aws.LogResponseWithBody},
4242
{input: "LogDebugWithRequestRetries", want: aws.LogRequest | aws.LogResponse | aws.LogRetries},
43+
{input: "LogDebugWithRequestErrors", want: aws.LogRequest | aws.LogResponse},
4344
{input: "LogDebugWithEventStreamBody", want: aws.LogRequestEventMessage | aws.LogResponseEventMessage},
4445
// Extra space around is allowed.
4546
{input: " LogRequest ", want: aws.LogRequest},

cfg/aws/v2/mock_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ import (
1414
)
1515

1616
const (
17-
testProfile = "default"
18-
testRegion = "us-east-1"
19-
testRoleARN = "arn:aws:iam::012345678912:role/XXXXXXXX"
17+
testAccountID = "012345678912"
18+
testInstanceARN = "arn:aws:ec2:us-east-1:012345678912:instance/i-0123a456700123456"
19+
testProfile = "default"
20+
testRegion = "us-east-1"
21+
testRoleARN = "arn:aws:iam::012345678912:role/XXXXXXXX"
2022
)
2123

2224
var (

cfg/aws/v2/sts_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func TestStsCredentialsProvider_Retrieve(t *testing.T) {
105105
}
106106

107107
func TestNewStsCredentialsProvider(t *testing.T) {
108-
provider := newStsCredentialsProvider(aws.Config{}, "arn:aws:iam::012345678912:role/XXXXXXXX", testRegion)
108+
provider := newStsCredentialsProvider(aws.Config{}, testRoleARN, testRegion)
109109

110110
assert.NotNil(t, provider)
111111
stsProvider, ok := provider.(*stsCredentialsProvider)
@@ -131,20 +131,20 @@ func TestConfusedDeputyHeaders(t *testing.T) {
131131
expectedHeaderAccount: "",
132132
},
133133
"both populated": {
134-
envSourceArn: "arn:aws:ec2:us-east-1:474668408639:instance/i-08293cd9825754f7c",
135-
envSourceAccount: "539247453986",
136-
expectedHeaderArn: "arn:aws:ec2:us-east-1:474668408639:instance/i-08293cd9825754f7c",
137-
expectedHeaderAccount: "539247453986",
134+
envSourceArn: testInstanceARN,
135+
envSourceAccount: testAccountID,
136+
expectedHeaderArn: testInstanceARN,
137+
expectedHeaderAccount: testAccountID,
138138
},
139139
"only source arn populated": {
140-
envSourceArn: "arn:aws:ec2:us-east-1:474668408639:instance/i-08293cd9825754f7c",
140+
envSourceArn: testInstanceARN,
141141
envSourceAccount: "",
142142
expectedHeaderArn: "",
143143
expectedHeaderAccount: "",
144144
},
145145
"only source account populated": {
146146
envSourceArn: "",
147-
envSourceAccount: "539247453986",
147+
envSourceAccount: testAccountID,
148148
expectedHeaderArn: "",
149149
expectedHeaderAccount: "",
150150
},

cmd/amazon-cloudwatch-agent/amazon-cloudwatch-agent.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"go.uber.org/zap"
3434

3535
configaws "github.com/aws/amazon-cloudwatch-agent/cfg/aws"
36+
configaws2 "github.com/aws/amazon-cloudwatch-agent/cfg/aws/v2"
3637
"github.com/aws/amazon-cloudwatch-agent/cfg/envconfig"
3738
"github.com/aws/amazon-cloudwatch-agent/cmd/amazon-cloudwatch-agent/internal"
3839
"github.com/aws/amazon-cloudwatch-agent/extension/agenthealth/handler/useragent"
@@ -175,6 +176,7 @@ func reloadLoop(
175176
// Set AWS SDK logging
176177
sdkLogLevel := os.Getenv(envconfig.AWS_SDK_LOG_LEVEL)
177178
configaws.SetSDKLogLevel(sdkLogLevel)
179+
configaws2.SetSDKLogLevel(sdkLogLevel)
178180
previousModTime = info.ModTime()
179181
}
180182
case <-ctx.Done():
@@ -288,12 +290,13 @@ func runAgent(ctx context.Context,
288290
// we cannot change the sdk log level without restarting the Agent.
289291
// For example CloudWatch.Connect().
290292
sdkLogLevel := os.Getenv(envconfig.AWS_SDK_LOG_LEVEL)
291-
configaws.SetSDKLogLevel(sdkLogLevel)
292293
if sdkLogLevel == "" {
293294
log.Println("I! AWS SDK log level not set")
294295
} else {
295296
log.Printf("I! AWS SDK log level, %s\n", sdkLogLevel)
296297
}
298+
configaws.SetSDKLogLevel(sdkLogLevel)
299+
configaws2.SetSDKLogLevel(sdkLogLevel)
297300

298301
if *fTest || *fTestWait != 0 {
299302
testWaitDuration := time.Duration(*fTestWait) * time.Second

go.mod

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,49 +9,49 @@ replace collectd.org v0.4.0 => github.com/collectd/go-collectd v0.4.0
99
// Replace with https://github.com/amazon-contributing/opentelemetry-collector-contrib, there are no requirements for all receivers/processors/exporters
1010
// to be all replaced since there are some changes that will always be from upstream
1111
replace (
12-
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.0.0-20251211175346-5faee86d9fde
13-
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20251211175346-5faee86d9fde
14-
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.0.0-20251211175346-5faee86d9fde
12+
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter v0.0.0-20260114204312-9cef1509b4d3
13+
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsemfexporter v0.0.0-20260114204312-9cef1509b4d3
14+
github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsxrayexporter => github.com/amazon-contributing/opentelemetry-collector-contrib/exporter/awsxrayexporter v0.0.0-20260114204312-9cef1509b4d3
1515
)
1616

1717
replace (
18-
github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware => github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware v0.0.0-20251211175346-5faee86d9fde
19-
github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy => github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsproxy v0.0.0-20251211175346-5faee86d9fde
18+
github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware => github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware v0.0.0-20260114204312-9cef1509b4d3
19+
github.com/open-telemetry/opentelemetry-collector-contrib/extension/awsproxy => github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsproxy v0.0.0-20260114204312-9cef1509b4d3
2020
)
2121

2222
replace (
23-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/awsutil v0.0.0-20251211175346-5faee86d9fde
24-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/containerinsight v0.0.0-20251211175346-5faee86d9fde
25-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/cwlogs v0.0.0-20251211175346-5faee86d9fde
26-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/k8s v0.0.0-20251211175346-5faee86d9fde
27-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/metrics v0.0.0-20251211175346-5faee86d9fde
28-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/proxy v0.0.0-20251211175346-5faee86d9fde
29-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/xray v0.0.0-20251211175346-5faee86d9fde
30-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/coreinternal v0.0.0-20251211175346-5faee86d9fde
31-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/k8sconfig v0.0.0-20251211175346-5faee86d9fde
32-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/kubelet v0.0.0-20251211175346-5faee86d9fde
33-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/metadataproviders v0.0.0-20251211175346-5faee86d9fde
23+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/awsutil => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/awsutil v0.0.0-20260114204312-9cef1509b4d3
24+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/containerinsight v0.0.0-20260114204312-9cef1509b4d3
25+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/cwlogs => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/cwlogs v0.0.0-20260114204312-9cef1509b4d3
26+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/k8s v0.0.0-20260114204312-9cef1509b4d3
27+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/metrics v0.0.0-20260114204312-9cef1509b4d3
28+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/proxy v0.0.0-20260114204312-9cef1509b4d3
29+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/aws/xray v0.0.0-20260114204312-9cef1509b4d3
30+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/coreinternal v0.0.0-20260114204312-9cef1509b4d3
31+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/k8sconfig v0.0.0-20260114204312-9cef1509b4d3
32+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/kubelet v0.0.0-20260114204312-9cef1509b4d3
33+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders => github.com/amazon-contributing/opentelemetry-collector-contrib/internal/metadataproviders v0.0.0-20260114204312-9cef1509b4d3
3434
)
3535

3636
replace (
3737
// For clear resource attributes after copy functionality https://github.com/amazon-contributing/opentelemetry-collector-contrib/pull/148
38-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.0.0-20251211175346-5faee86d9fde
39-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/stanza v0.0.0-20251211175346-5faee86d9fde
38+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.0.0-20260114204312-9cef1509b4d3
39+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/stanza v0.0.0-20260114204312-9cef1509b4d3
4040
// Replace with contrib to revert upstream change https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/20519
41-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/translator/prometheus v0.0.0-20251211175346-5faee86d9fde
41+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus => github.com/amazon-contributing/opentelemetry-collector-contrib/pkg/translator/prometheus v0.0.0-20260114204312-9cef1509b4d3
4242
)
4343

4444
replace (
45-
github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => github.com/amazon-contributing/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.0.0-20251211175346-5faee86d9fde
46-
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor => github.com/amazon-contributing/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.0.0-20251211175346-5faee86d9fde
45+
github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => github.com/amazon-contributing/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.0.0-20260114204312-9cef1509b4d3
46+
github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor => github.com/amazon-contributing/opentelemetry-collector-contrib/processor/resourcedetectionprocessor v0.0.0-20260114204312-9cef1509b4d3
4747
)
4848

4949
replace (
50-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.0.0-20251211175346-5faee86d9fde
51-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightskueuereceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awscontainerinsightskueuereceiver v0.0.0-20251211175346-5faee86d9fde
52-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.0.0-20251211175346-5faee86d9fde
53-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/jmxreceiver v0.0.0-20251211175346-5faee86d9fde
54-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.0.0-20251211175346-5faee86d9fde
50+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.0.0-20260114204312-9cef1509b4d3
51+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightskueuereceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awscontainerinsightskueuereceiver v0.0.0-20260114204312-9cef1509b4d3
52+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/awsxrayreceiver v0.0.0-20260114204312-9cef1509b4d3
53+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/jmxreceiver v0.0.0-20260114204312-9cef1509b4d3
54+
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusreceiver => github.com/amazon-contributing/opentelemetry-collector-contrib/receiver/prometheusreceiver v0.0.0-20260114204312-9cef1509b4d3
5555
)
5656

5757
// Temporary fix, pending PR https://github.com/shirou/gopsutil/pull/957
@@ -104,12 +104,12 @@ require (
104104
github.com/Jeffail/gabs v1.4.0
105105
github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware v0.124.0
106106
github.com/aws/aws-sdk-go v1.55.7
107-
github.com/aws/aws-sdk-go-v2 v1.36.3
108-
github.com/aws/aws-sdk-go-v2/config v1.29.14
109-
github.com/aws/aws-sdk-go-v2/credentials v1.17.67
110-
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.30.2
111-
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19
112-
github.com/aws/smithy-go v1.22.2
107+
github.com/aws/aws-sdk-go-v2 v1.41.1
108+
github.com/aws/aws-sdk-go-v2/config v1.32.7
109+
github.com/aws/aws-sdk-go-v2/credentials v1.19.7
110+
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.53.1
111+
github.com/aws/aws-sdk-go-v2/service/sts v1.41.6
112+
github.com/aws/smithy-go v1.24.0
113113
github.com/bigkevmcd/go-configparser v0.0.0-20200217161103-d137835d2579
114114
github.com/deckarep/golang-set/v2 v2.3.1
115115
github.com/fsnotify/fsnotify v1.9.0
@@ -276,15 +276,16 @@ require (
276276
github.com/armon/go-metrics v0.4.1 // indirect
277277
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
278278
github.com/aws/aws-msk-iam-sasl-signer-go v1.0.1 // indirect
279-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
280-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
281-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
282-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
279+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.17 // indirect
280+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.17 // indirect
281+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.17 // indirect
282+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
283283
github.com/aws/aws-sdk-go-v2/service/ec2 v1.211.2 // indirect
284-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
285-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
286-
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
287-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
284+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 // indirect
285+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.17 // indirect
286+
github.com/aws/aws-sdk-go-v2/service/signin v1.0.5 // indirect
287+
github.com/aws/aws-sdk-go-v2/service/sso v1.30.9 // indirect
288+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.13 // indirect
288289
github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 // indirect
289290
github.com/benbjohnson/clock v1.3.0 // indirect
290291
github.com/beorn7/perks v1.0.1 // indirect

0 commit comments

Comments
 (0)