in plugins/processors/awsentity/processor.go [331:451]
func (p *awsEntityProcessor) scrapeServiceAttribute(scopeMetric pmetric.ScopeMetricsSlice) (string, string, string) {
entityServiceName := EMPTY
entityServiceNameSource := EMPTY
entityEnvironmentName := EMPTY
for j := 0; j < scopeMetric.Len(); j++ {
metric := scopeMetric.At(j).Metrics()
for k := 0; k < metric.Len(); k++ {
if entityServiceName != EMPTY && entityEnvironmentName != EMPTY && entityServiceNameSource != EMPTY {
return entityServiceName, entityEnvironmentName, entityServiceNameSource
}
m := metric.At(k)
switch m.Type() {
case pmetric.MetricTypeGauge:
dps := m.Gauge().DataPoints()
for l := 0; l < dps.Len(); l++ {
dpService := getServiceAttributes(dps.At(l).Attributes())
if dpService != EMPTY {
entityServiceName = dpService
}
if dpServiceNameSource, ok := dps.At(l).Attributes().Get(entityattributes.AttributeServiceNameSource); ok {
entityServiceNameSource = dpServiceNameSource.Str()
dps.At(l).Attributes().Remove(semconv.AttributeServiceName)
dps.At(l).Attributes().Remove(entityattributes.AttributeServiceNameSource)
}
if dpEnvironment, ok := dps.At(l).Attributes().Get(semconv.AttributeDeploymentEnvironment); ok {
entityEnvironmentName = dpEnvironment.Str()
}
if _, ok := dps.At(l).Attributes().Get(entityattributes.AttributeDeploymentEnvironmentSource); ok {
dps.At(l).Attributes().Remove(semconv.AttributeDeploymentEnvironment)
dps.At(l).Attributes().Remove(entityattributes.AttributeDeploymentEnvironmentSource)
}
}
case pmetric.MetricTypeSum:
dps := m.Sum().DataPoints()
for l := 0; l < dps.Len(); l++ {
dpService := getServiceAttributes(dps.At(l).Attributes())
if dpService != EMPTY {
entityServiceName = dpService
}
if dpServiceNameSource, ok := dps.At(l).Attributes().Get(entityattributes.AttributeServiceNameSource); ok {
entityServiceNameSource = dpServiceNameSource.Str()
dps.At(l).Attributes().Remove(semconv.AttributeServiceName)
dps.At(l).Attributes().Remove(entityattributes.AttributeServiceNameSource)
}
if dpEnvironment, ok := dps.At(l).Attributes().Get(semconv.AttributeDeploymentEnvironment); ok {
entityEnvironmentName = dpEnvironment.Str()
}
if _, ok := dps.At(l).Attributes().Get(entityattributes.AttributeDeploymentEnvironmentSource); ok {
dps.At(l).Attributes().Remove(semconv.AttributeDeploymentEnvironment)
dps.At(l).Attributes().Remove(entityattributes.AttributeDeploymentEnvironmentSource)
}
}
case pmetric.MetricTypeHistogram:
dps := m.Histogram().DataPoints()
for l := 0; l < dps.Len(); l++ {
dpService := getServiceAttributes(dps.At(l).Attributes())
if dpService != EMPTY {
entityServiceName = dpService
}
if dpServiceNameSource, ok := dps.At(l).Attributes().Get(entityattributes.AttributeServiceNameSource); ok {
entityServiceNameSource = dpServiceNameSource.Str()
dps.At(l).Attributes().Remove(semconv.AttributeServiceName)
dps.At(l).Attributes().Remove(entityattributes.AttributeServiceNameSource)
}
if dpEnvironment, ok := dps.At(l).Attributes().Get(semconv.AttributeDeploymentEnvironment); ok {
entityEnvironmentName = dpEnvironment.Str()
}
if _, ok := dps.At(l).Attributes().Get(entityattributes.AttributeDeploymentEnvironmentSource); ok {
dps.At(l).Attributes().Remove(semconv.AttributeDeploymentEnvironment)
dps.At(l).Attributes().Remove(entityattributes.AttributeDeploymentEnvironmentSource)
}
}
case pmetric.MetricTypeExponentialHistogram:
dps := m.ExponentialHistogram().DataPoints()
for l := 0; l < dps.Len(); l++ {
dpService := getServiceAttributes(dps.At(l).Attributes())
if dpService != EMPTY {
entityServiceName = dpService
}
if dpServiceNameSource, ok := dps.At(l).Attributes().Get(entityattributes.AttributeServiceNameSource); ok {
entityServiceNameSource = dpServiceNameSource.Str()
dps.At(l).Attributes().Remove(semconv.AttributeServiceName)
dps.At(l).Attributes().Remove(entityattributes.AttributeServiceNameSource)
}
if dpEnvironment, ok := dps.At(l).Attributes().Get(semconv.AttributeDeploymentEnvironment); ok {
entityEnvironmentName = dpEnvironment.Str()
}
if _, ok := dps.At(l).Attributes().Get(entityattributes.AttributeDeploymentEnvironmentSource); ok {
dps.At(l).Attributes().Remove(semconv.AttributeDeploymentEnvironment)
dps.At(l).Attributes().Remove(entityattributes.AttributeDeploymentEnvironmentSource)
}
}
case pmetric.MetricTypeSummary:
dps := m.Sum().DataPoints()
for l := 0; l < dps.Len(); l++ {
dpService := getServiceAttributes(dps.At(l).Attributes())
if dpService != EMPTY {
entityServiceName = dpService
}
if dpServiceNameSource, ok := dps.At(l).Attributes().Get(entityattributes.AttributeServiceNameSource); ok {
entityServiceNameSource = dpServiceNameSource.Str()
dps.At(l).Attributes().Remove(semconv.AttributeServiceName)
dps.At(l).Attributes().Remove(entityattributes.AttributeServiceNameSource)
}
if dpEnvironment, ok := dps.At(l).Attributes().Get(semconv.AttributeDeploymentEnvironment); ok {
entityEnvironmentName = dpEnvironment.Str()
}
if _, ok := dps.At(l).Attributes().Get(entityattributes.AttributeDeploymentEnvironmentSource); ok {
dps.At(l).Attributes().Remove(semconv.AttributeDeploymentEnvironment)
dps.At(l).Attributes().Remove(entityattributes.AttributeDeploymentEnvironmentSource)
}
}
default:
p.logger.Debug("Ignore unknown metric type", zap.String("type", m.Type().String()))
}
}
}
return entityServiceName, entityEnvironmentName, entityServiceNameSource
}