Skip to content

Commit

Permalink
Report breakdown timings in microseconds
Browse files Browse the repository at this point in the history
  • Loading branch information
axw committed Jul 1, 2019
1 parent 1fa306d commit ad6b364
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 14 deletions.
8 changes: 4 additions & 4 deletions breakdown.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ const (

// Breakdown metric names.
transactionDurationCountMetricName = "transaction.duration.count"
transactionDurationSumMetricName = "transaction.duration.sum"
transactionDurationSumMetricName = "transaction.duration.sum.us"
transactionBreakdownCountMetricName = "transaction.breakdown.count"
spanSelfTimeCountMetricName = "span.self_time.count"
spanSelfTimeSumMetricName = "span.self_time.sum"
spanSelfTimeSumMetricName = "span.self_time.sum.us"

transactionBreakdownMetricFlag breakdownMetricsFlags = 1 << iota
)
Expand Down Expand Up @@ -281,7 +281,7 @@ func (m *breakdownMetrics) gather(out *Metrics) {
Value: float64(entry.transaction.count),
},
transactionDurationSumMetricName: {
Value: durationMillis(time.Duration(entry.transaction.duration)),
Value: durationMicros(time.Duration(entry.transaction.duration)),
},
transactionBreakdownCountMetricName: {
Value: float64(entry.breakdownCount),
Expand All @@ -300,7 +300,7 @@ func (m *breakdownMetrics) gather(out *Metrics) {
Value: float64(entry.span.count),
},
spanSelfTimeSumMetricName: {
Value: durationMillis(time.Duration(entry.span.duration)),
Value: durationMicros(time.Duration(entry.span.duration)),
},
},
})
Expand Down
9 changes: 3 additions & 6 deletions breakdown_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,6 @@ import (
"go.elastic.co/apm/transport/transporttest"
)

// TODO(axw) check duration units. Doc says micros, we're currently dealing in millis.
// TODO(axw) check if we need to report metric sets without sample values, as in the doc

func TestBreakdownMetrics_NonSampled(t *testing.T) {
tracer, transport := transporttest.NewRecorderTracer()
defer tracer.Close()
Expand Down Expand Up @@ -494,7 +491,7 @@ func transactionDurationMetrics(txName, txType string, count int, sum time.Durat
Samples: map[string]model.Metric{
"transaction.breakdown.count": {Value: float64(count)},
"transaction.duration.count": {Value: float64(count)},
"transaction.duration.sum": {Value: sum.Seconds() * 1000},
"transaction.duration.sum.us": {Value: sum.Seconds() * 1000000},
},
}
}
Expand All @@ -506,8 +503,8 @@ func spanSelfTimeMetrics(txName, txType, spanType, spanSubtype string, count int
SpanType: spanType,
SpanSubtype: spanSubtype,
Samples: map[string]model.Metric{
"span.self_time.count": {Value: float64(count)},
"span.self_time.sum": {Value: sum.Seconds() * 1000},
"span.self_time.count": {Value: float64(count)},
"span.self_time.sum.us": {Value: sum.Seconds() * 1000000},
},
}
}
Expand Down
8 changes: 4 additions & 4 deletions utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,8 @@ func jitterDuration(d time.Duration, rng *rand.Rand, j float64) time.Duration {
return d + time.Duration(float64(d)*r)
}

func durationMillis(d time.Duration) float64 {
ms := d / time.Millisecond
ns := d % time.Millisecond
return float64(ms) + float64(ns)/1e6
func durationMicros(d time.Duration) float64 {
us := d / time.Microsecond
ns := d % time.Microsecond
return float64(us) + float64(ns)/1e9
}

0 comments on commit ad6b364

Please sign in to comment.