Documentation ¶
Index ¶
- Constants
- Variables
- func D(d time.Duration) float64
- func PushIfNotDone(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) MarshalEasyJSON(w *jwriter.Writer)
- func (st *SampleTags) MarshalJSON() ([]byte, error)
- func (st *SampleTags) UnmarshalJSON(data []byte) error
- type Samples
- type Sink
- type Submetric
- type Summary
- type SystemTagSet
- func (i *SystemTagSet) Add(tag SystemTagSet)
- func (i *SystemTagSet) Has(tag SystemTagSet) bool
- func (i SystemTagSet) IsASystemTagSet() bool
- func (i SystemTagSet) Map() TagSet
- func (i *SystemTagSet) MarshalJSON() ([]byte, error)
- func (i SystemTagSet) SetString() string
- func (i SystemTagSet) String() string
- func (i *SystemTagSet) UnmarshalJSON(data []byte) error
- func (i *SystemTagSet) UnmarshalText(data []byte) error
- type TagSet
- 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 DefaultSystemTagSet = TagProto | TagSubproto | TagStatus | TagMethod | TagURL | TagName | TagGroup | TagCheck | TagCheck | TagError | TagErrorCode | TagTLSVersion | TagScenario | TagService
DefaultSystemTagSet includes all of the system tags emitted with metrics by default. Other tags that are not enabled by default include: iter, vu, ocsp_status, ip
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 PushIfNotDone ¶ added in v0.26.1
func PushIfNotDone(ctx context.Context, output chan<- SampleContainer, sample SampleContainer) bool
PushIfNotDone first checks if the supplied context is done 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) MarshalEasyJSON ¶ added in v0.28.0
func (st *SampleTags) MarshalEasyJSON(w *jwriter.Writer)
MarshalEasyJSON supports easyjson.Marshaler interface
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 SystemTagSet ¶ added in v0.26.0
type SystemTagSet uint32
SystemTagSet is a bitmask that is used to keep track which system tags should be included with which metrics.
const ( TagProto SystemTagSet = 1 << iota TagSubproto TagStatus TagMethod TagURL TagName TagGroup TagCheck TagError TagErrorCode TagTLSVersion TagScenario TagService // System tags not enabled by default. TagIter TagVU TagOCSPStatus TagIP )
Default system tags includes all of the system tags emitted with metrics by default.
func NewSystemTagSet ¶ added in v0.26.0
func NewSystemTagSet(tags ...SystemTagSet) *SystemTagSet
NewSystemTagSet returns a SystemTagSet from input.
func SystemTagSetString ¶ added in v0.26.0
func SystemTagSetString(s string) (SystemTagSet, error)
SystemTagSetString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func SystemTagSetValues ¶ added in v0.26.0
func SystemTagSetValues() []SystemTagSet
SystemTagSetValues returns all values of the enum
func ToSystemTagSet ¶ added in v0.26.0
func ToSystemTagSet(tags []string) *SystemTagSet
ToSystemTagSet converts list of tags to SystemTagSet TODO: emit error instead of discarding invalid values.
func (*SystemTagSet) Add ¶ added in v0.26.0
func (i *SystemTagSet) Add(tag SystemTagSet)
Add adds a tag to tag set.
func (*SystemTagSet) Has ¶ added in v0.26.0
func (i *SystemTagSet) Has(tag SystemTagSet) bool
Has checks a tag included in tag set.
func (SystemTagSet) IsASystemTagSet ¶ added in v0.26.0
func (i SystemTagSet) IsASystemTagSet() bool
IsASystemTagSet returns "true" if the value is listed in the enum definition. "false" otherwise
func (SystemTagSet) Map ¶ added in v0.26.0
func (i SystemTagSet) Map() TagSet
Map returns the TagSet with current value from SystemTagSet
func (*SystemTagSet) MarshalJSON ¶ added in v0.26.0
func (i *SystemTagSet) MarshalJSON() ([]byte, error)
MarshalJSON converts the SystemTagSet to a list (JS array).
func (SystemTagSet) SetString ¶ added in v0.26.0
func (i SystemTagSet) SetString() string
SetString returns comma separated list of the string representation of all values in the set
func (SystemTagSet) String ¶ added in v0.26.0
func (i SystemTagSet) String() string
func (*SystemTagSet) UnmarshalJSON ¶ added in v0.26.0
func (i *SystemTagSet) UnmarshalJSON(data []byte) error
UnmarshalJSON converts the tag list back to expected tag set.
func (*SystemTagSet) UnmarshalText ¶ added in v0.26.0
func (i *SystemTagSet) UnmarshalText(data []byte) error
UnmarshalText converts the tag list to SystemTagSet.
type TagSet ¶ added in v0.26.0
TagSet is a string to bool map (for lookup efficiency) that is used to keep track of which system tags and non-system tags to include.
func (*TagSet) MarshalJSON ¶ added in v0.28.0
MarshalJSON converts the TagSet to a list (JS array).
func (*TagSet) UnmarshalJSON ¶ added in v0.28.0
UnmarshalJSON converts the tag list back to expected tag set.
func (*TagSet) UnmarshalText ¶ added in v0.28.0
UnmarshalText converts the tag list to TagSet.
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.