From 8c4fcaa1db2129a827106054b2d16ad391c9ab90 Mon Sep 17 00:00:00 2001 From: wenquan xing Date: Mon, 1 Feb 2021 15:50:50 -0800 Subject: [PATCH] Adjust number of histogram buckets --- common/metrics/defs.go | 2 +- common/service/config/metrics.go | 41 ++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/common/metrics/defs.go b/common/metrics/defs.go index 6e2b18f949b..5131991af57 100644 --- a/common/metrics/defs.go +++ b/common/metrics/defs.go @@ -2241,7 +2241,7 @@ var MetricDefs = map[ServiceIdx]map[int]metricDefinition{ ActivityInfoSize: {metricName: "activity_info_size", metricType: Timer}, TimerInfoSize: {metricName: "timer_info_size", metricType: Timer}, ChildInfoSize: {metricName: "child_info_size", metricType: Timer}, - SignalInfoSize: {metricName: "signal_info", metricType: Timer}, + SignalInfoSize: {metricName: "signal_info_size", metricType: Timer}, BufferedEventsSize: {metricName: "buffered_events_size", metricType: Timer}, ActivityInfoCount: {metricName: "activity_info_count", metricType: Timer}, TimerInfoCount: {metricName: "timer_info_count", metricType: Timer}, diff --git a/common/service/config/metrics.go b/common/service/config/metrics.go index 39a52ca8bad..daebdc14c76 100644 --- a/common/service/config/metrics.go +++ b/common/service/config/metrics.go @@ -39,6 +39,10 @@ import ( statsdreporter "go.temporal.io/server/common/metrics/tally/statsd" ) +const ( + ms = float64(time.Millisecond / time.Second) +) + // tally sanitizer options that satisfy both Prometheus and M3 restrictions. // This will rename metrics at the tally emission level, so metrics name we // use maybe different from what gets emitted. In the current implementation @@ -64,6 +68,28 @@ var ( }, ReplacementCharacter: tally.DefaultReplacementCharacter, } + + defaultHistogramBuckets = tally.ValueBuckets([]float64{ + 1 * ms, + 2 * ms, + 5 * ms, + 10 * ms, + 20 * ms, + 50 * ms, + 100 * ms, + 200 * ms, + 500 * ms, + 1000 * ms, + 2000 * ms, + 5000 * ms, + 10000 * ms, + 20000 * ms, + 50000 * ms, + 100000 * ms, + 200000 * ms, + 500000 * ms, + 1000000 * ms, + }) ) // NewScope builds a new tally scope @@ -96,7 +122,11 @@ func (c *Metrics) NewScope(logger log.Logger, customReporter tally.BaseStatsRepo } func (c *Metrics) newCustomReporterScope(logger log.Logger, customReporter tally.BaseStatsReporter) tally.Scope { - options := tally.ScopeOptions{Tags: c.Tags, Prefix: c.Prefix} + options := tally.ScopeOptions{ + Tags: c.Tags, + Prefix: c.Prefix, + DefaultBuckets: defaultHistogramBuckets, + } switch reporter := customReporter.(type) { case tally.StatsReporter: { @@ -129,6 +159,7 @@ func (c *Metrics) newM3Scope(logger log.Logger) tally.Scope { Tags: c.Tags, CachedReporter: reporter, Prefix: c.Prefix, + DefaultBuckets: defaultHistogramBuckets, } scope, _ := tally.NewRootScope(scopeOpts, time.Second) return scope @@ -149,9 +180,10 @@ func (c *Metrics) newStatsdScope(logger log.Logger) tally.Scope { // Therefore, we implement Tally interface to have a statsd reporter that can support tagging reporter := statsdreporter.NewReporter(statter, tallystatsdreporter.Options{}) scopeOpts := tally.ScopeOptions{ - Tags: c.Tags, - Reporter: reporter, - Prefix: c.Prefix, + Tags: c.Tags, + Reporter: reporter, + Prefix: c.Prefix, + DefaultBuckets: defaultHistogramBuckets, } scope, _ := tally.NewRootScope(scopeOpts, time.Second) return scope @@ -177,6 +209,7 @@ func (c *Metrics) newPrometheusScope(logger log.Logger) tally.Scope { Separator: prometheus.DefaultSeparator, SanitizeOptions: &sanitizeOptions, Prefix: c.Prefix, + DefaultBuckets: defaultHistogramBuckets, } scope, _ := tally.NewRootScope(scopeOpts, time.Second) return scope