Documentation ¶
Overview ¶
Package metrics contains a type for aggregating and propagating metrics to various services based on configuration.
Index ¶
- Constants
- Variables
- func Descriptions() string
- func OptSetLogger(log log.Modular) func(Type)
- func SanitiseConfig(conf Config) (interface{}, error)
- type Config
- type DudStat
- type DudType
- func (d DudType) Close() error
- func (d DudType) GetCounter(path string) StatCounter
- func (d DudType) GetCounterVec(path string, n []string) StatCounterVec
- func (d DudType) GetGauge(path string) StatGauge
- func (d DudType) GetGaugeVec(path string, n []string) StatGaugeVec
- func (d DudType) GetTimer(path string) StatTimer
- func (d DudType) GetTimerVec(path string, n []string) StatTimerVec
- func (d DudType) SetLogger(log log.Modular)
- type Flat
- type HTTP
- func (h *HTTP) Close() error
- func (h *HTTP) GetCounter(path string) StatCounter
- func (h *HTTP) GetCounterVec(path string, n []string) StatCounterVec
- func (h *HTTP) GetGauge(path string) StatGauge
- func (h *HTTP) GetGaugeVec(path string, n []string) StatGaugeVec
- func (h *HTTP) GetTimer(path string) StatTimer
- func (h *HTTP) GetTimerVec(path string, n []string) StatTimerVec
- func (h *HTTP) HandlerFunc() http.HandlerFunc
- func (h *HTTP) SetLogger(log log.Modular)
- type Local
- func (l *Local) Close() error
- func (l *Local) GetCounter(path string) StatCounter
- func (l *Local) GetCounterVec(path string, n []string) StatCounterVec
- func (l *Local) GetCounters() map[string]int64
- func (l *Local) GetGauge(path string) StatGauge
- func (l *Local) GetGaugeVec(path string, n []string) StatGaugeVec
- func (l *Local) GetTimer(path string) StatTimer
- func (l *Local) GetTimerVec(path string, n []string) StatTimerVec
- func (l *Local) GetTimings() map[string]int64
- func (l *Local) SetLogger(log log.Modular)
- type LocalStat
- type PromCounter
- type PromCounterVec
- type PromGauge
- type PromGaugeVec
- type PromTiming
- type PromTimingVec
- type Prometheus
- func (p *Prometheus) Close() error
- func (p *Prometheus) GetCounter(path string) StatCounter
- func (p *Prometheus) GetCounterVec(path string, labelNames []string) StatCounterVec
- func (p *Prometheus) GetGauge(path string) StatGauge
- func (p *Prometheus) GetGaugeVec(path string, labelNames []string) StatGaugeVec
- func (p *Prometheus) GetTimer(path string) StatTimer
- func (p *Prometheus) GetTimerVec(path string, labelNames []string) StatTimerVec
- func (p *Prometheus) HandlerFunc() http.HandlerFunc
- func (p *Prometheus) SetLogger(log log.Modular)
- type PrometheusConfig
- type StatCounter
- type StatCounterVec
- type StatGauge
- type StatGaugeVec
- type StatTimer
- type StatTimerVec
- type Statsd
- func (h *Statsd) Close() error
- func (h *Statsd) GetCounter(path string) StatCounter
- func (h *Statsd) GetCounterVec(path string, n []string) StatCounterVec
- func (h *Statsd) GetGauge(path string) StatGauge
- func (h *Statsd) GetGaugeVec(path string, n []string) StatGaugeVec
- func (h *Statsd) GetTimer(path string) StatTimer
- func (h *Statsd) GetTimerVec(path string, n []string) StatTimerVec
- func (h *Statsd) SetLogger(log log.Modular)
- type StatsdConfig
- type StatsdStat
- type Type
- func Combine(t1, t2 Type) Type
- func Namespaced(t Type, ns string) Type
- func New(conf Config, opts ...func(Type)) (Type, error)
- func NewHTTP(config Config, opts ...func(Type)) (Type, error)
- func NewPrometheus(config Config, opts ...func(Type)) (Type, error)
- func NewStatsd(config Config, opts ...func(Type)) (Type, error)
- func WrapFlat(f Flat) Type
- type WithHandlerFunc
Constants ¶
const ( TypeHTTPServer = "http_server" TypePrometheus = "prometheus" TypeStatsd = "statsd" )
String constants representing each metric type.
Variables ¶
var (
ErrInvalidMetricOutputType = errors.New("invalid metrics output type")
)
Errors for the metrics package.
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 ¶
OptSetLogger sets the logging output to be used by the metrics clients.
func SanitiseConfig ¶
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.
type DudStat ¶
type DudStat struct{}
DudStat implements the Stat interface but doesn't actual do anything.
type DudType ¶
type DudType struct {
ID int
}
DudType implements the Type interface but doesn't actual do anything.
func (DudType) GetCounter ¶
func (d DudType) GetCounter(path string) StatCounter
GetCounter returns a DudStat.
func (DudType) GetCounterVec ¶
func (d DudType) GetCounterVec(path string, n []string) StatCounterVec
GetCounterVec returns a DudStat.
func (DudType) GetGaugeVec ¶
func (d DudType) GetGaugeVec(path string, n []string) StatGaugeVec
GetGaugeVec returns a DudStat.
func (DudType) GetTimerVec ¶
func (d DudType) GetTimerVec(path string, n []string) StatTimerVec
GetTimerVec returns a DudStat.
type Flat ¶
type Flat interface { // Flat is an interface for setting metrics via flat paths. // 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 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) GetCounter ¶
func (h *HTTP) GetCounter(path string) StatCounter
GetCounter returns a stat counter object for a path.
func (*HTTP) GetCounterVec ¶
func (h *HTTP) GetCounterVec(path string, n []string) StatCounterVec
GetCounterVec returns a stat counter object for a path with the labels discarded.
func (*HTTP) GetGaugeVec ¶
func (h *HTTP) GetGaugeVec(path string, n []string) StatGaugeVec
GetGaugeVec returns a stat timer object for a path with the labels discarded.
func (*HTTP) GetTimerVec ¶
func (h *HTTP) GetTimerVec(path string, n []string) StatTimerVec
GetTimerVec returns a stat timer object for a path with the labels discarded.
func (*HTTP) HandlerFunc ¶
func (h *HTTP) HandlerFunc() http.HandlerFunc
HandlerFunc returns an http.HandlerFunc for accessing metrics as a JSON blob.
type Local ¶
Local is a metrics aggregator that stores metrics locally.
func (*Local) Close ¶
Close stops the Local object from aggregating metrics and cleans up resources.
func (*Local) GetCounter ¶
func (l *Local) GetCounter(path string) StatCounter
GetCounter returns a stat counter object for a path.
func (*Local) GetCounterVec ¶
func (l *Local) GetCounterVec(path string, n []string) StatCounterVec
GetCounterVec returns a stat counter object for a path with the labels discarded.
func (*Local) GetCounters ¶
GetCounters returns a map of metric paths to counters.
func (*Local) GetGaugeVec ¶
func (l *Local) GetGaugeVec(path string, n []string) StatGaugeVec
GetGaugeVec returns a stat timer object for a path with the labels discarded.
func (*Local) GetTimerVec ¶
func (l *Local) GetTimerVec(path string, n []string) StatTimerVec
GetTimerVec returns a stat timer object for a path with the labels discarded.
func (*Local) GetTimings ¶
GetTimings returns a map of metric paths to timers.
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.
type PromCounter ¶
type PromCounter struct {
// contains filtered or unexported fields
}
PromCounter is a representation of a single metric stat. Interactions with this stat are thread safe.
func (*PromCounter) Incr ¶
func (p *PromCounter) Incr(count int64) error
Incr increments a metric by an amount.
type PromCounterVec ¶
type PromCounterVec struct {
// contains filtered or unexported fields
}
PromCounterVec creates StatCounters with dynamic labels.
func (*PromCounterVec) With ¶
func (p *PromCounterVec) With(labelValues ...string) StatCounter
With returns a StatCounter with a set of label values.
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.
type PromGaugeVec ¶
type PromGaugeVec struct {
// contains filtered or unexported fields
}
PromGaugeVec creates StatGauges with dynamic labels.
func (*PromGaugeVec) With ¶
func (p *PromGaugeVec) With(labelValues ...string) StatGauge
With returns a StatGauge with a set of label values.
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 PromTimingVec ¶
type PromTimingVec struct {
// contains filtered or unexported fields
}
PromTimingVec creates StatTimers with dynamic labels.
func (*PromTimingVec) With ¶
func (p *PromTimingVec) With(labelValues ...string) StatTimer
With returns a StatTimer with a set of label values.
type Prometheus ¶
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) GetCounter ¶
func (p *Prometheus) GetCounter(path string) StatCounter
GetCounter returns a stat counter object for a path.
func (*Prometheus) GetCounterVec ¶
func (p *Prometheus) GetCounterVec(path string, labelNames []string) StatCounterVec
GetCounterVec returns an editable counter stat for a given path with labels, these labels must be consistent with any other metrics registered on the same path.
func (*Prometheus) GetGauge ¶
func (p *Prometheus) GetGauge(path string) StatGauge
GetGauge returns a stat gauge object for a path.
func (*Prometheus) GetGaugeVec ¶
func (p *Prometheus) GetGaugeVec(path string, labelNames []string) StatGaugeVec
GetGaugeVec returns an editable gauge stat for a given path with labels, these labels must be consistent with any other metrics registered on the same path.
func (*Prometheus) GetTimer ¶
func (p *Prometheus) GetTimer(path string) StatTimer
GetTimer returns a stat timer object for a path.
func (*Prometheus) GetTimerVec ¶
func (p *Prometheus) GetTimerVec(path string, labelNames []string) StatTimerVec
GetTimerVec returns an editable timer stat for a given path with labels, these labels must be consistent with any other metrics registered on the same path.
func (*Prometheus) HandlerFunc ¶
func (p *Prometheus) HandlerFunc() http.HandlerFunc
HandlerFunc returns an http.HandlerFunc for scraping metrics.
func (*Prometheus) SetLogger ¶
func (p *Prometheus) SetLogger(log log.Modular)
SetLogger does nothing.
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 ¶
StatCounter is a representation of a single counter metric stat. Interactions with this stat are thread safe.
type StatCounterVec ¶
type StatCounterVec interface { // With returns a StatCounter with a set of label values. With(labelValues ...string) StatCounter }
StatCounterVec creates StatCounters with dynamic labels.
type StatGauge ¶
type StatGauge interface { // Set sets the value of a gauge metric. Set(value int64) error // Incr increments a gauge by an amount. Incr(count int64) error // Decr decrements a gauge by an amount. Decr(count int64) error }
StatGauge is a representation of a single gauge metric stat. Interactions with this stat are thread safe.
type StatGaugeVec ¶
type StatGaugeVec interface { // With returns a StatGauge with a set of label values. With(labelValues ...string) StatGauge }
StatGaugeVec creates StatGauges with dynamic labels.
type StatTimer ¶
StatTimer is a representation of a single timer metric stat. Interactions with this stat are thread safe.
type StatTimerVec ¶
type StatTimerVec interface { // With returns a StatTimer with a set of label values. With(labelValues ...string) StatTimer }
StatTimerVec creates StatTimers with dynamic labels.
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 ¶
Close stops the Statsd object from aggregating metrics and cleans up resources.
func (*Statsd) GetCounter ¶
func (h *Statsd) GetCounter(path string) StatCounter
GetCounter returns a stat counter object for a path.
func (*Statsd) GetCounterVec ¶
func (h *Statsd) GetCounterVec(path string, n []string) StatCounterVec
GetCounterVec returns a stat counter object for a path with the labels discarded.
func (*Statsd) GetGaugeVec ¶
func (h *Statsd) GetGaugeVec(path string, n []string) StatGaugeVec
GetGaugeVec returns a stat timer object for a path with the labels discarded.
func (*Statsd) GetTimerVec ¶
func (h *Statsd) GetTimerVec(path string, n []string) StatTimerVec
GetTimerVec returns a stat timer object for a path with the labels discarded.
type StatsdConfig ¶
type StatsdConfig struct { Address string `json:"address" yaml:"address"` FlushPeriod string `json:"flush_period" yaml:"flush_period"` 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) 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 // GetCounterVec returns an editable counter stat for a given path with // labels, these labels must be consistent with any other metrics registered // on the same path. GetCounterVec(path string, labelNames []string) StatCounterVec // GetTimer returns an editable timer stat for a given path. GetTimer(path string) StatTimer // GetTimerVec returns an editable timer stat for a given path with labels, // these labels must be consistent with any other metrics registered on the // same path. GetTimerVec(path string, labelNames []string) StatTimerVec // GetGauge returns an editable gauge stat for a given path. GetGauge(path string) StatGauge // GetGaugeVec returns an editable gauge stat for a given path with labels, // these labels must be consistent with any other metrics registered on the // same path. GetGaugeVec(path string, labelNames []string) StatGaugeVec // SetLogger sets the logging mechanism of the metrics type. SetLogger(log log.Modular) // Close stops aggregating stats and cleans up resources. Close() error }
Type is an interface for metrics aggregation.
func Combine ¶
Combine returns a Type implementation that feeds metrics into two underlying Type implementations.
func Namespaced ¶
Namespaced embeds an existing metrics aggregator under a new namespace. The prefix of the embedded aggregator is still the ultimate prefix of metrics.
func NewPrometheus ¶
NewPrometheus creates and returns a new Prometheus object.
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.