Documentation ¶
Overview ¶
Package metrics provides storage for metrics being recorded by mtail programs.
Index ¶
- Constants
- type Kind
- type LabelSet
- type LabelValue
- type Metric
- func (m *Metric) EmitLabelSets(c chan *LabelSet)
- func (m *Metric) ExpireDatum(expiry time.Duration, labelvalues ...string) error
- func (m *Metric) FindLabelValueOrNil(labelvalues []string) *LabelValue
- func (m *Metric) GetDatum(labelvalues ...string) (d datum.Datum, err error)
- func (m *Metric) RemoveDatum(labelvalues ...string) error
- func (m *Metric) SetSource(source string)
- func (m *Metric) String() string
- type Store
Constants ¶
const ( // Int indicates this metric is an integer metric type. Int = datum.Int // Float indicates this metric is a floating-point metric type. Float = datum.Float // String indicates this metric contains string values String = datum.String // Buckets indicates this metric is a histogram metric type. Buckets = datum.Buckets )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Kind ¶
type Kind int
Kind enumerates the types of metrics supported.
const ( // Counter is a monotonically nondecreasing metric. Counter Kind // Gauge is a Kind that can take on any value, and may be set // discontinuously from its previous value. Gauge // Timer is a specialisation of Gauge that can be used to store time // intervals, such as latency and durations. It enables certain behaviour // in exporters that handle time intervals such as StatsD. Timer // Text is a special metric type for free text, usually for operating as a 'hidden' metric, as often these values cannot be exported. Text // Histogram is a Kind that observes a value and stores the value // in a bucket. Histogram )
type LabelSet ¶
LabelSet is an object that maps the keys of a Metric to the labels naming a Datum, for use when enumerating Datums from a Metric.
type LabelValue ¶
type LabelValue struct { Labels []string `json:",omitempty"` Value datum.Datum // After this time of inactivity, the LabelValue is removed from the metric. Expiry time.Duration `json:",omitempty"` }
LabelValue is an object that names a Datum value with a list of label strings.
func (*LabelValue) String ¶
func (lv *LabelValue) String() string
func (*LabelValue) UnmarshalJSON ¶
func (lv *LabelValue) UnmarshalJSON(b []byte) error
UnmarshalJSON converts a JSON byte string into a LabelValue
type Metric ¶
type Metric struct { sync.RWMutex Name string // Name Program string // Instantiating program Kind Kind Type datum.Type Hidden bool `json:",omitempty"` Keys []string `json:",omitempty"` LabelValues []*LabelValue `json:",omitempty"` Source string `json:"-"` Buckets []datum.Range `json:",omitempty"` }
Metric is an object that describes a metric, with its name, the creator and owner program name, its Kind, a sequence of Keys that may be used to add dimension to the metric, and a list of LabelValues that contain data for labels in each dimension of the Keys.
func (*Metric) EmitLabelSets ¶
EmitLabelSets enumerates the LabelSets corresponding to the LabelValues of a Metric. It emits them onto the provided channel, then closes the channel to signal completion.
func (*Metric) ExpireDatum ¶
func (*Metric) FindLabelValueOrNil ¶
func (m *Metric) FindLabelValueOrNil(labelvalues []string) *LabelValue
func (*Metric) GetDatum ¶
GetDatum returns the datum named by a sequence of string label values from a Metric. If the sequence of label values does not yet exist, it is created.
func (*Metric) RemoveDatum ¶
RemoveDatum removes the Datum described by labelvalues from the Metric m.
type Store ¶
Store contains Metrics.
func (*Store) ClearMetrics ¶
func (s *Store) ClearMetrics()
ClearMetrics empties the store of all metrics.
func (*Store) Gc ¶
Gc iterates through the Store looking for metrics that have been marked for expiry, and removing them if their expiration time has passed.
func (*Store) MarshalJSON ¶
MarshalJSON returns a JSON byte string representing the Store.
func (*Store) StartGcLoop ¶
StartGcLoop runs a permanent goroutine to expire metrics every duration.