metrics

package
v0.23.8 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2018 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package metrics contains a type for aggregating and propagating metrics to various services based on configuration.

Index

Constants

View Source
const (
	TypeHTTPServer = "http_server"
	TypePrometheus = "prometheus"
	TypeStatsd     = "statsd"
)

String constants representing each metric type.

Variables

View Source
var (
	ErrInvalidMetricOutputType = errors.New("invalid metrics output type")
)

Errors for the metrics package.

View Source
var (
	ErrTimedOut = errors.New("timed out")
)

Errors for the HTTP type.

Functions

func Descriptions

func Descriptions() string

Descriptions returns a formatted string of collated descriptions of each type.

func OptSetLogger

func OptSetLogger(log log.Modular) func(Type)

OptSetLogger sets the logging output to be used by the metrics clients.

func SanitiseConfig

func SanitiseConfig(conf Config) (interface{}, error)

SanitiseConfig returns a sanitised version of the Config, meaning sections that aren't relevant to behaviour are removed.

Types

type Config

type Config struct {
	Type       string       `json:"type" yaml:"type"`
	Prefix     string       `json:"prefix" yaml:"prefix"`
	HTTP       struct{}     `json:"http_server" yaml:"http_server"`
	Prometheus struct{}     `json:"prometheus" yaml:"prometheus"`
	Statsd     StatsdConfig `json:"statsd" yaml:"statsd"`
}

Config is the all encompassing configuration struct for all metric output types.

func NewConfig

func NewConfig() Config

NewConfig returns a configuration struct fully populated with default values.

type DudStat

type DudStat struct{}

DudStat implements the Stat interface but doesn't actual do anything.

func (DudStat) Decr

func (d DudStat) Decr(count int64) error

Decr does nothing.

func (DudStat) Gauge

func (d DudStat) Gauge(value int64) error

Gauge does nothing.

func (DudStat) Incr

func (d DudStat) Incr(count int64) error

Incr does nothing.

func (DudStat) Timing

func (d DudStat) Timing(delta int64) error

Timing does nothing.

type DudType

type DudType struct {
	ID int
}

DudType implements the Type interface but doesn't actual do anything.

func Noop

func Noop() DudType

Noop returns a DudType for discarding metrics.

func (DudType) Close

func (d DudType) Close() error

Close does nothing.

func (DudType) Decr

func (d DudType) Decr(path string, count int64) error

Decr does nothing.

func (DudType) Gauge

func (d DudType) Gauge(path string, value int64) error

Gauge does nothing.

func (DudType) GetCounter

func (d DudType) GetCounter(path ...string) StatCounter

GetCounter returns a DudStat.

func (DudType) GetGauge

func (d DudType) GetGauge(path ...string) StatGauge

GetGauge returns a DudStat.

func (DudType) GetTimer

func (d DudType) GetTimer(path ...string) StatTimer

GetTimer returns a DudStat.

func (DudType) Incr

func (d DudType) Incr(path string, count int64) error

Incr does nothing.

func (DudType) SetLogger

func (d DudType) SetLogger(log log.Modular)

SetLogger does nothing.

func (DudType) Timing

func (d DudType) Timing(path string, delta int64) error

Timing does nothing.

type Flat

type Flat interface {
	// Incr increments a metric by an amount.
	Incr(path string, count int64) error

	// Decr decrements a metric by an amount.
	Decr(path string, count int64) error

	// Timing sets a timing metric.
	Timing(path string, delta int64) error

	// Gauge sets a gauge metric.
	Gauge(path string, value int64) error

	// Close stops aggregating stats and cleans up resources.
	Close() error
}

Flat is an interface for setting metrics via flat paths.

type FlatStat

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

FlatStat is a representation of a single metric stat. Interactions with this stat are thread safe.

func (*FlatStat) Decr

func (f *FlatStat) Decr(count int64) error

Decr decrements a metric by an amount.

func (*FlatStat) Gauge

func (f *FlatStat) Gauge(value int64) error

Gauge sets a gauge metric.

