in plugins/processors/awsapplicationsignals/internal/normalizer/attributesnormalizer.go [136:198]
func (n *attributesNormalizer) normalizeTelemetryAttributes(attributes, resourceAttributes pcommon.Map, isTrace bool) {
if isTrace {
return
}
var (
sdkName string
sdkVersion string
sdkLang string
)
var (
sdkAutoName string
sdkAutoVersion string
)
sdkName, sdkVersion, sdkLang = "-", "-", "-"
mode := instrumentationModeManual
resourceAttributes.Range(func(k string, v pcommon.Value) bool {
switch k {
case semconv.AttributeTelemetrySDKName:
sdkName = removeWhitespaces(v.Str())
case semconv.AttributeTelemetrySDKLanguage:
sdkLang = removeWhitespaces(v.Str())
case semconv.AttributeTelemetrySDKVersion:
sdkVersion = removeWhitespaces(v.Str())
}
switch k {
case semconv.AttributeTelemetryDistroName:
sdkAutoName = removeWhitespaces(v.Str())
case deprecatedsemconv.AttributeTelemetryAutoVersion, semconv.AttributeTelemetryDistroVersion:
sdkAutoVersion = removeWhitespaces(v.Str())
}
return true
})
if sdkAutoName != "" {
sdkName = sdkAutoName
mode = instrumentationModeAuto
}
if sdkAutoVersion != "" {
sdkVersion = sdkAutoVersion
mode = instrumentationModeAuto
}
attributes.PutStr(common.MetricAttributeTelemetrySDK, fmt.Sprintf("%s,%s,%s,%s", sdkName, sdkVersion, sdkLang, mode))
attributes.PutStr(common.MetricAttributeTelemetryAgent, fmt.Sprintf("CWAgent/%s", version.Number()))
var telemetrySource string
if val, ok := attributes.Get(attr.AWSSpanKind); ok {
switch val.Str() {
case "CLIENT":
telemetrySource = "ClientSpan"
case "SERVER":
telemetrySource = "ServerSpan"
case "PRODUCER":
telemetrySource = "ProducerSpan"
case "CONSUMER":
telemetrySource = "ConsumerSpan"
case "LOCAL_ROOT":
telemetrySource = "LocalRootSpan"
}
attributes.PutStr(common.MetricAttributeTelemetrySource, telemetrySource)
attributes.Remove(attr.AWSSpanKind)
}
}