Exemplars keys.
const (
AttachmentKeySpanContext = "SpanContext"
)
Attachments is a map of extra values associated with a recorded data point.
type Attachments map[string]interface{}
Bucket represents a single bucket (value range) in a distribution.
type Bucket struct { // Count is the number of values in each bucket of the histogram, as described in // bucket_bounds. Count int64 // Exemplar associated with this bucket (if any). Exemplar *Exemplar }
BucketOptions describes the bounds of the histogram buckets in this distribution.
type BucketOptions struct { // Bounds specifies a set of bucket upper bounds. // This defines len(bounds) + 1 (= N) buckets. The boundaries for bucket // index i are: // // [0, Bounds[i]) for i == 0 // [Bounds[i-1], Bounds[i]) for 0 < i < N-1 // [Bounds[i-1], +infinity) for i == N-1 Bounds []float64 }
Descriptor holds metadata about a metric.
type Descriptor struct { Name string // full name of the metric Description string // human-readable description Unit Unit // units for the measure Type Type // type of measure LabelKeys []LabelKey // label keys }
Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.
type Distribution struct { // Count is the number of values in the population. Must be non-negative. This value // must equal the sum of the values in bucket_counts if a histogram is // provided. Count int64 // Sum is the sum of the values in the population. If count is zero then this field // must be zero. Sum float64 // SumOfSquaredDeviation is the sum of squared deviations from the mean of the values in the // population. For values x_i this is: // // Sum[i=1..n]((x_i - mean)^2) // // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition // describes Welford's method for accumulating this sum in one pass. // // If count is zero then this field must be zero. SumOfSquaredDeviation float64 // BucketOptions describes the bounds of the histogram buckets in this // distribution. // // A Distribution may optionally contain a histogram of the values in the // population. // // If nil, there is no associated histogram. BucketOptions *BucketOptions // Bucket If the distribution does not have a histogram, then omit this field. // If there is a histogram, then the sum of the values in the Bucket counts // must equal the value in the count field of the distribution. Buckets []Bucket }
Exemplar is an example data point associated with each bucket of a distribution type aggregation.
Their purpose is to provide an example of the kind of thing (request, RPC, trace span, etc.) that resulted in that measurement.
type Exemplar struct { Value float64 // the value that was recorded Timestamp time.Time // the time the value was recorded Attachments Attachments // attachments (if any) }
LabelKey represents key of a label. It has optional description attribute.
type LabelKey struct { Key string Description string }
LabelValue represents the value of a label. The zero value represents a missing label value, which may be treated differently to an empty string value by some back ends.
type LabelValue struct { Value string // string value of the label Present bool // flag that indicated whether a value is present or not }
func NewLabelValue(val string) LabelValue
NewLabelValue creates a new non-nil LabelValue that represents the given string.
Metric represents a quantity measured against a resource with different label value combinations.
type Metric struct { Descriptor Descriptor // metric descriptor Resource *resource.Resource // resource against which this was measured TimeSeries []*TimeSeries // one time series for each combination of label values }
Point is a single data point of a time series.
type Point struct { // Time is the point in time that this point represents in a time series. Time time.Time // Value is the value of this point. Prefer using ReadValue to switching on // the value type, since new value types might be added. Value interface{} }
func NewDistributionPoint(t time.Time, val *Distribution) Point
NewDistributionPoint creates a new Point holding a Distribution value.
func NewFloat64Point(t time.Time, val float64) Point
NewFloat64Point creates a new Point holding a float64 value.
func NewInt64Point(t time.Time, val int64) Point
NewInt64Point creates a new Point holding an int64 value.
func NewSummaryPoint(t time.Time, val *Summary) Point
NewSummaryPoint creates a new Point holding a Summary value.
func (p Point) ReadValue(vv ValueVisitor)
ReadValue accepts a ValueVisitor and calls the appropriate method with the value of this point. Consumers of Point should use this in preference to switching on the type of the value directly, since new value types may be added.
Snapshot represents percentiles over an arbitrary time. The values in this struct can be reset at arbitrary unknown times, with the requirement that all of them are reset at the same time.
type Snapshot struct { // Count is the number of values in the snapshot. Optional since some systems don't // expose this. Set to 0 if not available. Count int64 // Sum is the sum of values in the snapshot. Optional since some systems don't // expose this. If count is 0 then this field must be zero. Sum float64 // Percentiles is a map from percentile (range (0-100.0]) to the value of // the percentile. Percentiles map[float64]float64 }
Summary is a representation of percentiles.
type Summary struct { // Count is the cumulative count (if available). Count int64 // Sum is the cumulative sum of values (if available). Sum float64 // HasCountAndSum is true if Count and Sum are available. HasCountAndSum bool // Snapshot represents percentiles calculated over an arbitrary time window. // The values in this struct can be reset at arbitrary unknown times, with // the requirement that all of them are reset at the same time. Snapshot Snapshot }
TimeSeries is a sequence of points associated with a combination of label values.
type TimeSeries struct { LabelValues []LabelValue // label values, same order as keys in the metric descriptor Points []Point // points sequence StartTime time.Time // time we started recording this time series }
Type is the overall type of metric, including its value type and whether it represents a cumulative total (since the start time) or if it represents a gauge value.
type Type int
Metric types.
const ( TypeGaugeInt64 Type = iota TypeGaugeFloat64 TypeGaugeDistribution TypeCumulativeInt64 TypeCumulativeFloat64 TypeCumulativeDistribution TypeSummary )
func (i Type) String() string
Unit is a string encoded according to the case-sensitive abbreviations from the Unified Code for Units of Measure: http://unitsofmeasure.org/ucum.html
type Unit string
Predefined units. To record against a unit not represented here, create your own Unit type constant from a string.
const ( UnitDimensionless Unit = "1" UnitBytes Unit = "By" UnitMilliseconds Unit = "ms" )
ValueVisitor allows reading the value of a point.
type ValueVisitor interface { VisitFloat64Value(float64) VisitInt64Value(int64) VisitDistributionValue(*Distribution) VisitSummaryValue(*Summary) }