metrics

package
v3.65.4 Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2022 License: MIT Imports: 43 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 (
	TypeAWSCloudWatch = "aws_cloudwatch"
	TypeBlackList     = "blacklist"
	TypeCloudWatch    = "cloudwatch"
	TypeHTTPServer    = "http_server"
	TypeInfluxDB      = "influxdb"
	TypeNone          = "none"
	TypePrometheus    = "prometheus"
	TypeRename        = "rename"
	TypeStatsd        = "statsd"
	TypeStdout        = "stdout"
	TypeWhiteList     = "whitelist"
)

String constants representing each metric type.

View Source
const (
	TagFormatNone     = "none"
	TagFormatDatadog  = "datadog"
	TagFormatInfluxDB = "influxdb"
	TagFormatLegacy   = "legacy"
)

Tag formats supported by the statsd metric type.

Variables

View Source
var Constructors = map[string]TypeSpec{}

Constructors is a map of all metrics types with their specs.

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.

func WalkConstructors

func WalkConstructors(fn func(ConstructorFunc, docs.ComponentSpec))

WalkConstructors iterates each component constructor.

Types

type Blacklist

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

Blacklist is a statistics object that wraps a separate statistics object and only permits statistics that pass through the Blacklist to be recorded.

func (*Blacklist) Close

func (h *Blacklist) Close() error

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

func (*Blacklist) GetCounter

func (h *Blacklist) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Blacklist) GetCounterVec

func (h *Blacklist) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels discarded.

func (*Blacklist) GetGauge

func (h *Blacklist) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Blacklist) GetGaugeVec

func (h *Blacklist) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*Blacklist) GetTimer

func (h *Blacklist) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Blacklist) GetTimerVec

func (h *Blacklist) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels discarded.

func (*Blacklist) HandlerFunc

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

HandlerFunc returns an http.HandlerFunc for accessing metrics for appropriate child types

func (*Blacklist) SetLogger

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

SetLogger sets the logger used to print connection errors.

type BlacklistConfig

type BlacklistConfig struct {
	Paths    []string `json:"paths" yaml:"paths"`
	Patterns []string `json:"patterns" yaml:"patterns"`
	Child    *Config  `json:"child" yaml:"child"`
}

BlacklistConfig allows for the placement of filtering rules to only allow metrics that are not matched to be displayed or retrieved. It has a set of prefixes (direct string comparison) that are checked as well as a set of regular expressions for more precise control over metrics. It also has a metrics configuration that is wrapped by the Blacklist.

func NewBlacklistConfig

func NewBlacklistConfig() BlacklistConfig

NewBlacklistConfig returns the default configuration for a Blacklist

func (BlacklistConfig) MarshalJSON

func (w BlacklistConfig) MarshalJSON() ([]byte, error)

MarshalJSON prints an empty object instead of nil.

func (BlacklistConfig) MarshalYAML

func (w BlacklistConfig) MarshalYAML() (interface{}, error)

MarshalYAML prints an empty object instead of nil.

type CloudWatch

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

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

func (*CloudWatch) Close

func (c *CloudWatch) Close() error

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

func (*CloudWatch) GetCounter

func (c *CloudWatch) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*CloudWatch) GetCounterVec

func (c *CloudWatch) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels

func (*CloudWatch) GetGauge

func (c *CloudWatch) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*CloudWatch) GetGaugeVec

func (c *CloudWatch) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels

func (*CloudWatch) GetTimer

func (c *CloudWatch) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*CloudWatch) GetTimerVec

func (c *CloudWatch) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels

func (*CloudWatch) SetLogger

func (c *CloudWatch) SetLogger(log log.Modular)

SetLogger sets the logger used to print connection errors.

type CloudWatchConfig

type CloudWatchConfig struct {
	session.Config `json:",inline" yaml:",inline"`
	Namespace      string `json:"namespace" yaml:"namespace"`
	FlushPeriod    string `json:"flush_period" yaml:"flush_period"`
	PathMapping    string `json:"path_mapping" yaml:"path_mapping"`
}

CloudWatchConfig contains config fields for the CloudWatch metrics type.

func NewCloudWatchConfig

func NewCloudWatchConfig() CloudWatchConfig

NewCloudWatchConfig creates an CloudWatchConfig struct with default values.

type Config

