Documentation ¶
Overview ¶
Package provider provides a factory-like abstraction for metrics backends. This package is provided specifically for the needs of the NY Times framework Gizmo. Most normal Go kit users shouldn't need to use it.
Normally, if your microservice needs to support different metrics backends, you can simply do different construction based on a flag. For example,
var latency metrics.Histogram var requests metrics.Counter switch *metricsBackend { case "prometheus": latency = prometheus.NewSummaryVec(...) requests = prometheus.NewCounterVec(...) case "statsd": s := statsd.New(...) t := time.NewTicker(5*time.Second) go s.SendLoop(ctx, t.C, "tcp", "statsd.local:8125") latency = s.NewHistogram(...) requests = s.NewCounter(...) default: log.Fatal("unsupported metrics backend %q", *metricsBackend) }
Index ¶
- type Provider
- func NewDiscardProvider() Provider
- func NewDogstatsdProvider(d *dogstatsd.Dogstatsd, stop func()) Provider
- func NewExpvarProvider() Provider
- func NewGraphiteProvider(g *graphite.Graphite, stop func()) Provider
- func NewInfluxProvider(in *influx.Influx, stop func()) Provider
- func NewPrometheusProvider(namespace, subsystem string) Provider
- func NewStatsdProvider(s *statsd.Statsd, stop func()) Provider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Provider ¶
type Provider interface { NewCounter(name string) metrics.Counter NewGauge(name string) metrics.Gauge NewHistogram(name string, buckets int) metrics.Histogram Stop() }
Provider abstracts over constructors and lifecycle management functions for each supported metrics backend. It should only be used by those who need to swap out implementations dynamically.
This is primarily useful for intermediating frameworks, and is likely unnecessary for most Go kit services. See the package-level doc comment for more typical usage instructions.
func NewDiscardProvider ¶
func NewDiscardProvider() Provider
NewDiscardProvider returns a provider that produces no-op metrics via the discarding backend.
func NewDogstatsdProvider ¶
NewDogstatsdProvider wraps the given Dogstatsd object and stop func and returns a Provider that produces Dogstatsd metrics. A typical stop function would be ticker.Stop from the ticker passed to the SendLoop helper method.
func NewExpvarProvider ¶
func NewExpvarProvider() Provider
NewExpvarProvider returns a Provider that produces expvar metrics.
func NewGraphiteProvider ¶
NewGraphiteProvider wraps the given Graphite object and stop func and returns a Provider that produces Graphite metrics. A typical stop function would be ticker.Stop from the ticker passed to the SendLoop helper method.
func NewInfluxProvider ¶
NewInfluxProvider takes the given Influx object and stop func, and returns a Provider that produces Influx metrics.
func NewPrometheusProvider ¶
NewPrometheusProvider returns a Provider that produces Prometheus metrics. Namespace and subsystem are applied to all produced metrics.
func NewStatsdProvider ¶
NewStatsdProvider wraps the given Statsd object and stop func and returns a Provider that produces Statsd metrics. A typical stop function would be ticker.Stop from the ticker passed to the SendLoop helper method.