const ( // AlertNameLabel is the name of the label containing the an alert's name. AlertNameLabel = "alertname" // ExportedLabelPrefix is the prefix to prepend to the label names present in // exported metrics if a label of the same name is added by the server. ExportedLabelPrefix = "exported_" // MetricNameLabel is the label name indicating the metric name of a // timeseries. MetricNameLabel = "__name__" // SchemeLabel is the name of the label that holds the scheme on which to // scrape a target. SchemeLabel = "__scheme__" // AddressLabel is the name of the label that holds the address of // a scrape target. AddressLabel = "__address__" // MetricsPathLabel is the name of the label that holds the path on which to // scrape a target. MetricsPathLabel = "__metrics_path__" // ReservedLabelPrefix is a prefix which is not legal in user-supplied // label names. ReservedLabelPrefix = "__" // MetaLabelPrefix is a prefix for labels that provide meta information. // Labels with this prefix are used for intermediate label processing and // will not be attached to time series. MetaLabelPrefix = "__meta_" // TmpLabelPrefix is a prefix for temporary labels as part of relabelling. // Labels with this prefix are used for intermediate label processing and // will not be attached to time series. This is reserved for use in // Prometheus configuration files by users. TmpLabelPrefix = "__tmp_" // ParamLabelPrefix is a prefix for labels that provide URL parameters // used to scrape a target. ParamLabelPrefix = "__param_" // JobLabel is the label name indicating the job from which a timeseries // was scraped. JobLabel = "job" // InstanceLabel is the label name used for the instance label. InstanceLabel = "instance" // BucketLabel is used for the label that defines the upper bound of a // bucket of a histogram ("le" -> "less or equal"). BucketLabel = "le" // QuantileLabel is used for the label that defines the quantile in a // summary. QuantileLabel = "quantile" )
const ( // Earliest is the earliest Time representable. Handy for // initializing a high watermark. Earliest = Time(math.MinInt64) // Latest is the latest Time representable. Handy for initializing // a low watermark. Latest = Time(math.MaxInt64) )
const SeparatorByte byte = 255
SeparatorByte is a byte that cannot occur in valid UTF-8 sequences and is used to separate label names, label values, and other strings from each other when calculating their combined hash value (aka signature aka fingerprint).
var ( // ZeroSamplePair is the pseudo zero-value of SamplePair used to signal a // non-existing sample pair. It is a SamplePair with timestamp Earliest and // value 0.0. Note that the natural zero value of SamplePair has a timestamp // of 0, which is possible to appear in a real SamplePair and thus not // suitable to signal a non-existing SamplePair. ZeroSamplePair = SamplePair{Timestamp: Earliest} // ZeroSample is the pseudo zero-value of Sample used to signal a // non-existing sample. It is a Sample with timestamp Earliest, value 0.0, // and metric nil. Note that the natural zero value of Sample has a timestamp // of 0, which is possible to appear in a real Sample and thus not suitable // to signal a non-existing Sample. ZeroSample = Sample{Timestamp: Earliest} )
var LabelNameRE = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$")
LabelNameRE is a regular expression matching valid label names.
var ( MetricNameRE = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_:]*$`) )
func IsValidMetricName(n LabelValue) bool
IsValidMetricName returns true iff name matches the pattern of MetricNameRE.
func LabelsToSignature(labels map[string]string) uint64
LabelsToSignature returns a quasi-unique signature (i.e., fingerprint) for a given label set. (Collisions are possible but unlikely if the number of label sets the function is applied to is small.)
func SignatureForLabels(m Metric, labels ...LabelName) uint64
SignatureForLabels works like LabelsToSignature but takes a Metric as parameter (rather than a label map) and only includes the labels with the specified LabelNames into the signature calculation. The labels passed in will be sorted by this function.
func SignatureWithoutLabels(m Metric, labels map[LabelName]struct{}) uint64
SignatureWithoutLabels works like LabelsToSignature but takes a Metric as parameter (rather than a label map) and excludes the labels with any of the specified LabelNames from the signature calculation.
type Alert struct { // Label value pairs for purpose of aggregation, matching, and disposition // dispatching. This must minimally include an "alertname" label. Labels LabelSet `json:"labels"` // Extra key/value information which does not define alert identity. Annotations LabelSet `json:"annotations"` // The known time range for this alert. Both ends are optional. StartsAt time.Time `json:"startsAt,omitempty"` EndsAt time.Time `json:"endsAt,omitempty"` GeneratorURL string `json:"generatorURL"` }
Alert is a generic representation of an alert in the Prometheus eco-system.
func (a *Alert) Fingerprint() Fingerprint
Fingerprint returns a unique hash for the alert. It is equivalent to the fingerprint of the alert's label set.
func (a *Alert) Name() string
Name returns the name of the alert. It is equivalent to the "alertname" label.
func (a *Alert) Resolved() bool
Resolved returns true iff the activity interval ended in the past.
func (a *Alert) ResolvedAt(ts time.Time) bool
ResolvedAt returns true off the activity interval ended before the given timestamp.
func (a *Alert) Status() AlertStatus
Status returns the status of the alert.
func (a *Alert) String() string
func (a *Alert) Validate() error
Validate checks whether the alert data is inconsistent.
type AlertStatus string
const ( AlertFiring AlertStatus = "firing" AlertResolved AlertStatus = "resolved" )
type Alerts []*Alert
Alert is a list of alerts that can be sorted in chronological order.
func (as Alerts) HasFiring() bool
HasFiring returns true iff one of the alerts is not resolved.
func (as Alerts) Len() int
func (as Alerts) Less(i, j int) bool
func (as Alerts) Status() AlertStatus
Status returns StatusFiring iff at least one of the alerts is firing.
func (as Alerts) Swap(i, j int)
type Duration time.Duration
Duration wraps time.Duration. It is used to parse the custom duration format from YAML. This type should not propagate beyond the scope of input/output processing.
func ParseDuration(durationStr string) (Duration, error)
StringToDuration parses a string into a time.Duration, assuming that a year always has 365d, a week always has 7d, and a day always has 24h.
func (d Duration) MarshalYAML() (interface{}, error)
MarshalYAML implements the yaml.Marshaler interface.
func (d Duration) String() string
func (d *Duration) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.Unmarshaler interface.
type Fingerprint uint64
Fingerprint provides a hash-capable representation of a Metric. For our purposes, FNV-1A 64-bit is used.
func FingerprintFromString(s string) (Fingerprint, error)
FingerprintFromString transforms a string representation into a Fingerprint.
func ParseFingerprint(s string) (Fingerprint, error)
ParseFingerprint parses the input string into a fingerprint.
func (f Fingerprint) String() string
type FingerprintSet map[Fingerprint]struct{}
FingerprintSet is a set of Fingerprints.
func (s FingerprintSet) Equal(o FingerprintSet) bool
Equal returns true if both sets contain the same elements (and not more).
func (s FingerprintSet) Intersection(o FingerprintSet) FingerprintSet
Intersection returns the elements contained in both sets.
type Fingerprints []Fingerprint
Fingerprints represents a collection of Fingerprint subject to a given natural sorting scheme. It implements sort.Interface.
func (f Fingerprints) Len() int
Len implements sort.Interface.
func (f Fingerprints) Less(i, j int) bool
Less implements sort.Interface.
func (f Fingerprints) Swap(i, j int)
Swap implements sort.Interface.
type Interval struct { Start, End Time }
Interval describes and interval between two timestamps.
type LabelName string
A LabelName is a key for a LabelSet or Metric. It has a value associated therewith.
func (ln LabelName) IsValid() bool
IsValid is true iff the label name matches the pattern of LabelNameRE.
func (ln *LabelName) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the json.Unmarshaler interface.
func (ln *LabelName) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.Unmarshaler interface.
type LabelNames []LabelName
LabelNames is a sortable LabelName slice. In implements sort.Interface.
func (l LabelNames) Len() int
func (l LabelNames) Less(i, j int) bool
func (l LabelNames) String() string
func (l LabelNames) Swap(i, j int)
type LabelPair struct { Name LabelName Value LabelValue }
LabelPair pairs a name with a value.
type LabelPairs []*LabelPair
LabelPairs is a sortable slice of LabelPair pointers. It implements sort.Interface.
func (l LabelPairs) Len() int
func (l LabelPairs) Less(i, j int) bool
func (l LabelPairs) Swap(i, j int)
type LabelSet map[LabelName]LabelValue
A LabelSet is a collection of LabelName and LabelValue pairs. The LabelSet may be fully-qualified down to the point where it may resolve to a single Metric in the data store or not. All operations that occur within the realm of a LabelSet can emit a vector of Metric entities to which the LabelSet may match.
func (ls LabelSet) Before(o LabelSet) bool
Before compares the metrics, using the following criteria:
If m has fewer labels than o, it is before o. If it has more, it is not.
If the number of labels is the same, the superset of all label names is sorted alphanumerically. The first differing label pair found in that order determines the outcome: If the label does not exist at all in m, then m is before o, and vice versa. Otherwise the label value is compared alphanumerically.
If m and o are equal, the method returns false.
func (ls LabelSet) Clone() LabelSet
Clone returns a copy of the label set.
func (ls LabelSet) Equal(o LabelSet) bool
Equal returns true iff both label sets have exactly the same key/value pairs.
func (ls LabelSet) FastFingerprint() Fingerprint
FastFingerprint returns the LabelSet's Fingerprint calculated by a faster hashing algorithm, which is, however, more susceptible to hash collisions.
func (ls LabelSet) Fingerprint() Fingerprint
Fingerprint returns the LabelSet's fingerprint.
func (l LabelSet) Merge(other LabelSet) LabelSet
Merge is a helper function to non-destructively merge two label sets.
func (l LabelSet) String() string
func (l *LabelSet) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the json.Unmarshaler interface.
func (ls LabelSet) Validate() error
Validate checks whether all names and values in the label set are valid.
type LabelValue string
A LabelValue is an associated value for a LabelName.
func (lv LabelValue) IsValid() bool
IsValid returns true iff the string is a valid UTF8.
type LabelValues []LabelValue
LabelValues is a sortable LabelValue slice. It implements sort.Interface.
func (l LabelValues) Len() int
func (l LabelValues) Less(i, j int) bool
func (l LabelValues) Swap(i, j int)
type Matcher struct { Name LabelName `json:"name"` Value string `json:"value"` IsRegex bool `json:"isRegex"` }
Matcher describes a matches the value of a given label.
func (m *Matcher) UnmarshalJSON(b []byte) error
func (m *Matcher) Validate() error
Validate returns true iff all fields of the matcher have valid values.
type Matrix []*SampleStream
Matrix is a list of time series.
func (m Matrix) Len() int
func (m Matrix) Less(i, j int) bool
func (mat Matrix) String() string
func (m Matrix) Swap(i, j int)
func (Matrix) Type() ValueType
type Metric LabelSet
A Metric is similar to a LabelSet, but the key difference is that a Metric is a singleton and refers to one and only one stream of samples.
func (m Metric) Before(o Metric) bool
Before compares the metrics' underlying label sets.
func (m Metric) Clone() Metric
Clone returns a copy of the Metric.
func (m Metric) Equal(o Metric) bool
Equal compares the metrics.
func (m Metric) FastFingerprint() Fingerprint
FastFingerprint returns a Metric's Fingerprint calculated by a faster hashing algorithm, which is, however, more susceptible to hash collisions.
func (m Metric) Fingerprint() Fingerprint
Fingerprint returns a Metric's Fingerprint.
func (m Metric) String() string
type Sample struct { Metric Metric `json:"metric"` Value SampleValue `json:"value"` Timestamp Time `json:"timestamp"` }
Sample is a sample pair associated with a metric.
func (s *Sample) Equal(o *Sample) bool
Equal compares first the metrics, then the timestamp, then the value. The sematics of value equality is defined by SampleValue.Equal.
func (s Sample) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (s Sample) String() string
func (s *Sample) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type SamplePair struct { Timestamp Time Value SampleValue }
SamplePair pairs a SampleValue with a Timestamp.
func (s *SamplePair) Equal(o *SamplePair) bool
Equal returns true if this SamplePair and o have equal Values and equal Timestamps. The sematics of Value equality is defined by SampleValue.Equal.
func (s SamplePair) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (s SamplePair) String() string
func (s *SamplePair) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type SampleStream struct { Metric Metric `json:"metric"` Values []SamplePair `json:"values"` }
SampleStream is a stream of Values belonging to an attached COWMetric.
func (ss SampleStream) String() string
type SampleValue float64
A SampleValue is a representation of a value for a given sample at a given time.
func (v SampleValue) Equal(o SampleValue) bool
Equal returns true if the value of v and o is equal or if both are NaN. Note that v==o is false if both are NaN. If you want the conventional float behavior, use == to compare two SampleValues.
func (v SampleValue) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (v SampleValue) String() string
func (v *SampleValue) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type Samples []*Sample
Samples is a sortable Sample slice. It implements sort.Interface.
func (s Samples) Equal(o Samples) bool
Equal compares two sets of samples and returns true if they are equal.
func (s Samples) Len() int
func (s Samples) Less(i, j int) bool
Less compares first the metrics, then the timestamp.
func (s Samples) Swap(i, j int)
type Scalar struct { Value SampleValue `json:"value"` Timestamp Time `json:"timestamp"` }
Scalar is a scalar value evaluated at the set timestamp.
func (s Scalar) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (s Scalar) String() string
func (*Scalar) Type() ValueType
func (s *Scalar) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type Silence struct { ID uint64 `json:"id,omitempty"` Matchers []*Matcher `json:"matchers"` StartsAt time.Time `json:"startsAt"` EndsAt time.Time `json:"endsAt"` CreatedAt time.Time `json:"createdAt,omitempty"` CreatedBy string `json:"createdBy"` Comment string `json:"comment,omitempty"` }
Silence defines the representation of a silence definiton in the Prometheus eco-system.
func (s *Silence) Validate() error
Validate returns true iff all fields of the silence have valid values.
type String struct { Value string `json:"value"` Timestamp Time `json:"timestamp"` }
String is a string value evaluated at the set timestamp.
func (s String) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (s *String) String() string
func (*String) Type() ValueType
func (s *String) UnmarshalJSON(b []byte) error
UnmarshalJSON implements json.Unmarshaler.
type Time int64
Time is the number of milliseconds since the epoch (1970-01-01 00:00 UTC) excluding leap seconds.
func Now() Time
Now returns the current time as a Time.
func TimeFromUnix(t int64) Time
TimeFromUnix returns the Time equivalent to the Unix Time t provided in seconds.
func TimeFromUnixNano(t int64) Time
TimeFromUnixNano returns the Time equivalent to the Unix Time t provided in nanoseconds.
func (t Time) Add(d time.Duration) Time
Add returns the Time t + d.
func (t Time) After(o Time) bool
After reports whether the Time t is after o.
func (t Time) Before(o Time) bool
Before reports whether the Time t is before o.
func (t Time) Equal(o Time) bool
Equal reports whether two Times represent the same instant.
func (t Time) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface.
func (t Time) String() string
String returns a string representation of the Time.
func (t Time) Sub(o Time) time.Duration
Sub returns the Duration t - o.
func (t Time) Time() time.Time
Time returns the time.Time representation of t.
func (t Time) Unix() int64
Unix returns t as a Unix time, the number of seconds elapsed since January 1, 1970 UTC.
func (t Time) UnixNano() int64
UnixNano returns t as a Unix time, the number of nanoseconds elapsed since January 1, 1970 UTC.
func (t *Time) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the json.Unmarshaler interface.
type Value interface { Type() ValueType String() string }
Value is a generic interface for values resulting from a query evaluation.
type ValueType int
const ( ValNone ValueType = iota ValScalar ValVector ValMatrix ValString )
func (et ValueType) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
func (e ValueType) String() string
func (et *ValueType) UnmarshalJSON(b []byte) error
type Vector []*Sample
Vector is basically only an alias for Samples, but the contract is that in a Vector, all Samples have the same timestamp.
func (vec Vector) Equal(o Vector) bool
Equal compares two sets of samples and returns true if they are equal.
func (vec Vector) Len() int
func (vec Vector) Less(i, j int) bool
Less compares first the metrics, then the timestamp.
func (vec Vector) String() string
func (vec Vector) Swap(i, j int)
func (Vector) Type() ValueType