type Config struct {
	Type          string           `json:"type" yaml:"type"`
	AWSCloudWatch CloudWatchConfig `json:"aws_cloudwatch" yaml:"aws_cloudwatch"`
	Blacklist     BlacklistConfig  `json:"blacklist" yaml:"blacklist"`
	CloudWatch    CloudWatchConfig `json:"cloudwatch" yaml:"cloudwatch"`
	HTTP          HTTPConfig       `json:"http_server" yaml:"http_server"`
	InfluxDB      InfluxDBConfig   `json:"influxdb" yaml:"influxdb"`
	None          struct{}         `json:"none" yaml:"none"`
	Prometheus    PrometheusConfig `json:"prometheus" yaml:"prometheus"`
	Rename        RenameConfig     `json:"rename" yaml:"rename"`
	Statsd        StatsdConfig     `json:"statsd" yaml:"statsd"`
	Stdout        StdoutConfig     `json:"stdout" yaml:"stdout"`
	Whitelist     WhitelistConfig  `json:"whitelist" yaml:"whitelist"`
}

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.

func (Config) Sanitised

func (conf Config) Sanitised(removeDeprecated bool) (interface{}, error)

Sanitised returns a sanitised version of the config, meaning sections that aren't relevant to behaviour are removed. Also optionally removes deprecated fields.

func (*Config) UnmarshalJSON

func (conf *Config) UnmarshalJSON(bytes []byte) error

UnmarshalJSON ensures that when parsing configs that are in a map or slice the default values are still applied.

func (*Config) UnmarshalYAML

func (conf *Config) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML ensures that when parsing configs that are in a map or slice the default values are still applied.

type ConstructorFunc

type ConstructorFunc func(Config, ...func(Type)) (Type, error)

ConstructorFunc is a func signature able to construct a metrics output.

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) Incr

func (d DudStat) Incr(count int64) error

Incr does nothing.

func (DudStat) Set

func (d DudStat) Set(value int64) error

Set 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) 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) GetGauge

func (d DudType) GetGauge(path string) StatGauge

GetGauge returns a DudStat.

func (DudType) GetGaugeVec

func (d DudType) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a DudStat.

func (DudType) GetTimer

func (d DudType) GetTimer(path string) StatTimer

GetTimer returns a DudStat.

func (DudType) GetTimerVec

func (d DudType) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a DudStat.

func (DudType) SetLogger

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

SetLogger does nothing.

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) Close

func (h *HTTP) Close() error

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

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) GetGauge

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

GetGauge returns a stat gauge object for a path.

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) GetTimer

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

GetTimer returns a stat timer object for a path.

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.

func (*HTTP) SetLogger

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

SetLogger does nothing.

type HTTPConfig

type HTTPConfig struct {
	Prefix      string `json:"prefix" yaml:"prefix"`
	PathMapping string `json:"path_mapping" yaml:"path_mapping"`
}

HTTPConfig contains configuration parameters for the HTTP metrics aggregator.

func NewHTTPConfig

func NewHTTPConfig() HTTPConfig

NewHTTPConfig returns a new HTTPConfig with default values.

type InfluxDB

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

InfluxDB is the stats and client holder

func (*InfluxDB) Close

func (i *InfluxDB) Close() error

Close reports metrics one last time and stops the InfluxDB object and closes the underlying client connection

func (*InfluxDB) GetCounter

func (i *InfluxDB) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*InfluxDB) GetCounterVec

func (i *InfluxDB) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels

func (*InfluxDB) GetGauge

func (i *InfluxDB) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*InfluxDB) GetGaugeVec

func (i *InfluxDB) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels

func (*InfluxDB) GetTimer

func (i *InfluxDB) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*InfluxDB) GetTimerVec

func (i *InfluxDB) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels

func (*InfluxDB) SetLogger

func (i *InfluxDB) SetLogger(log log.Modular)

SetLogger sets the logger used to print connection errors.

type InfluxDBConfig

type InfluxDBConfig struct {
	URL string `json:"url" yaml:"url"`
	DB  string `json:"db" yaml:"db"`

	TLS              btls.Config     `json:"tls" yaml:"tls"`
	Interval         string          `json:"interval" yaml:"interval"`
	Password         string          `json:"password" yaml:"password"`
	PingInterval     string          `json:"ping_interval" yaml:"ping_interval"`
	Precision        string          `json:"precision" yaml:"precision"`
	Timeout          string          `json:"timeout" yaml:"timeout"`
	Username         string          `json:"username" yaml:"username"`
	RetentionPolicy  string          `json:"retention_policy" yaml:"retention_policy"`
	WriteConsistency string          `json:"write_consistency" yaml:"write_consistency"`
	Include          InfluxDBInclude `json:"include" yaml:"include"`

	PathMapping string            `json:"path_mapping" yaml:"path_mapping"`
	Tags        map[string]string `json:"tags" yaml:"tags"`
}

InfluxDBConfig is config for the influx metrics type.

