Moved to google.golang.org/genproto/googleapis/api/annotations

Fixes #52
This commit is contained in:
Valerio Gheri
2017-03-31 18:01:58 +02:00
parent 024c5a4e4e
commit c40779224f
2037 changed files with 831329 additions and 1854 deletions

View File

@@ -0,0 +1,24 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/discard"
)
type discardProvider struct{}
// NewDiscardProvider returns a provider that produces no-op metrics via the
// discarding backend.
func NewDiscardProvider() Provider { return discardProvider{} }
// NewCounter implements Provider.
func (discardProvider) NewCounter(string) metrics.Counter { return discard.NewCounter() }
// NewGauge implements Provider.
func (discardProvider) NewGauge(string) metrics.Gauge { return discard.NewGauge() }
// NewHistogram implements Provider.
func (discardProvider) NewHistogram(string, int) metrics.Histogram { return discard.NewHistogram() }
// Stop implements Provider.
func (discardProvider) Stop() {}

View File

@@ -0,0 +1,43 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/dogstatsd"
)
type dogstatsdProvider struct {
d *dogstatsd.Dogstatsd
stop func()
}
// 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 NewDogstatsdProvider(d *dogstatsd.Dogstatsd, stop func()) Provider {
return &dogstatsdProvider{
d: d,
stop: stop,
}
}
// NewCounter implements Provider, returning a new Dogstatsd Counter with a
// sample rate of 1.0.
func (p *dogstatsdProvider) NewCounter(name string) metrics.Counter {
return p.d.NewCounter(name, 1.0)
}
// NewGauge implements Provider.
func (p *dogstatsdProvider) NewGauge(name string) metrics.Gauge {
return p.d.NewGauge(name)
}
// NewHistogram implements Provider, returning a new Dogstatsd Histogram (note:
// not a Timing) with a sample rate of 1.0. The buckets argument is ignored.
func (p *dogstatsdProvider) NewHistogram(name string, _ int) metrics.Histogram {
return p.d.NewHistogram(name, 1.0)
}
// Stop implements Provider, invoking the stop function passed at construction.
func (p *dogstatsdProvider) Stop() {
p.stop()
}

View File

@@ -0,0 +1,31 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/expvar"
)
type expvarProvider struct{}
// NewExpvarProvider returns a Provider that produces expvar metrics.
func NewExpvarProvider() Provider {
return expvarProvider{}
}
// NewCounter implements Provider.
func (p expvarProvider) NewCounter(name string) metrics.Counter {
return expvar.NewCounter(name)
}
// NewGauge implements Provider.
func (p expvarProvider) NewGauge(name string) metrics.Gauge {
return expvar.NewGauge(name)
}
// NewHistogram implements Provider.
func (p expvarProvider) NewHistogram(name string, buckets int) metrics.Histogram {
return expvar.NewHistogram(name, buckets)
}
// Stop implements Provider, but is a no-op.
func (p expvarProvider) Stop() {}

View File

@@ -0,0 +1,41 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/graphite"
)
type graphiteProvider struct {
g *graphite.Graphite
stop func()
}
// 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 NewGraphiteProvider(g *graphite.Graphite, stop func()) Provider {
return &graphiteProvider{
g: g,
stop: stop,
}
}
// NewCounter implements Provider.
func (p *graphiteProvider) NewCounter(name string) metrics.Counter {
return p.g.NewCounter(name)
}
// NewGauge implements Provider.
func (p *graphiteProvider) NewGauge(name string) metrics.Gauge {
return p.g.NewGauge(name)
}
// NewHistogram implements Provider.
func (p *graphiteProvider) NewHistogram(name string, buckets int) metrics.Histogram {
return p.g.NewHistogram(name, buckets)
}
// Stop implements Provider, invoking the stop function passed at construction.
func (p *graphiteProvider) Stop() {
p.stop()
}

View File

