Documentation ¶
Index ¶
- Constants
- Variables
- func D(d time.Duration) float64
- func PushIfNotCancelled(ctx context.Context, output chan<- SampleContainer, sample SampleContainer) bool
- func ToD(d float64) time.Duration
- type ConnectedSampleContainer
- type ConnectedSamples
- type CounterSink
- type DummySink
- type GaugeSink
- type Metric
- type MetricType
- type RateSink
- type Sample
- type SampleContainer
- type SampleTags
- func (st *SampleTags) CloneTags() map[string]string
- func (st *SampleTags) Contains(other *SampleTags) bool
- func (st *SampleTags) Get(key string) (string, bool)
- func (st *SampleTags) IsEmpty() bool
- func (st *SampleTags) IsEqual(other *SampleTags) bool
- func (st *SampleTags) MarshalJSON() ([]byte, error)
- func (st *SampleTags) UnmarshalJSON(data []byte) error
- type Samples
- type Sink
- type Submetric
- type Summary
- type Threshold
- type Thresholds
- type TrendSink
- type ValueType
Constants ¶
const ( Counter = MetricType(iota) // A counter that sums its data points Gauge // A gauge that displays the latest value Trend // A trend, min/max/avg/med are interesting Rate // A rate, displays % of values that aren't 0 )
Possible values for MetricType.
const ( Default = ValueType(iota) // Values are presented as-is Time // Values are timestamps (nanoseconds) Data // Values are data amounts (bytes) )
Possible values for ValueType.
Variables ¶
var ErrInvalidMetricType = errors.New("invalid metric type")
The serialized metric type is invalid.
var ErrInvalidValueType = errors.New("invalid value type")
The serialized value type is invalid.
Functions ¶
func PushIfNotCancelled ¶ added in v0.22.1
func PushIfNotCancelled(ctx context.Context, output chan<- SampleContainer, sample SampleContainer) bool
PushIfNotCancelled first checks if the supplied context is cancelled and doesn't push the sample container if it is.
Types ¶
type ConnectedSampleContainer ¶ added in v0.21.0
type ConnectedSampleContainer interface { SampleContainer GetTags() *SampleTags GetTime() time.Time }
ConnectedSampleContainer is an extension of the SampleContainer interface that should be implemented when emitted samples are connected and share the same time and tags.
type ConnectedSamples ¶ added in v0.21.0
type ConnectedSamples struct { Samples []Sample Tags *SampleTags Time time.Time }
ConnectedSamples is the simplest ConnectedSampleContainer implementation that will be used when there's no need for extra information
func (ConnectedSamples) GetSamples ¶ added in v0.21.0
func (cs ConnectedSamples) GetSamples() []Sample
GetSamples implements the SampleContainer and ConnectedSampleContainer interfaces and returns the stored slice with samples.
func (ConnectedSamples) GetTags ¶ added in v0.21.0
func (cs ConnectedSamples) GetTags() *SampleTags
GetTags implements ConnectedSampleContainer interface and returns stored tags.
func (ConnectedSamples) GetTime ¶ added in v0.21.0
func (cs ConnectedSamples) GetTime() time.Time
GetTime implements ConnectedSampleContainer interface and returns stored time.
type CounterSink ¶
func (*CounterSink) Add ¶
func (c *CounterSink) Add(s Sample)
func (*CounterSink) Calc ¶ added in v0.18.0
func (c *CounterSink) Calc()
type Metric ¶
type Metric struct { Name string `json:"name"` Type MetricType `json:"type"` Contains ValueType `json:"contains"` Tainted null.Bool `json:"tainted"` Thresholds Thresholds `json:"thresholds"` Submetrics []*Submetric `json:"submetrics"` Sub Submetric `json:"sub,omitempty"` Sink Sink `json:"-"` }
A Metric defines the shape of a set of data.
type MetricType ¶
type MetricType int
A MetricType specifies the type of a metric.
func (MetricType) MarshalJSON ¶
func (t MetricType) MarshalJSON() ([]byte, error)
MarshalJSON serializes a MetricType as a human readable string.
func (MetricType) String ¶
func (t MetricType) String() string
func (*MetricType) UnmarshalJSON ¶
func (t *MetricType) UnmarshalJSON(data []byte) error
UnmarshalJSON deserializes a MetricType from a string representation.
type Sample ¶
type Sample struct { Metric *Metric Time time.Time Tags *SampleTags Value float64 }
A Sample is a single measurement.
func (Sample) GetSamples ¶ added in v0.21.0
GetSamples implement the ConnectedSampleContainer interface for a single Sample, since it's obviously connected with itself :)
func (Sample) GetTags ¶ added in v0.21.0
func (s Sample) GetTags() *SampleTags
GetTags implements ConnectedSampleContainer interface and returns the sample's tags.
type SampleContainer ¶ added in v0.21.0
type SampleContainer interface {
GetSamples() []Sample
}
SampleContainer is a simple abstraction that allows sample producers to attach extra information to samples they return
func GetBufferedSamples ¶ added in v0.22.0
func GetBufferedSamples(input <-chan SampleContainer) (result []SampleContainer)
GetBufferedSamples will read all present (i.e. buffered or currently being pushed) values in the input channel and return them as a slice.
type SampleTags ¶ added in v0.21.0
type SampleTags struct {
// contains filtered or unexported fields
}
SampleTags is an immutable string[string] map for tags. Once a tag set is created, direct modification is prohibited. It has copy-on-write semantics and uses pointers for faster comparison between maps, since the same tag set is often used for multiple samples. All methods should not panic, even if they are called on a nil pointer.
func IntoSampleTags ¶ added in v0.21.0
func IntoSampleTags(data *map[string]string) *SampleTags
IntoSampleTags "consumes" the passed map and creates a new SampleTags struct with the data. The map is set to nil as a hint that it shouldn't be changed after it has been transformed into an "immutable" tag set. Oh, how I miss Rust and move semantics... :)
func NewSampleTags ¶ added in v0.21.0
func NewSampleTags(data map[string]string) *SampleTags
NewSampleTags *copies* the supplied tag set and returns a new SampleTags instance with the key-value pairs from it.
func (*SampleTags) CloneTags ¶ added in v0.21.0
func (st *SampleTags) CloneTags() map[string]string
CloneTags copies the underlying set of a sample tags and returns it. If the receiver is nil, it returns an empty non-nil map.
func (*SampleTags) Contains ¶ added in v0.21.0
func (st *SampleTags) Contains(other *SampleTags) bool
func (*SampleTags) Get ¶ added in v0.21.0
func (st *SampleTags) Get(key string) (string, bool)
Get returns an empty string and false if the the requested key is not present or its value and true if it is.
func (*SampleTags) IsEmpty ¶ added in v0.21.0
func (st *SampleTags) IsEmpty() bool
IsEmpty checks for a nil pointer or zero tags. It's necessary because of this envconfig issue: https://github.com/kelseyhightower/envconfig/issues/113
func (*SampleTags) IsEqual ¶ added in v0.21.0
func (st *SampleTags) IsEqual(other *SampleTags) bool
IsEqual tries to compare two tag sets with maximum efficiency.
func (*SampleTags) MarshalJSON ¶ added in v0.21.0
func (st *SampleTags) MarshalJSON() ([]byte, error)
MarshalJSON serializes SampleTags to a JSON string and caches the result. It is not thread safe in the sense that the Go race detector will complain if it's used concurrently, but no data should be corrupted.
func (*SampleTags) UnmarshalJSON ¶ added in v0.21.0
func (st *SampleTags) UnmarshalJSON(data []byte) error
UnmarshalJSON deserializes SampleTags from a JSON string.
type Samples ¶ added in v0.21.0
type Samples []Sample
Samples is just the simplest SampleContainer implementation that will be used when there's no need for extra information
func (Samples) GetSamples ¶ added in v0.21.0
GetSamples just implements the SampleContainer interface
type Submetric ¶ added in v0.13.0
type Submetric struct { Name string `json:"name"` Parent string `json:"parent"` Suffix string `json:"suffix"` Tags *SampleTags `json:"tags"` Metric *Metric `json:"-"` }
A Submetric represents a filtered dataset based on a parent metric.
func NewSubmetric ¶ added in v0.13.0
Creates a submetric from a name.
type Threshold ¶ added in v0.13.0
type Threshold struct { // Source is the text based source of the threshold Source string // LastFailed is a makrer if the last testing of this threshold failed LastFailed bool // AbortOnFail marks if a given threshold fails that the whole test should be aborted AbortOnFail bool // AbortGracePeriod is a the minimum amount of time a test should be running before a failing // this threshold will abort the test AbortGracePeriod types.NullDuration // contains filtered or unexported fields }
Threshold is a representation of a single threshold for a single metric
type Thresholds ¶ added in v0.13.0
Thresholds is the combination of all Thresholds for a given metric
func NewThresholds ¶ added in v0.13.0
func NewThresholds(sources []string) (Thresholds, error)
NewThresholds returns Thresholds objects representing the provided source strings
func (Thresholds) MarshalJSON ¶ added in v0.13.0
func (ts Thresholds) MarshalJSON() ([]byte, error)
MarshalJSON is implementation of json.Marshaler
func (*Thresholds) Run ¶ added in v0.13.0
Run processes all the thresholds with the provided Sink at the provided time and returns if any of them fails
func (*Thresholds) UnmarshalJSON ¶ added in v0.13.0
func (ts *Thresholds) UnmarshalJSON(data []byte) error
UnmarshalJSON is implementation of json.Unmarshaler
type TrendSink ¶
type ValueType ¶
type ValueType int
The type of values a metric contains.
func (ValueType) MarshalJSON ¶
MarshalJSON serializes a ValueType as a human readable string.
func (*ValueType) UnmarshalJSON ¶
UnmarshalJSON deserializes a ValueType from a string representation.