func NewInfluxDBConfig

func NewInfluxDBConfig() InfluxDBConfig

NewInfluxDBConfig creates an InfluxDBConfig struct with default values.

type InfluxDBInclude

type InfluxDBInclude struct {
	Runtime string `json:"runtime" yaml:"runtime"`
	DebugGC string `json:"debug_gc" yaml:"debug_gc"`
}

InfluxDBInclude contains configuration parameters for optional metrics to include.

type Local

type Local struct {
	// 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) FlushCounters

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

FlushCounters returns a map of the current state of the metrics paths to counters and then resets the counters to 0

func (*Local) FlushTimings

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

FlushTimings returns a map of the current state of the metrics paths to counters and then resets the counters to 0

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, k []string) StatCounterVec

GetCounterVec returns a stat counter object for a path and records the labels and values.

func (*Local) GetCounters

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

GetCounters returns a map of metric paths to counters.

func (*Local) GetCountersWithLabels

func (l *Local) GetCountersWithLabels() map[string]LocalStat

GetCountersWithLabels returns a map of metric paths to counters including labels and values.

func (*Local) GetGauge

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

GetGauge returns a stat gauge object for a path.

func (*Local) GetGaugeVec

func (l *Local) GetGaugeVec(path string, k []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*Local) GetTimer

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

GetTimer returns a stat timer object for a path.

func (*Local) GetTimerVec

func (l *Local) GetTimerVec(path string, k []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels and values.

func (*Local) GetTimings

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

GetTimings returns a map of metric paths to timers.

func (*Local) GetTimingsWithLabels

func (l *Local) GetTimingsWithLabels() map[string]LocalStat

GetTimingsWithLabels returns a map of metric paths to timers, including labels and values.

func (*Local) SetLogger

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

SetLogger does nothing.

type LocalStat

type LocalStat struct {
	Value *int64
	// 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) HasLabelWithValue

func (l *LocalStat) HasLabelWithValue(k, v string) bool

HasLabelWithValue takes a label/value pair and returns true if that combination has been recorded, or false otherwise.

This is mostly useful in tests for custom processors.

func (*LocalStat) Incr

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

Incr increments a metric by an amount.

func (*LocalStat) Set

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

Set sets a gauge metric.

func (*LocalStat) Timing

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

Timing sets a timing metric.

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.

func (*PromGauge) Decr

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

Decr decrements a metric by an amount.

func (*PromGauge) Incr

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

Incr increments a metric by an amount.

func (*PromGauge) Set

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

Set sets a gauge metric.

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 PromTimingHistVec

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

PromTimingHistVec creates StatTimers with dynamic labels.

func (*PromTimingHistVec) With

func (p *PromTimingHistVec) With(labelValues ...string) StatTimer

With returns a StatTimer with a set of label values.

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

type Prometheus struct {
	// 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) 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 {
	Prefix             string                        `json:"prefix" yaml:"prefix"`
	PathMapping        string                        `json:"path_mapping" yaml:"path_mapping"`
	UseHistogramTiming bool                          `json:"use_histogram_timing" yaml:"use_histogram_timing"`
	HistogramBuckets   []float64                     `json:"histogram_buckets" yaml:"histogram_buckets"`
	PushURL            string                        `json:"push_url" yaml:"push_url"`
	PushBasicAuth      PrometheusPushBasicAuthConfig `json:"push_basic_auth" yaml:"push_basic_auth"`
	PushInterval       string                        `json:"push_interval" yaml:"push_interval"`
	PushJobName        string                        `json:"push_job_name" yaml:"push_job_name"`
}

PrometheusConfig is config for the Prometheus metrics type.

func NewPrometheusConfig

func NewPrometheusConfig() PrometheusConfig

NewPrometheusConfig creates an PrometheusConfig struct with default values.

type PrometheusPushBasicAuthConfig

type PrometheusPushBasicAuthConfig struct {
	Username string `json:"username" yaml:"username"`
	Password string `json:"password" yaml:"password"`
}

PrometheusPushBasicAuthConfig contains parameters for establishing basic authentication against a push service.

func NewPrometheusPushBasicAuthConfig

func NewPrometheusPushBasicAuthConfig() PrometheusPushBasicAuthConfig

NewPrometheusPushBasicAuthConfig creates a new NewPrometheusPushBasicAuthConfig with default values.

type Rename

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

Rename is a statistics object that wraps a separate statistics object and only permits statistics that pass through the whitelist to be recorded.

func (*Rename) Close

func (r *Rename) Close() error

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

func (*Rename) GetCounter

func (r *Rename) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Rename) GetCounterVec

func (r *Rename) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels and values.

func (*Rename) GetGauge

func (r *Rename) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Rename) GetGaugeVec

