package metrics

import "github.com/go-kit/kit/metrics"

Package metrics provides an extensible framework to instrument your application. All metrics are safe for concurrent use. Considerable design influence has been taken from https://github.com/codahale/metrics and https://prometheus.io.

Index

Functions

func PrintDistribution

func PrintDistribution(w io.Writer, h Histogram)

PrintDistribution writes a human-readable graph of the distribution to the passed writer.

Types

type Bucket

type Bucket struct {
	From  int64
	To    int64
	Count int64
}

Bucket is a range in a histogram which aggregates observations.

type Counter

type Counter interface {
	Name() string
	With(Field) Counter
	Add(delta uint64)
}

Counter is a monotonically-increasing, unsigned, 64-bit integer used to capture the number of times an event has occurred. By tracking the deltas between measurements of a counter over intervals of time, an aggregation layer can derive rates, acceleration, etc.

func NewMultiCounter

func NewMultiCounter(name string, counters ...Counter) Counter

NewMultiCounter returns a wrapper around multiple Counters.

type Field

type Field struct {
	Key   string
	Value string
}

Field is a key/value pair associated with an observation for a specific metric. Fields may be ignored by implementations.

type Gauge

type Gauge interface {
	Name() string
	With(Field) Gauge
	Set(value float64)
	Add(delta float64)
	Get() float64
}

Gauge captures instantaneous measurements of something using signed, 64-bit floats. The value does not need to be monotonic.

func NewMultiGauge

func NewMultiGauge(name string, gauges ...Gauge) Gauge

NewMultiGauge returns a wrapper around multiple Gauges.

type Histogram

type Histogram interface {
	Name() string
	With(Field) Histogram
	Observe(value int64)
	Distribution() ([]Bucket, []Quantile)
}

Histogram tracks the distribution of a stream of values (e.g. the number of milliseconds it takes to handle requests). Implementations may choose to add gauges for values at meaningful quantiles.

func NewMultiHistogram

func NewMultiHistogram(name string, histograms ...Histogram) Histogram

NewMultiHistogram returns a wrapper around multiple Histograms.

func NewScaledHistogram

func NewScaledHistogram(h Histogram, scale int64) Histogram

NewScaledHistogram returns a Histogram whose observed values are downscaled (divided) by scale.

type Quantile

type Quantile struct {
	Quantile int // 0..100
	Value    int64
}

Quantile is a pair of quantile (0..100) and its observed maximum value.

type TimeHistogram

type TimeHistogram interface {
	With(Field) TimeHistogram
	Observe(time.Duration)
}

TimeHistogram is a convenience wrapper for a Histogram of time.Durations.

func NewTimeHistogram

func NewTimeHistogram(unit time.Duration, h Histogram) TimeHistogram

NewTimeHistogram returns a TimeHistogram wrapper around the passed Histogram, in units of unit.

Source Files

metrics.go multi.go print.go scaled_histogram.go time_histogram.go

Directories

PathSynopsis
metrics/discardPackage discard implements a backend for package metrics that succeeds without doing anything.
metrics/dogstatsdPackage dogstatsd implements a DogStatsD backend for package metrics.
metrics/expvarPackage expvar implements an expvar backend for package metrics.
metrics/graphitePackage graphite implements a Graphite backend for package metrics.
metrics/influxdbPackage influxdb implements a InfluxDB backend for package metrics.
metrics/prometheusPackage prometheus implements a Prometheus backend for package metrics.
metrics/provider
metrics/statsdPackage statsd implements a statsd backend for package metrics.
metrics/teststatPackage teststat contains helper functions for statistical testing of metrics implementations.
Version
v0.1.0
Published
Jun 7, 2016
Platform
js/wasm
Imports
4 packages
Last checked
3 days ago

Tools for package owners.