@@ -0,0 +1,40 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/influx"
)
type influxProvider struct {
in *influx.Influx
stop func()
}
// NewInfluxProvider takes the given Influx object and stop func, and returns
// a Provider that produces Influx metrics.
func NewInfluxProvider(in *influx.Influx, stop func()) Provider {
return &influxProvider{
in: in,
stop: stop,
}
}
// NewCounter implements Provider. Per-metric tags are not supported.
func (p *influxProvider) NewCounter(name string) metrics.Counter {
return p.in.NewCounter(name)
}
// NewGauge implements Provider. Per-metric tags are not supported.
func (p *influxProvider) NewGauge(name string) metrics.Gauge {
return p.in.NewGauge(name)
}
// NewHistogram implements Provider. Per-metric tags are not supported.
func (p *influxProvider) NewHistogram(name string, buckets int) metrics.Histogram {
return p.in.NewHistogram(name)
}
// Stop implements Provider, invoking the stop function passed at construction.
func (p *influxProvider) Stop() {
p.stop()
}

View File

@@ -0,0 +1,63 @@
package provider
import (
stdprometheus "github.com/prometheus/client_golang/prometheus"
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/prometheus"
)
type prometheusProvider struct {
namespace string
subsystem string
}
// NewPrometheusProvider returns a Provider that produces Prometheus metrics.
// Namespace and subsystem are applied to all produced metrics.
func NewPrometheusProvider(namespace, subsystem string) Provider {
return &prometheusProvider{
namespace: namespace,
subsystem: subsystem,
}
}
// NewCounter implements Provider via prometheus.NewCounterFrom, i.e. the
// counter is registered. The metric's namespace and subsystem are taken from
// the Provider. Help is set to the name of the metric, and no const label names
// are set.
func (p *prometheusProvider) NewCounter(name string) metrics.Counter {
return prometheus.NewCounterFrom(stdprometheus.CounterOpts{
Namespace: p.namespace,
Subsystem: p.subsystem,
Name: name,
Help: name,
}, []string{})
}
// NewGauge implements Provider via prometheus.NewGaugeFrom, i.e. the gauge is
// registered. The metric's namespace and subsystem are taken from the Provider.
// Help is set to the name of the metric, and no const label names are set.
func (p *prometheusProvider) NewGauge(name string) metrics.Gauge {
return prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: p.namespace,
Subsystem: p.subsystem,
Name: name,
Help: name,
}, []string{})
}
// NewGauge implements Provider via prometheus.NewSummaryFrom, i.e. the summary
// is registered. The metric's namespace and subsystem are taken from the
// Provider. Help is set to the name of the metric, and no const label names are
// set. Buckets are ignored.
func (p *prometheusProvider) NewHistogram(name string, _ int) metrics.Histogram {
return prometheus.NewSummaryFrom(stdprometheus.SummaryOpts{
Namespace: p.namespace,
Subsystem: p.subsystem,
Name: name,
Help: name,
}, []string{})
}
// Stop implements Provider, but is a no-op.
func (p *prometheusProvider) Stop() {}

View File

@@ -0,0 +1,42 @@
// 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(t.C, "tcp", "statsd.local:8125")
// latency = s.NewHistogram(...)
// requests = s.NewCounter(...)
// default:
// log.Fatal("unsupported metrics backend %q", *metricsBackend)
// }
//
package provider
import (
"github.com/go-kit/kit/metrics"
)
// 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.
type Provider interface {
NewCounter(name string) metrics.Counter
NewGauge(name string) metrics.Gauge
NewHistogram(name string, buckets int) metrics.Histogram
Stop()
}

View File

@@ -0,0 +1,43 @@
package provider
import (
"github.com/go-kit/kit/metrics"
"github.com/go-kit/kit/metrics/statsd"
)
type statsdProvider struct {
s *statsd.Statsd
stop func()
}
// 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.
func NewStatsdProvider(s *statsd.Statsd, stop func()) Provider {
return &statsdProvider{
s: s,
stop: stop,
}
}
// NewCounter implements Provider.
func (p *statsdProvider) NewCounter(name string) metrics.Counter {
return p.s.NewCounter(name, 1.0)
}
// NewGauge implements Provider.
func (p *statsdProvider) NewGauge(name string) metrics.Gauge {
return p.s.NewGauge(name)
}
// NewHistogram implements Provider, returning a StatsD Timing that accepts
// observations in milliseconds. The sample rate is fixed at 1.0. The bucket
// parameter is ignored.
func (p *statsdProvider) NewHistogram(name string, _ int) metrics.Histogram {
return p.s.NewTiming(name, 1.0)
}
// Stop implements Provider, invoking the stop function passed at construction.
func (p *statsdProvider) Stop() {
p.stop()
}