func (r *Rename) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*Rename) GetTimer

func (r *Rename) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Rename) GetTimerVec

func (r *Rename) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels and values.

func (*Rename) HandlerFunc

func (r *Rename) HandlerFunc() http.HandlerFunc

HandlerFunc returns an http.HandlerFunc for accessing metrics for appropriate child types

func (*Rename) SetLogger

func (r *Rename) SetLogger(log log.Modular)

SetLogger sets the logger used to print connection errors.

type RenameByRegexpConfig

type RenameByRegexpConfig struct {
	Pattern string            `json:"pattern" yaml:"pattern"`
	Value   string            `json:"value" yaml:"value"`
	Labels  map[string]string `json:"to_label" yaml:"to_label"`
}

RenameByRegexpConfig contains config fields for a rename by regular expression pattern.

type RenameConfig

type RenameConfig struct {
	ByRegexp []RenameByRegexpConfig `json:"by_regexp" yaml:"by_regexp"`
	Child    *Config                `json:"child" yaml:"child"`
}

RenameConfig contains config fields for the Rename metric type.

func NewRenameConfig

func NewRenameConfig() RenameConfig

NewRenameConfig returns a RenameConfig with default values.

func (RenameConfig) MarshalJSON

func (w RenameConfig) MarshalJSON() ([]byte, error)

MarshalJSON prints an empty object instead of nil.

func (RenameConfig) MarshalYAML

func (w RenameConfig) MarshalYAML() (interface{}, error)

MarshalYAML prints an empty object instead of nil.

type StatCounter

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

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

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 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

func (h *Statsd) Close() error

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

func (*Statsd) GetGauge

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

GetGauge returns a stat gauge object for a path.

func (*Statsd) GetGaugeVec

func (h *Statsd) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels

func (*Statsd) GetTimer

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

GetTimer returns a stat timer object for a path.

func (*Statsd) GetTimerVec

func (h *Statsd) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels

func (*Statsd) SetLogger

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

SetLogger sets the logger used to print connection errors.

type StatsdConfig

type StatsdConfig struct {
	Prefix      string `json:"prefix" yaml:"prefix"`
	PathMapping string `json:"path_mapping" yaml:"path_mapping"`
	Address     string `json:"address" yaml:"address"`
	FlushPeriod string `json:"flush_period" yaml:"flush_period"`
	Network     string `json:"network" yaml:"network"`
	TagFormat   string `json:"tag_format" yaml:"tag_format"`
}

StatsdConfig is config for the Statsd metrics type.

func NewStatsdConfig

func NewStatsdConfig() StatsdConfig

NewStatsdConfig creates an StatsdConfig struct with default values.

type StatsdLegacy

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

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

func (*StatsdLegacy) Close

func (h *StatsdLegacy) Close() error

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

func (*StatsdLegacy) GetCounter

func (h *StatsdLegacy) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*StatsdLegacy) GetCounterVec

func (h *StatsdLegacy) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels discarded.

func (*StatsdLegacy) GetGauge

func (h *StatsdLegacy) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*StatsdLegacy) GetGaugeVec

func (h *StatsdLegacy) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*StatsdLegacy) GetTimer

func (h *StatsdLegacy) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*StatsdLegacy) GetTimerVec

func (h *StatsdLegacy) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels discarded.

func (*StatsdLegacy) SetLogger

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

SetLogger sets the logger used to print connection errors.

type StatsdLegacyStat

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

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

func (*StatsdLegacyStat) Decr

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

Decr decrements a metric by an amount.

func (*StatsdLegacyStat) Incr

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

Incr increments a metric by an amount.

func (*StatsdLegacyStat) Set

func (s *StatsdLegacyStat) Set(value int64) error

Set sets a gauge metric.

func (*StatsdLegacyStat) Timing

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

Timing sets a timing metric.

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) Set

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

Set sets a gauge metric.

func (*StatsdStat) Timing

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

Timing sets a timing metric.

type Stdout

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

Stdout is an object with capability to hold internal stats and emit them as individual JSON objects via stdout.

func (*Stdout) Close

func (s *Stdout) Close() error

Close stops the Stdout object from aggregating metrics and does a publish (write to stdout) of metrics.

func (*Stdout) GetCounter

func (s *Stdout) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Stdout) GetCounterVec

func (s *Stdout) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels discarded.

func (*Stdout) GetGauge

func (s *Stdout) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Stdout) GetGaugeVec

func (s *Stdout) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*Stdout) GetTimer

