diff --git a/common/metrics/defs.go b/common/metrics/defs.go index f38c285deaf..f4aa3c5dccd 100644 --- a/common/metrics/defs.go +++ b/common/metrics/defs.go @@ -40,6 +40,7 @@ type ( metricType MetricType // metric type metricName MetricName // metric name unit MetricUnit + opts []Option } // ServiceIdx is an index that uniquely identifies the service @@ -84,22 +85,26 @@ func (md metricDefinition) GetMetricUnit() MetricUnit { return md.unit } -func NewTimerDef(name string) metricDefinition { - return metricDefinition{metricName: MetricName(name), metricType: Timer, unit: Milliseconds} +func (md metricDefinition) GetOptions() []Option { + return md.opts } -func NewBytesHistogramDef(name string) metricDefinition { - return metricDefinition{metricName: MetricName(name), metricType: Histogram, unit: Bytes} +func NewTimerDef(name string, opts ...Option) metricDefinition { + return metricDefinition{metricName: MetricName(name), metricType: Timer, unit: Milliseconds, opts: opts} } -func NewDimensionlessHistogramDef(name string) metricDefinition { - return metricDefinition{metricName: MetricName(name), metricType: Histogram, unit: Dimensionless} +func NewBytesHistogramDef(name string, opts ...Option) metricDefinition { + return metricDefinition{metricName: MetricName(name), metricType: Histogram, unit: Bytes, opts: opts} } -func NewCounterDef(name string) metricDefinition { - return metricDefinition{metricName: MetricName(name), metricType: Counter} +func NewDimensionlessHistogramDef(name string, opts ...Option) metricDefinition { + return metricDefinition{metricName: MetricName(name), metricType: Histogram, unit: Dimensionless, opts: opts} } -func NewGaugeDef(name string) metricDefinition { - return metricDefinition{metricName: MetricName(name), metricType: Gauge} +func NewCounterDef(name string, opts ...Option) metricDefinition { + return metricDefinition{metricName: MetricName(name), metricType: Counter, opts: opts} +} + +func NewGaugeDef(name string, opts ...Option) metricDefinition { + return metricDefinition{metricName: MetricName(name), metricType: Gauge, opts: opts} } diff --git a/common/metrics/help_text.go b/common/metrics/help_text.go index 2139368cbaf..2b48fc63696 100644 --- a/common/metrics/help_text.go +++ b/common/metrics/help_text.go @@ -27,15 +27,13 @@ package metrics // WithHelpText returns a HelpTextOption that sets the help text of a metric. // Metrics handlers are not required to use this option. func WithHelpText(helpText string) HelpTextOption { - return HelpTextOption{helpText: helpText} + return HelpTextOption(helpText) } // HelpTextOption stores the help text provided to the option. -type HelpTextOption struct { - helpText string -} +type HelpTextOption string // apply sets the params.optionalHelpText field. func (h HelpTextOption) apply(p *params) { - p.optionalHelpText = &h.helpText + p.optionalHelpText = (*string)(&h) }