Skip to content

Commit

Permalink
add entity
Browse files Browse the repository at this point in the history
  • Loading branch information
musa-asad committed Feb 6, 2025
1 parent c9ac8f5 commit 16f8a4c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 24 deletions.
30 changes: 12 additions & 18 deletions exporter/awsemfexporter/internal/entity/entityattributes.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package entity

import (
"go.opentelemetry.io/collector/pdata/pcommon"
)

const (
// Entity resource attributes in OTLP payload
AWSEntityPrefix = "com.amazonaws.cloudwatch.entity.internal."
Expand Down Expand Up @@ -49,22 +45,20 @@ var attributeEntityToFieldMap = map[string]string{
AttributeEntityServiceNameSource: AWSServiceNameSource,
}

// AddEntity populates resource attributes with entity fields
func AddEntity(am pcommon.Map) {
for internalAttr, entityField := range attributeEntityToFieldMap {
val, ok := am.Get(internalAttr)
if ok {
val.CopyTo(am.PutEmpty(entityField))
}
}

val, ok := am.Get(AttributeEntityK8sClusterName)
if ok {
switch val.Str() {
// GetEntityField returns entity field for provided attribute
func GetEntityField(attribute string, value string) string {
if attribute == AttributeEntityK8sClusterName {
switch value {
case AttributeEntityEKSPlatform:
val.CopyTo(am.PutEmpty(EksCluster))
return EksCluster
case AttributeEntityK8sPlatform:
val.CopyTo(am.PutEmpty(K8sCluster))
return K8sCluster
}
}

if field, ok := attributeEntityToFieldMap[attribute]; ok {
return field
}

return ""
}
26 changes: 20 additions & 6 deletions exporter/awsemfexporter/metric_translator.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awsemfexporter/internal/entity"
"reflect"
"strings"
"time"
Expand Down Expand Up @@ -185,7 +186,11 @@ func translateGroupedMetricToCWMetric(groupedMetric *groupedMetric, config *Conf

// Add labels to fields
for k, v := range labels {
fields[k] = v
if strings.HasPrefix(k, entity.AWSEntityPrefix) {
fields[entity.GetEntityField(k, v)] = v
} else {
fields[k] = v
}
}
// Add metrics to fields
for metricName, metricInfo := range groupedMetric.metrics {
Expand Down Expand Up @@ -222,11 +227,13 @@ func groupedMetricToCWMeasurement(groupedMetric *groupedMetric, config *Config)
dimensionRollupOption := config.DimensionRollupOption

// Create a dimension set containing list of label names
dimSet := make([]string, len(labels))
dimSet := make([]string, 0, len(labels))
idx := 0
for labelName := range labels {
dimSet[idx] = labelName
idx++
if !strings.HasPrefix(labelName, entity.AWSEntityPrefix) {
dimSet[idx] = labelName
idx++
}
}
dimensions := [][]string{dimSet}

Expand Down Expand Up @@ -274,6 +281,13 @@ func groupedMetricToCWMeasurement(groupedMetric *groupedMetric, config *Config)
func groupedMetricToCWMeasurementsWithFilters(groupedMetric *groupedMetric, config *Config) (cWMeasurements []cWMeasurement) {
labels := groupedMetric.labels

filteredLabels := make(map[string]string)
for k, v := range labels {
if !strings.HasPrefix(k, entity.AWSEntityPrefix) {
filteredLabels[k] = v
}
}

// Filter metric declarations by labels
metricDeclarations := make([]*MetricDeclaration, 0, len(config.MetricDeclarations))
for _, metricDeclaration := range config.MetricDeclarations {
Expand Down Expand Up @@ -343,15 +357,15 @@ func groupedMetricToCWMeasurementsWithFilters(groupedMetric *groupedMetric, conf
}

// Apply single/zero dimension rollup to labels
rollupDimensionArray := dimensionRollup(config.DimensionRollupOption, labels)
rollupDimensionArray := dimensionRollup(config.DimensionRollupOption, filteredLabels)

// Translate each group into a CW Measurement
cWMeasurements = make([]cWMeasurement, 0, len(metricDeclGroups))
for _, group := range metricDeclGroups {
var dimensions [][]string
// Extract dimensions from matched metric declarations
for _, metricDeclIdx := range group.metricDeclIdxList {
dims := metricDeclarations[metricDeclIdx].ExtractDimensions(labels)
dims := metricDeclarations[metricDeclIdx].ExtractDimensions(filteredLabels)
dimensions = append(dimensions, dims...)
}
dimensions = append(dimensions, rollupDimensionArray...)
Expand Down

0 comments on commit 16f8a4c

Please sign in to comment.