in aggregators/converter.go [88:116]
func (p *partitionedMetricsBuilder) processEvent(e *modelpb.APMEvent) {
switch e.Type() {
case modelpb.TransactionEventType:
repCount := e.GetTransaction().GetRepresentativeCount()
if repCount <= 0 {
p.addServiceSummaryMetrics()
return
}
duration := time.Duration(e.GetEvent().GetDuration())
p.addTransactionMetrics(e, repCount, duration)
p.addServiceTransactionMetrics(e, repCount, duration)
for _, dss := range e.GetTransaction().GetDroppedSpansStats() {
p.addDroppedSpanStatsMetrics(dss, repCount)
}
case modelpb.SpanEventType:
target := e.GetService().GetTarget()
repCount := e.GetSpan().GetRepresentativeCount()
destSvc := e.GetSpan().GetDestinationService().GetResource()
if repCount <= 0 || (target == nil && destSvc == "") {
p.addServiceSummaryMetrics()
return
}
p.addSpanMetrics(e, repCount)
default:
// All other event types should add an empty service metrics,
// for adding to service summary metrics.
p.addServiceSummaryMetrics()
}
}