From 6658e1f4a301b5c5ebcfc7e5160415448f8746ce Mon Sep 17 00:00:00 2001 From: danielqsj Date: Wed, 12 Dec 2018 16:50:32 +0800 Subject: [PATCH] Using histogram metrics instead of summary Kubernetes-commit: 42214c5ac423289a6c87e0f3c1014f652d58bf62 --- util/workqueue/metrics.go | 17 +++++++++++------ util/workqueue/metrics_test.go | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/util/workqueue/metrics.go b/util/workqueue/metrics.go index f13f106e..be23ddd0 100644 --- a/util/workqueue/metrics.go +++ b/util/workqueue/metrics.go @@ -57,6 +57,11 @@ type SummaryMetric interface { Observe(float64) } +// HistogramMetric counts individual observations. +type HistogramMetric interface { + Observe(float64) +} + type noopMetric struct{} func (noopMetric) Inc() {} @@ -73,9 +78,9 @@ type defaultQueueMetrics struct { // total number of adds handled by a workqueue adds CounterMetric // how long an item stays in a workqueue - latency SummaryMetric + latency HistogramMetric // how long processing an item from a workqueue takes - workDuration SummaryMetric + workDuration HistogramMetric addTimes map[t]time.Time processingStartTimes map[t]time.Time @@ -190,8 +195,8 @@ func (m *defaultRetryMetrics) retry() { type MetricsProvider interface { NewDepthMetric(name string) GaugeMetric NewAddsMetric(name string) CounterMetric - NewLatencyMetric(name string) SummaryMetric - NewWorkDurationMetric(name string) SummaryMetric + NewLatencyMetric(name string) HistogramMetric + NewWorkDurationMetric(name string) HistogramMetric NewUnfinishedWorkSecondsMetric(name string) SettableGaugeMetric NewLongestRunningProcessorSecondsMetric(name string) SettableGaugeMetric NewRetriesMetric(name string) CounterMetric @@ -214,11 +219,11 @@ func (_ noopMetricsProvider) NewAddsMetric(name string) CounterMetric { return noopMetric{} } -func (_ noopMetricsProvider) NewLatencyMetric(name string) SummaryMetric { +func (_ noopMetricsProvider) NewLatencyMetric(name string) HistogramMetric { return noopMetric{} } -func (_ noopMetricsProvider) NewWorkDurationMetric(name string) SummaryMetric { +func (_ noopMetricsProvider) NewWorkDurationMetric(name string) HistogramMetric { return noopMetric{} } diff --git a/util/workqueue/metrics_test.go b/util/workqueue/metrics_test.go index fa299009..ceb8f4c9 100644 --- a/util/workqueue/metrics_test.go +++ b/util/workqueue/metrics_test.go @@ -155,11 +155,11 @@ func (m *testMetricsProvider) NewAddsMetric(name string) CounterMetric { return &m.adds } -func (m *testMetricsProvider) NewLatencyMetric(name string) SummaryMetric { +func (m *testMetricsProvider) NewLatencyMetric(name string) HistogramMetric { return &m.latency } -func (m *testMetricsProvider) NewWorkDurationMetric(name string) SummaryMetric { +func (m *testMetricsProvider) NewWorkDurationMetric(name string) HistogramMetric { return &m.duration }