func()

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
}