func (s *Stdout) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Stdout) GetTimerVec

func (s *Stdout) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels discarded.

func (*Stdout) SetLogger

func (s *Stdout) SetLogger(log log.Modular)

SetLogger does nothing.

type StdoutConfig

type StdoutConfig struct {
	PushInterval string                 `json:"push_interval" yaml:"push_interval"`
	StaticFields map[string]interface{} `json:"static_fields" yaml:"static_fields"`
	FlushMetrics bool                   `json:"flush_metrics" yaml:"flush_metrics"`
	PathMapping  string                 `json:"path_mapping" yaml:"path_mapping"`
}

StdoutConfig contains configuration parameters for the Stdout metrics aggregator.

func NewStdoutConfig

func NewStdoutConfig() StdoutConfig

NewStdoutConfig returns a new StdoutConfig with default values.

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

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 NewAWSCloudWatch

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

NewAWSCloudWatch creates and returns a new CloudWatch object.

func NewBlacklist

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

NewBlacklist creates and returns a new Blacklist object

func NewCloudWatch

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

NewCloudWatch creates and returns a new CloudWatch object.

func NewHTTP

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

NewHTTP creates and returns a new HTTP object.

func NewInfluxDB

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

NewInfluxDB creates and returns a new InfluxDB object.

func NewPrometheus

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

NewPrometheus creates and returns a new Prometheus object.

func NewRename

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

NewRename creates and returns a new Rename object

func NewStatsd

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

NewStatsd creates and returns a new Statsd object.

func NewStatsdLegacy

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

NewStatsdLegacy creates and returns a new StatsdLegacy object.

func NewStdout

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

NewStdout creates and returns a new Stdout metric object.

func NewWhitelist

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

NewWhitelist creates and returns a new Whitelist object

func WrapFlat

func WrapFlat(f Flat) Type

WrapFlat creates a Type around a Flat implementation.

type TypeSpec

type TypeSpec struct {
	Status      docs.Status
	Version     string
	Summary     string
	Description string
	Footnotes   string

	FieldSpecs docs.FieldSpecs
	// contains filtered or unexported fields
}

TypeSpec is a constructor and a usage description for each metric output type.

type Whitelist

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

Whitelist is a statistics object that wraps a separate statistics object and only permits statistics that pass through the whitelist to be recorded.

func (*Whitelist) Close

func (h *Whitelist) Close() error

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

func (*Whitelist) GetCounter

func (h *Whitelist) GetCounter(path string) StatCounter

GetCounter returns a stat counter object for a path.

func (*Whitelist) GetCounterVec

func (h *Whitelist) GetCounterVec(path string, n []string) StatCounterVec

GetCounterVec returns a stat counter object for a path with the labels discarded.

func (*Whitelist) GetGauge

func (h *Whitelist) GetGauge(path string) StatGauge

GetGauge returns a stat gauge object for a path.

func (*Whitelist) GetGaugeVec

func (h *Whitelist) GetGaugeVec(path string, n []string) StatGaugeVec

GetGaugeVec returns a stat timer object for a path with the labels discarded.

func (*Whitelist) GetTimer

func (h *Whitelist) GetTimer(path string) StatTimer

GetTimer returns a stat timer object for a path.

func (*Whitelist) GetTimerVec

func (h *Whitelist) GetTimerVec(path string, n []string) StatTimerVec

GetTimerVec returns a stat timer object for a path with the labels discarded.

func (*Whitelist) HandlerFunc

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

HandlerFunc returns an http.HandlerFunc for accessing metrics for appropriate child types

func (*Whitelist) SetLogger

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

SetLogger sets the logger used to print connection errors.

type WhitelistConfig

type WhitelistConfig struct {
	Paths    []string `json:"paths" yaml:"paths"`
	Patterns []string `json:"patterns" yaml:"patterns"`
	Child    *Config  `json:"child" yaml:"child"`
}

WhitelistConfig allows for the placement of filtering rules to only allow select metrics to be displayed or retrieved. It consists of a set of prefixes (direct string comparison) that are checked, and a standard metrics configuration that is wrapped by the whitelist.

func NewWhitelistConfig

func NewWhitelistConfig() WhitelistConfig

NewWhitelistConfig returns the default configuration for a whitelist

func (WhitelistConfig) MarshalJSON

func (w WhitelistConfig) MarshalJSON() ([]byte, error)

MarshalJSON prints an empty object instead of nil.

func (WhitelistConfig) MarshalYAML

func (w WhitelistConfig) MarshalYAML() (interface{}, error)

MarshalYAML prints an empty object instead of nil.

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.

Jump to

Keyboard shortcuts

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