in aggregators/converter.go [829:877]
func spanMetricsToAPMEvent(
key *aggregationpb.SpanAggregationKey,
metrics *aggregationpb.SpanMetrics,
baseEvent *modelpb.APMEvent,
intervalStr string,
) {
var target *modelpb.ServiceTarget
if key.TargetName != "" || key.TargetType != "" {
target = &modelpb.ServiceTarget{}
target.Type = key.TargetType
target.Name = key.TargetName
}
if baseEvent.Service == nil {
baseEvent.Service = &modelpb.Service{}
}
baseEvent.Service.Target = target
if baseEvent.Metricset == nil {
baseEvent.Metricset = &modelpb.Metricset{}
}
baseEvent.Metricset.Name = spanMetricsetName
baseEvent.Metricset.DocCount = uint64(math.Round(metrics.Count))
baseEvent.Metricset.Interval = intervalStr
if baseEvent.Span == nil {
baseEvent.Span = &modelpb.Span{}
}
baseEvent.Span.Name = key.SpanName
if baseEvent.Span.DestinationService == nil {
baseEvent.Span.DestinationService = &modelpb.DestinationService{}
}
baseEvent.Span.DestinationService.Resource = key.Resource
if baseEvent.Span.DestinationService.ResponseTime == nil {
baseEvent.Span.DestinationService.ResponseTime =
&modelpb.AggregatedDuration{}
}
baseEvent.Span.DestinationService.ResponseTime.Count =
uint64(math.Round(metrics.Count))
baseEvent.Span.DestinationService.ResponseTime.Sum =
uint64(math.Round(metrics.Sum))
if key.Outcome != "" {
if baseEvent.Event == nil {
baseEvent.Event = &modelpb.Event{}
}
baseEvent.Event.Outcome = key.Outcome
}
}