Skip to content

Commit

Permalink
Adjust resourcedetection for ecs
Browse files Browse the repository at this point in the history
  • Loading branch information
bjrara committed Sep 10, 2024
1 parent 82a0d1e commit 5b4cf0e
Show file tree
Hide file tree
Showing 12 changed files with 155 additions and 99 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ var attributesRenamingForMetric = map[string]string{
}

var resourceAttributesRenamingForTrace = map[string]string{
// these kubernetes resource attributes are set by the openTelemetry operator
// these kubernetes resource attributes are set by the OpenTelemetry operator
// see the code references from upstream:
// * https://github.com/open-telemetry/opentelemetry-operator/blob/0e39ee77693146e0924da3ca474a0fe14dc30b3a/pkg/instrumentation/sdk.go#L245
// * https://github.com/open-telemetry/opentelemetry-operator/blob/0e39ee77693146e0924da3ca474a0fe14dc30b3a/pkg/instrumentation/sdk.go#L305C43-L305C43
Expand All @@ -62,8 +62,8 @@ var attributesRenamingForTrace = map[string]string{
attr.AWSRemoteTarget: attr.AWSRemoteResourceIdentifier,
}

var resourceAttributesToMetric = map[string]string{
// these kubernetes resource attributes are set by the openTelemtry operator
var resourceToMetricAttributes = map[string]string{
// these kubernetes resource attributes are set by the OpenTelemetry operator
// see the code references from upstream:
// * https://github.com/open-telemetry/opentelemetry-operator/blob/0e39ee77693146e0924da3ca474a0fe14dc30b3a/pkg/instrumentation/sdk.go#L245
// * https://github.com/open-telemetry/opentelemetry-operator/blob/0e39ee77693146e0924da3ca474a0fe14dc30b3a/pkg/instrumentation/sdk.go#L305C43-L305C43
Expand Down Expand Up @@ -110,7 +110,7 @@ func (n *attributesNormalizer) copyResourceAttributesToAttributes(attributes, re
if isTrace {
return
}
for k, v := range resourceAttributesToMetric {
for k, v := range resourceToMetricAttributes {
if resourceAttrValue, ok := resourceAttributes.Get(k); ok {
// print some debug info when an attribute value is overwritten
if originalAttrValue, ok := attributes.Get(k); ok {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func TestCopyResourceAttributesToAttributes(t *testing.T) {

// Create a pcommon.Map for resourceAttributes with some attributes
resourceAttributes := pcommon.NewMap()
for resourceAttrKey, attrKey := range resourceAttributesToMetric {
for resourceAttrKey, attrKey := range resourceToMetricAttributes {
resourceAttributes.PutStr(resourceAttrKey, attrKey+"-value")
}
resourceAttributes.PutStr("host.id", "i-01ef7d37f42caa168")
Expand All @@ -98,7 +98,7 @@ func TestCopyResourceAttributesToAttributes(t *testing.T) {
normalizer.copyResourceAttributesToAttributes(attributes, resourceAttributes, false)

// Check that the attribute has been copied correctly
for _, attrKey := range resourceAttributesToMetric {
for _, attrKey := range resourceToMetricAttributes {
if value, ok := attributes.Get(attrKey); !ok || value.AsString() != attrKey+"-value" {
t.Errorf("Attribute was not copied correctly: got %v, want %v", value.AsString(), attrKey+"-value")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -392,21 +391,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -392,21 +391,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -392,21 +391,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -392,21 +391,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
17 changes: 8 additions & 9 deletions translator/tocwconfig/sampleConfig/base_appsignals_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -254,21 +253,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ processors:
detectors:
- eks
- env
- ecs
- ec2
disable_keep_alives: false
docker:
Expand Down Expand Up @@ -250,21 +249,21 @@ processors:
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
enabled: true
aws.ecs.task.family:
enabled: false
enabled: true
aws.ecs.task.id:
enabled: false
enabled: true
aws.ecs.task.revision:
enabled: false
enabled: true
aws.log.group.arns:
enabled: false
enabled: true
aws.log.group.names:
enabled: false
enabled: true
aws.log.stream.arns:
enabled: false
enabled: true
aws.log.stream.names:
enabled: false
enabled: true
cloud.account.id:
enabled: true
cloud.availability_zone:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,38 +1,6 @@
detectors: [eks, env, ecs, ec2]
detectors: [eks, env, ec2]
override: true
timeout: 2s
ecs:
resource_attributes:
aws.ecs.cluster.arn:
enabled: true
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
aws.ecs.task.family:
enabled: false
aws.ecs.task.id:
enabled: false
aws.ecs.task.revision:
enabled: false
aws.log.group.arns:
enabled: false
aws.log.group.names:
enabled: false
aws.log.stream.arns:
enabled: false
aws.log.stream.names:
enabled: false
cloud.account.id:
enabled: true
cloud.availability_zone:
enabled: true
cloud.platform:
enabled: true
cloud.provider:
enabled: true
cloud.region:
enabled: true
ec2:
tags:
- ^kubernetes.io/cluster/.*$
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
detectors: [env, ecs, ec2]
override: true
timeout: 2s
ecs:
resource_attributes:
aws.ecs.cluster.arn:
enabled: true
aws.ecs.launchtype:
enabled: true
aws.ecs.task.arn:
enabled: false
aws.ecs.task.family:
enabled: false
aws.ecs.task.id:
enabled: false
aws.ecs.task.revision:
enabled: false
aws.log.group.arns:
enabled: false
aws.log.group.names:
enabled: false
aws.log.stream.arns:
enabled: false
aws.log.stream.names:
enabled: false
cloud.account.id:
enabled: true
cloud.availability_zone:
enabled: true
cloud.platform:
enabled: true
cloud.provider:
enabled: true
cloud.region:
enabled: true
ec2:
tags:
- ^aws:autoscaling:groupName
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,17 @@ import (
"go.opentelemetry.io/collector/confmap"
"go.opentelemetry.io/collector/processor"

"github.com/aws/amazon-cloudwatch-agent/translator/config"
"github.com/aws/amazon-cloudwatch-agent/translator/context"
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/common"
"github.com/aws/amazon-cloudwatch-agent/translator/util/ecsutil"
)

//go:embed configs/config.yaml
var appSignalsAwsResourceDetectionConfig string
var appSignalsDefaultResourceDetectionConfig string

//go:embed configs/ecs_config.yaml
var appSignalsECSResourceDetectionConfig string

type translator struct {
name string
Expand Down Expand Up @@ -57,5 +63,21 @@ func (t *translator) ID() component.ID {

func (t *translator) Translate(conf *confmap.Conf) (component.Config, error) {
cfg := t.factory.CreateDefaultConfig().(*resourcedetectionprocessor.Config)
return common.GetYamlFileToYamlConfig(cfg, appSignalsAwsResourceDetectionConfig)

mode := context.CurrentContext().KubernetesMode()
if mode == "" {
mode = context.CurrentContext().Mode()
}
if mode == config.ModeEC2 {
if ecsutil.GetECSUtilSingleton().IsECS() {
mode = config.ModeECS
}
}

switch mode {
case config.ModeECS:
return common.GetYamlFileToYamlConfig(cfg, appSignalsECSResourceDetectionConfig)
default:
return common.GetYamlFileToYamlConfig(cfg, appSignalsDefaultResourceDetectionConfig)
}
}
Loading

0 comments on commit 5b4cf0e

Please sign in to comment.