func (*FlatStat) Incr

func (f *FlatStat) Incr(count int64) error

Incr increments a metric by an amount.

func (*FlatStat) Timing

func (f *FlatStat) Timing(delta int64) error

Timing sets a timing metric.

type HTTP

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

HTTP is an object with capability to hold internal stats as a JSON endpoint.

func (*HTTP) Close

func (h *HTTP) Close() error

Close stops the HTTP object from aggregating metrics and cleans up resources.

func (*HTTP) Decr

func (h *HTTP) Decr(stat string, value int64) error

Decr decrements a stat by a value.

func (*HTTP) Gauge

func (h *HTTP) Gauge(stat string, value int64) error

Gauge sets a stat as a gauge value.

func (*HTTP) GetCounter

func (h *HTTP) GetCounter(path ...string) StatCounter

GetCounter returns a stat counter object for a path.

func (*HTTP) GetGauge

func (h *HTTP) GetGauge(path ...string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*HTTP) GetTimer

func (h *HTTP) GetTimer(path ...string) StatTimer

GetTimer returns a stat timer object for a path.

func (*HTTP) HandlerFunc

func (h *HTTP) HandlerFunc() http.HandlerFunc

HandlerFunc returns an http.HandlerFunc for accessing metrics as a JSON blob.

func (*HTTP) Incr

func (h *HTTP) Incr(stat string, value int64) error

Incr increments a stat by a value.

func (*HTTP) SetLogger

func (h *HTTP) SetLogger(log log.Modular)

SetLogger does nothing.

func (*HTTP) Timing

func (h *HTTP) Timing(stat string, delta int64) error

Timing sets a stat representing a duration.

type Local

type Local struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Local is a metrics aggregator that stores metrics locally.

func NewLocal

func NewLocal() *Local

NewLocal creates and returns a new Local aggregator.

func (*Local) Close

func (l *Local) Close() error

Close stops the Local object from aggregating metrics and cleans up resources.

func (*Local) Decr

func (l *Local) Decr(stat string, value int64) error

Decr decrements a stat by a value.

func (*Local) Gauge

func (l *Local) Gauge(stat string, value int64) error

Gauge sets a stat as a gauge value.

func (*Local) GetCounter

func (l *Local) GetCounter(path ...string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Local) GetCounters

func (l *Local) GetCounters() map[string]int64

GetCounters returns a map of metric paths to counters.

func (*Local) GetGauge

func (l *Local) GetGauge(path ...string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Local) GetTimer

func (l *Local) GetTimer(path ...string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Local) GetTimings

func (l *Local) GetTimings() map[string]int64

GetTimings returns a map of metric paths to timers.

func (*Local) Incr

func (l *Local) Incr(stat string, value int64) error

Incr increments a stat by a value.

func (*Local) SetLogger

func (l *Local) SetLogger(log log.Modular)

SetLogger does nothing.

func (*Local) Timing

func (l *Local) Timing(stat string, delta int64) error

Timing sets a stat representing a duration.

type LocalStat

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

LocalStat is a representation of a single metric stat. Interactions with this stat are thread safe.

func (*LocalStat) Decr

func (l *LocalStat) Decr(count int64) error

Decr decrements a metric by an amount.

func (*LocalStat) Gauge

func (l *LocalStat) Gauge(value int64) error

Gauge sets a gauge metric.

func (*LocalStat) Incr

func (l *LocalStat) Incr(count int64) error

Incr increments a metric by an amount.

func (*LocalStat) Timing

func (l *LocalStat) Timing(delta int64) error

Timing sets a timing metric.

type PromGauge

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

PromGauge is a representation of a single metric stat. Interactions with this stat are thread safe.

func (*PromGauge) Decr

func (p *PromGauge) Decr(count int64) error

Decr decrements a metric by an amount.

func (*PromGauge) Gauge

func (p *PromGauge) Gauge(value int64) error

Gauge sets a gauge metric.

func (*PromGauge) Incr

func (p *PromGauge) Incr(count int64) error

