metrics

package
v3.0.0-rc29+incompatible Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2019 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package metrics provides storage for metrics being recorded by mtail programs.

Index

Constants

View Source
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
)

func (Kind) String

func (m Kind) String() string

type LabelSet

type LabelSet struct {
	Labels map[string]string
	Datum  datum.Datum
}

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 NewMetric

func NewMetric(name string, prog string, kind Kind, typ datum.Type, keys ...string) *Metric

NewMetric returns a new empty metric of dimension len(keys).

func (*Metric) EmitLabelSets

func (m *Metric) EmitLabelSets(c chan *LabelSet)

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 (m *Metric) ExpireDatum(expiry time.Duration, labelvalues ...string) error

func (*Metric) FindLabelValueOrNil

func (m *Metric) FindLabelValueOrNil(labelvalues []string) *LabelValue

func (*Metric) GetDatum

func (m *Metric) GetDatum(labelvalues ...string) (d datum.Datum, err error)

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

func (m *Metric) RemoveDatum(labelvalues ...string) error

RemoveDatum removes the Datum described by labelvalues from the Metric m.

func (*Metric) SetSource

func (m *Metric) SetSource(source string)

SetSource sets the source of a metric, describing where in user programmes it was defined.

func (*Metric) String

func (m *Metric) String() string

type Store

type Store struct {
	sync.RWMutex
	Metrics map[string][]*Metric
}

Store contains Metrics.

func NewStore

func NewStore() (s *Store)

NewStore returns a new metric Store.

func (*Store) Add

func (s *Store) Add(m *Metric) error

Add is used to add one metric to the Store.

func (*Store) ClearMetrics

func (s *Store) ClearMetrics()

ClearMetrics empties the store of all metrics.

func (*Store) Gc

func (s *Store) Gc() error

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

func (s *Store) MarshalJSON() (b []byte, err error)

MarshalJSON returns a JSON byte string representing the Store.

func (*Store) StartGcLoop

func (s *Store) StartGcLoop(duration time.Duration)

StartGcLoop runs a permanent goroutine to expire metrics every duration.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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