func()

in enrichments/trace/internal/elastic/span.go [449:495]


func (s *spanEnrichmentContext) setServiceTarget(span ptrace.Span) {
	var targetType, targetName string

	if s.peerService != "" {
		targetName = s.peerService
	}

	switch {
	case s.isDB:
		targetType = "db"
		if s.dbSystem != "" {
			targetType = s.dbSystem
		}
		if s.dbName != "" {
			targetName = s.dbName
		}
	case s.isMessaging:
		targetType = "messaging"
		if s.messagingSystem != "" {
			targetType = s.messagingSystem
		}
		if !s.messagingDestinationTemp && s.messagingDestinationName != "" {
			targetName = s.messagingDestinationName
		}
	case s.isRPC:
		targetType = "external"
		if s.rpcSystem != "" {
			targetType = s.rpcSystem
		}
		if s.rpcService != "" {
			targetName = s.rpcService
		}
	case s.isHTTP:
		targetType = "http"
		if resource := getHostPort(
			s.urlFull, s.urlDomain, s.urlPort,
			s.serverAddress, s.serverPort, // fallback
		); resource != "" {
			targetName = resource
		}
	}

	if targetType != "" || targetName != "" {
		span.Attributes().PutStr(elasticattr.ServiceTargetType, targetType)
		span.Attributes().PutStr(elasticattr.ServiceTargetName, targetName)
	}
}