Incr increments a metric by an amount.

type PromTiming

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

PromTiming is a representation of a single metric stat. Interactions with this stat are thread safe.

func (*PromTiming) Timing

func (p *PromTiming) Timing(val int64) error

Timing sets a timing metric.

type Prometheus

type Prometheus struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Prometheus is a stats object with capability to hold internal stats as a JSON endpoint.

func (*Prometheus) Close

func (p *Prometheus) Close() error

Close stops the Prometheus object from aggregating metrics and cleans up resources.

func (*Prometheus) Decr

func (p *Prometheus) Decr(stat string, value int64) error

Decr decrements a stat by a value.

func (*Prometheus) Gauge

func (p *Prometheus) Gauge(stat string, value int64) error

Gauge sets a stat as a gauge value.

func (*Prometheus) GetCounter

func (p *Prometheus) GetCounter(path ...string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Prometheus) GetGauge

func (p *Prometheus) GetGauge(path ...string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Prometheus) GetTimer

func (p *Prometheus) GetTimer(path ...string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Prometheus) HandlerFunc

func (p *Prometheus) HandlerFunc() http.HandlerFunc

HandlerFunc returns an http.HandlerFunc for scraping metrics.

func (*Prometheus) Incr

func (p *Prometheus) Incr(stat string, value int64) error

Incr increments a stat by a value.

func (*Prometheus) SetLogger

func (p *Prometheus) SetLogger(log log.Modular)

SetLogger does nothing.

func (*Prometheus) Timing

func (p *Prometheus) Timing(stat string, delta int64) error

Timing sets a stat representing a duration.

type PrometheusConfig

type PrometheusConfig struct {
}

PrometheusConfig is config for the Prometheus metrics type.

func NewPrometheusConfig

func NewPrometheusConfig() PrometheusConfig

NewPrometheusConfig creates an PrometheusConfig struct with default values.

type StatCounter

type StatCounter interface {
	// Incr increments a metric by an amount.
	Incr(count int64) error

	// Decr decrements a metric by an amount.
	Decr(count int64) error
}

StatCounter is a representation of a single counter metric stat. Interactions with this stat are thread safe.

type StatGauge

type StatGauge interface {
	// Gauge sets a gauge metric.
	Gauge(value int64) error
}

StatGauge is a representation of a single gauge metric stat. Interactions with this stat are thread safe.

type StatTimer

type StatTimer interface {
	// Timing sets a timing metric.
	Timing(delta int64) error
}

StatTimer is a representation of a single timer metric stat. Interactions with this stat are thread safe.

type Statsd

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

Statsd is a stats object with capability to hold internal stats as a JSON endpoint.

func (*Statsd) Close

func (h *Statsd) Close() error

Close stops the Statsd object from aggregating metrics and cleans up resources.

func (*Statsd) Decr

func (h *Statsd) Decr(stat string, value int64) error

Decr decrements a stat by a value.

func (*Statsd) Gauge

func (h *Statsd) Gauge(stat string, value int64) error

Gauge sets a stat as a gauge value.

func (*Statsd) GetCounter

func (h *Statsd) GetCounter(path ...string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Statsd) GetGauge

func (h *Statsd) GetGauge(path ...string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Statsd) GetTimer

func (h *Statsd) GetTimer(path ...string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Statsd) Incr

func (h *Statsd) Incr(stat string, value int64) error

Incr increments a stat by a value.

func (*Statsd) SetLogger

func (h *Statsd) SetLogger(log log.Modular)

SetLogger sets the logger used to print connection errors.

func (*Statsd) Timing

func (h *Statsd) Timing(stat string, delta int64) error

Timing sets a stat representing a duration.

type StatsdConfig

type StatsdConfig struct {
	Address       string `json:"address" yaml:"address"`
	FlushPeriod   string `json:"flush_period" yaml:"flush_period"`
	MaxPacketSize int    `json:"max_packet_size" yaml:"max_packet_size"`
	Network       string `json:"network" yaml:"network"`
}

