dogstatsd

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 24, 2019 License: MIT Imports: 14 Imported by: 153

Documentation

Overview

Package dogstatsd provides a DogStatsD backend for package metrics. It's very similar to StatsD, but supports arbitrary tags per-metric, which map to Go kit's label values. So, while label values are no-ops in StatsD, they are supported here. For more details, see the documentation at http://docs.datadoghq.com/guides/dogstatsd/.

This package batches observations and emits them on some schedule to the remote server. This is useful even if you connect to your DogStatsD server over UDP. Emitting one network packet per observation can quickly overwhelm even the fastest internal network.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Counter added in v0.3.0

type Counter struct {
	// contains filtered or unexported fields
}

Counter is a DogStatsD counter. Observations are forwarded to a Dogstatsd object, and aggregated (summed) per timeseries.

func (*Counter) Add added in v0.3.0

func (c *Counter) Add(delta float64)

Add implements metrics.Counter.

func (*Counter) With added in v0.3.0

func (c *Counter) With(labelValues ...string) metrics.Counter

With implements metrics.Counter.

type Dogstatsd added in v0.3.0

type Dogstatsd struct {
	// contains filtered or unexported fields
}

Dogstatsd receives metrics observations and forwards them to a DogStatsD server. Create a Dogstatsd object, use it to create metrics, and pass those metrics as dependencies to the components that will use them.

All metrics are buffered until WriteTo is called. Counters and gauges are aggregated into a single observation per timeseries per write. Timings and histograms are buffered but not aggregated.

To regularly report metrics to an io.Writer, use the WriteLoop helper method. To send to a DogStatsD server, use the SendLoop helper method.

func New added in v0.3.0

func New(prefix string, logger log.Logger, lvs ...string) *Dogstatsd

New returns a Dogstatsd object that may be used to create metrics. Prefix is applied to all created metrics. Callers must ensure that regular calls to WriteTo are performed, either manually or with one of the helper methods.

func (*Dogstatsd) NewCounter added in v0.3.0

func (d *Dogstatsd) NewCounter(name string, sampleRate float64) *Counter

NewCounter returns a counter, sending observations to this Dogstatsd object.

func (*Dogstatsd) NewGauge added in v0.3.0

func (d *Dogstatsd) NewGauge(name string) *Gauge

NewGauge returns a gauge, sending observations to this Dogstatsd object.

func (*Dogstatsd) NewHistogram added in v0.3.0

func (d *Dogstatsd) NewHistogram(name string, sampleRate float64) *Histogram

NewHistogram returns a histogram whose observations are of an unspecified unit, and are forwarded to this Dogstatsd object.

func (*Dogstatsd) NewTiming added in v0.3.0

func (d *Dogstatsd) NewTiming(name string, sampleRate float64) *Timing

NewTiming returns a histogram whose observations are interpreted as millisecond durations, and are forwarded to this Dogstatsd object.

func (*Dogstatsd) SendLoop added in v0.3.0

func (d *Dogstatsd) SendLoop(ctx context.Context, c <-chan time.Time, network, address string)

SendLoop is a helper method that wraps WriteLoop, passing a managed connection to the network and address. Like WriteLoop, this method blocks until ctx is canceled, so clients probably want to start it in its own goroutine. For typical usage, create a time.Ticker and pass its C channel to this method.

func (*Dogstatsd) WriteLoop added in v0.3.0

func (d *Dogstatsd) WriteLoop(ctx context.Context, c <-chan time.Time, w io.Writer)

WriteLoop is a helper method that invokes WriteTo to the passed writer every time the passed channel fires. This method blocks until ctx is canceled, so clients probably want to run it in its own goroutine. For typical usage, create a time.Ticker and pass its C channel to this method.

func (*Dogstatsd) WriteTo added in v0.3.0

func (d *Dogstatsd) WriteTo(w io.Writer) (count int64, err error)

WriteTo flushes the buffered content of the metrics to the writer, in DogStatsD format. WriteTo abides best-effort semantics, so observations are lost if there is a problem with the write. Clients should be sure to call WriteTo regularly, ideally through the WriteLoop or SendLoop helper methods.

type Gauge added in v0.3.0

type Gauge struct {
	// contains filtered or unexported fields
}

Gauge is a DogStatsD gauge. Observations are forwarded to a Dogstatsd object, and aggregated (the last observation selected) per timeseries.

func (*Gauge) Add added in v0.4.0

func (g *Gauge) Add(delta float64)

Add implements metrics.Gauge.

func (*Gauge) Set added in v0.3.0

func (g *Gauge) Set(value float64)

Set implements metrics.Gauge.

func (*Gauge) With added in v0.3.0

func (g *Gauge) With(labelValues ...string) metrics.Gauge

With implements metrics.Gauge.

type Histogram added in v0.3.0

type Histogram struct {
	// contains filtered or unexported fields
}

Histogram is a DogStatsD histrogram. Observations are forwarded to a Dogstatsd object, and collected (but not aggregated) per timeseries.

func (*Histogram) Observe added in v0.3.0

func (h *Histogram) Observe(value float64)

Observe implements metrics.Histogram.

func (*Histogram) With added in v0.3.0

func (h *Histogram) With(labelValues ...string) metrics.Histogram

With implements metrics.Histogram.

type Timing added in v0.3.0

type Timing struct {
	// contains filtered or unexported fields
}

Timing is a DogStatsD timing, or metrics.Histogram. Observations are forwarded to a Dogstatsd object, and collected (but not aggregated) per timeseries.

func (*Timing) Observe added in v0.3.0

func (t *Timing) Observe(value float64)

Observe implements metrics.Histogram. Value is interpreted as milliseconds.

func (*Timing) With added in v0.3.0

func (t *Timing) With(labelValues ...string) metrics.Histogram

With implements metrics.Timing.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL