micro/metrics/options.go

66 lines
1.6 KiB
Go
Raw Permalink Normal View History

package metrics
var (
// The Prometheus metrics will be made available on this port:
defaultPrometheusListenAddress = ":9000"
// This is the endpoint where the Prometheus metrics will be made available ("/metrics" is the default with Prometheus):
defaultPath = "/metrics"
// defaultPercentiles is the default spread of percentiles/quantiles we maintain for timings / histogram metrics:
defaultPercentiles = []float64{0, 0.5, 0.75, 0.90, 0.95, 0.98, 0.99, 1}
)
// Option powers the configuration for metrics implementations:
type Option func(*Options)
// Options for metrics implementations:
type Options struct {
Address string
DefaultTags Tags
Path string
Percentiles []float64
}
// NewOptions prepares a set of options:
func NewOptions(opt ...Option) Options {
opts := Options{
Address: defaultPrometheusListenAddress,
DefaultTags: make(Tags),
Path: defaultPath,
Percentiles: defaultPercentiles,
}
for _, o := range opt {
o(&opts)
}
return opts
}
// Path used to serve metrics over HTTP:
func Path(value string) Option {
return func(o *Options) {
o.Path = value
}
}
// Address is the listen address to serve metrics on:
func Address(value string) Option {
return func(o *Options) {
o.Address = value
}
}
// DefaultTags will be added to every metric:
func DefaultTags(value Tags) Option {
return func(o *Options) {
o.DefaultTags = value
}
}
// Percentiles defines the desired spread of statistics for histogram / timing metrics:
func Percentiles(value []float64) Option {
return func(o *Options) {
o.Percentiles = value
}
}