StatsdConfig is config for the Statsd metrics type.

func NewStatsdConfig

func NewStatsdConfig() StatsdConfig

NewStatsdConfig creates an StatsdConfig struct with default values.

type StatsdStat

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

StatsdStat is a representation of a single metric stat. Interactions with this stat are thread safe.

func (*StatsdStat) Decr

func (s *StatsdStat) Decr(count int64) error

Decr decrements a metric by an amount.

func (*StatsdStat) Gauge

func (s *StatsdStat) Gauge(value int64) error

Gauge sets a gauge metric.

func (*StatsdStat) Incr

func (s *StatsdStat) Incr(count int64) error

Incr increments a metric by an amount.

func (*StatsdStat) Timing

func (s *StatsdStat) Timing(delta int64) error

Timing sets a timing metric.

type Type

type Type interface {
	// GetCounter returns an editable counter stat for a given path.
	GetCounter(path ...string) StatCounter

	// GetTimer returns an editable timer stat for a given path.
	GetTimer(path ...string) StatTimer

	// GetGauge returns an editable gauge stat for a given path.
	GetGauge(path ...string) StatGauge

	// SetLogger sets the logging mechanism of the metrics type.
	SetLogger(log log.Modular)

	Flat
}

Type is an interface for metrics aggregation.

func Combine

func Combine(t1, t2 Type) Type

Combine returns a Type implementation that feeds metrics into two underlying Type implementations.

func Namespaced

func Namespaced(t Type, ns string) Type

Namespaced embeds an existing metrics aggregator under a new namespace. The prefix of the embedded aggregator is still the ultimate prefix of metrics.

func New

func New(conf Config, opts ...func(Type)) (Type, error)

New creates a metric output type based on a configuration.

func NewHTTP

func NewHTTP(config Config, opts ...func(Type)) (Type, error)

NewHTTP creates and returns a new HTTP object.

func NewPrometheus

func NewPrometheus(config Config, opts ...func(Type)) (Type, error)

NewPrometheus creates and returns a new Prometheus object.

func NewStatsd

func NewStatsd(config Config, opts ...func(Type)) (Type, error)

NewStatsd creates and returns a new Statsd object.

func WrapFlat

func WrapFlat(f Flat) Type

WrapFlat creates a Type around a Flat implementation.

type WithHandlerFunc

type WithHandlerFunc interface {
	HandlerFunc() http.HandlerFunc
}

WithHandlerFunc is an interface for metrics types that can expose their metrics through an HTTP HandlerFunc endpoint. If a Type can be cast into WithHandlerFunc then you should register its endpoint to the an HTTP server.

type WrappedFlat

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

WrappedFlat implements the entire Type interface around a Flat type.

func (*WrappedFlat) Close

func (h *WrappedFlat) Close() error

Close stops the WrappedFlat object from aggregating metrics and cleans up resources.

func (*WrappedFlat) Decr

func (h *WrappedFlat) Decr(stat string, value int64) error

Decr decrements a stat by a value.

func (*WrappedFlat) Gauge

func (h *WrappedFlat) Gauge(stat string, value int64) error

Gauge sets a stat as a gauge value.

func (*WrappedFlat) GetCounter

func (h *WrappedFlat) GetCounter(path ...string) StatCounter

GetCounter returns a stat counter object for a path.

func (*WrappedFlat) GetGauge

func (h *WrappedFlat) GetGauge(path ...string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*WrappedFlat) GetTimer

func (h *WrappedFlat) GetTimer(path ...string) StatTimer

GetTimer returns a stat timer object for a path.

func (*WrappedFlat) Incr

func (h *WrappedFlat) Incr(stat string, value int64) error

Incr increments a stat by a value.

func (*WrappedFlat) SetLogger

func (h *WrappedFlat) SetLogger(log log.Modular)

SetLogger does nothing.

func (*WrappedFlat) Timing

func (h *WrappedFlat) Timing(stat string, delta int64) error

Timing sets a stat representing a duration.

Jump to

Keyboard shortcuts

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