aboutsummaryrefslogtreecommitdiffstats
path: root/metrics/exp
diff options
context:
space:
mode:
Diffstat (limited to 'metrics/exp')
-rw-r--r--metrics/exp/exp.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/metrics/exp/exp.go b/metrics/exp/exp.go
index c19d00a94..625ffd4e8 100644
--- a/metrics/exp/exp.go
+++ b/metrics/exp/exp.go
@@ -134,6 +134,17 @@ func (exp *exp) publishTimer(name string, metric metrics.Timer) {
exp.getFloat(name + ".mean-rate").Set(t.RateMean())
}
+func (exp *exp) publishResettingTimer(name string, metric metrics.ResettingTimer) {
+ t := metric.Snapshot()
+ ps := t.Percentiles([]float64{50, 75, 95, 99})
+ exp.getInt(name + ".count").Set(int64(len(t.Values())))
+ exp.getFloat(name + ".mean").Set(t.Mean())
+ exp.getInt(name + ".50-percentile").Set(ps[0])
+ exp.getInt(name + ".75-percentile").Set(ps[1])
+ exp.getInt(name + ".95-percentile").Set(ps[2])
+ exp.getInt(name + ".99-percentile").Set(ps[3])
+}
+
func (exp *exp) syncToExpvar() {
exp.registry.Each(func(name string, i interface{}) {
switch i.(type) {
@@ -149,6 +160,8 @@ func (exp *exp) syncToExpvar() {
exp.publishMeter(name, i.(metrics.Meter))
case metrics.Timer:
exp.publishTimer(name, i.(metrics.Timer))
+ case metrics.ResettingTimer:
+ exp.publishResettingTimer(name, i.(metrics.ResettingTimer))
default:
panic(fmt.Sprintf("unsupported type for '%s': %T", name, i))
}