Documentation ¶
Index ¶
- Constants
- type Entry
- type MetricType
- type OpenMetricsParser
- func (p *OpenMetricsParser) Comment() []byte
- func (p *OpenMetricsParser) Exemplar(e *exemplar.Exemplar) bool
- func (p *OpenMetricsParser) Help() ([]byte, []byte)
- func (p *OpenMetricsParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
- func (p *OpenMetricsParser) Metric(l *labels.Labels) string
- func (p *OpenMetricsParser) Next() (Entry, error)
- func (p *OpenMetricsParser) Series() ([]byte, *int64, float64)
- func (p *OpenMetricsParser) Type() ([]byte, MetricType)
- func (p *OpenMetricsParser) Unit() ([]byte, []byte)
- type Parser
- type PromParser
- func (p *PromParser) Comment() []byte
- func (p *PromParser) Exemplar(*exemplar.Exemplar) bool
- func (p *PromParser) Help() ([]byte, []byte)
- func (p *PromParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
- func (p *PromParser) Metric(l *labels.Labels) string
- func (p *PromParser) Next() (Entry, error)
- func (p *PromParser) Series() ([]byte, *int64, float64)
- func (p *PromParser) Type() ([]byte, MetricType)
- func (p *PromParser) Unit() ([]byte, []byte)
- type ProtobufParser
- func (p *ProtobufParser) Comment() []byte
- func (p *ProtobufParser) Exemplar(ex *exemplar.Exemplar) bool
- func (p *ProtobufParser) Help() ([]byte, []byte)
- func (p *ProtobufParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
- func (p *ProtobufParser) Metric(l *labels.Labels) string
- func (p *ProtobufParser) Next() (Entry, error)
- func (p *ProtobufParser) Series() ([]byte, *int64, float64)
- func (p *ProtobufParser) Type() ([]byte, MetricType)
- func (p *ProtobufParser) Unit() ([]byte, []byte)
Constants ¶
const ( MetricTypeCounter = MetricType("counter") MetricTypeGauge = MetricType("gauge") MetricTypeHistogram = MetricType("histogram") MetricTypeGaugeHistogram = MetricType("gaugehistogram") MetricTypeSummary = MetricType("summary") MetricTypeInfo = MetricType("info") MetricTypeStateset = MetricType("stateset") MetricTypeUnknown = MetricType("unknown") )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type OpenMetricsParser ¶
type OpenMetricsParser struct {
// contains filtered or unexported fields
}
OpenMetricsParser parses samples from a byte slice of samples in the official OpenMetrics text exposition format. This is based on the working draft https://docs.google.com/document/u/1/d/1KwV0mAXwwbvvifBvDKH_LU1YjyXE_wxCkHNoCGq1GX0/edit
func (*OpenMetricsParser) Comment ¶
func (p *OpenMetricsParser) Comment() []byte
Comment returns the text of the current comment. Must only be called after Next returned a comment entry. The returned byte slice becomes invalid after the next call to Next.
func (*OpenMetricsParser) Exemplar ¶
func (p *OpenMetricsParser) Exemplar(e *exemplar.Exemplar) bool
Exemplar writes the exemplar of the current sample into the passed exemplar. It returns whether an exemplar exists. As OpenMetrics only ever has one exemplar per sample, every call after the first (for the same sample) will always return false.
func (*OpenMetricsParser) Help ¶
func (p *OpenMetricsParser) Help() ([]byte, []byte)
Help returns the metric name and help text in the current entry. Must only be called after Next returned a help entry. The returned byte slices become invalid after the next call to Next.
func (*OpenMetricsParser) Histogram ¶ added in v0.40.0
func (p *OpenMetricsParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
Histogram returns (nil, nil, nil, nil) for now because OpenMetrics does not support sparse histograms yet.
func (*OpenMetricsParser) Metric ¶
func (p *OpenMetricsParser) Metric(l *labels.Labels) string
Metric writes the labels of the current sample into the passed labels. It returns the string from which the metric was parsed.
func (*OpenMetricsParser) Next ¶
func (p *OpenMetricsParser) Next() (Entry, error)
Next advances the parser to the next sample. It returns false if no more samples were read or an error occurred.
func (*OpenMetricsParser) Series ¶
func (p *OpenMetricsParser) Series() ([]byte, *int64, float64)
Series returns the bytes of the series, the timestamp if set, and the value of the current sample.
func (*OpenMetricsParser) Type ¶
func (p *OpenMetricsParser) Type() ([]byte, MetricType)
Type returns the metric name and type in the current entry. Must only be called after Next returned a type entry. The returned byte slices become invalid after the next call to Next.
func (*OpenMetricsParser) Unit ¶
func (p *OpenMetricsParser) Unit() ([]byte, []byte)
Unit returns the metric name and unit in the current entry. Must only be called after Next returned a unit entry. The returned byte slices become invalid after the next call to Next.
type Parser ¶
type Parser interface { // Series returns the bytes of a series with a simple float64 as a // value, the timestamp if set, and the value of the current sample. Series() ([]byte, *int64, float64) // Histogram returns the bytes of a series with a sparse histogram as a // value, the timestamp if set, and the histogram in the current sample. // Depending on the parsed input, the function returns an (integer) Histogram // or a FloatHistogram, with the respective other return value being nil. Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram) // Help returns the metric name and help text in the current entry. // Must only be called after Next returned a help entry. // The returned byte slices become invalid after the next call to Next. Help() ([]byte, []byte) // Type returns the metric name and type in the current entry. // Must only be called after Next returned a type entry. // The returned byte slices become invalid after the next call to Next. Type() ([]byte, MetricType) // Unit returns the metric name and unit in the current entry. // Must only be called after Next returned a unit entry. // The returned byte slices become invalid after the next call to Next. Unit() ([]byte, []byte) // Comment returns the text of the current comment. // Must only be called after Next returned a comment entry. // The returned byte slice becomes invalid after the next call to Next. Comment() []byte // Metric writes the labels of the current sample into the passed labels. // It returns the string from which the metric was parsed. Metric(l *labels.Labels) string // Exemplar writes the exemplar of the current sample into the passed // exemplar. It can be called repeatedly to retrieve multiple exemplars // for the same sample. It returns false once all exemplars are // retrieved (including the case where no exemplars exist at all). Exemplar(l *exemplar.Exemplar) bool // Next advances the parser to the next sample. It returns false if no // more samples were read or an error occurred. Next() (Entry, error) }
Parser parses samples from a byte slice of samples in the official Prometheus and OpenMetrics text exposition formats.
func New ¶
New returns a new parser of the byte slice.
This function always returns a valid parser, but might additionally return an error if the content type cannot be parsed.
func NewOpenMetricsParser ¶
NewOpenMetricsParser returns a new parser of the byte slice.
func NewPromParser ¶
NewPromParser returns a new parser of the byte slice.
func NewProtobufParser ¶ added in v0.40.0
NewProtobufParser returns a parser for the payload in the byte slice.
type PromParser ¶
type PromParser struct {
// contains filtered or unexported fields
}
PromParser parses samples from a byte slice of samples in the official Prometheus text exposition format.
func (*PromParser) Comment ¶
func (p *PromParser) Comment() []byte
Comment returns the text of the current comment. Must only be called after Next returned a comment entry. The returned byte slice becomes invalid after the next call to Next.
func (*PromParser) Exemplar ¶
func (p *PromParser) Exemplar(*exemplar.Exemplar) bool
Exemplar implements the Parser interface. However, since the classic Prometheus text format does not support exemplars, this implementation simply returns false and does nothing else.
func (*PromParser) Help ¶
func (p *PromParser) Help() ([]byte, []byte)
Help returns the metric name and help text in the current entry. Must only be called after Next returned a help entry. The returned byte slices become invalid after the next call to Next.
func (*PromParser) Histogram ¶ added in v0.40.0
func (p *PromParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
Histogram returns (nil, nil, nil, nil) for now because the Prometheus text format does not support sparse histograms yet.
func (*PromParser) Metric ¶
func (p *PromParser) Metric(l *labels.Labels) string
Metric writes the labels of the current sample into the passed labels. It returns the string from which the metric was parsed.
func (*PromParser) Next ¶
func (p *PromParser) Next() (Entry, error)
Next advances the parser to the next sample. It returns false if no more samples were read or an error occurred.
func (*PromParser) Series ¶
func (p *PromParser) Series() ([]byte, *int64, float64)
Series returns the bytes of the series, the timestamp if set, and the value of the current sample.
func (*PromParser) Type ¶
func (p *PromParser) Type() ([]byte, MetricType)
Type returns the metric name and type in the current entry. Must only be called after Next returned a type entry. The returned byte slices become invalid after the next call to Next.
func (*PromParser) Unit ¶
func (p *PromParser) Unit() ([]byte, []byte)
Unit returns the metric name and unit in the current entry. Must only be called after Next returned a unit entry. The returned byte slices become invalid after the next call to Next.
type ProtobufParser ¶ added in v0.40.0
type ProtobufParser struct {
// contains filtered or unexported fields
}
ProtobufParser is a very inefficient way of unmarshaling the old Prometheus protobuf format and then present it as it if were parsed by a Prometheus-2-style text parser. This is only done so that we can easily plug in the protobuf format into Prometheus 2. For future use (with the final format that will be used for native histograms), we have to revisit the parsing. A lot of the efficiency tricks of the Prometheus-2-style parsing could be used in a similar fashion (byte-slice pointers into the raw payload), which requires some hand-coded protobuf handling. But the current parsers all expect the full series name (metric name plus label pairs) as one string, which is not how things are represented in the protobuf format. If the re-arrangement work is actually causing problems (which has to be seen), that expectation needs to be changed.
func (*ProtobufParser) Comment ¶ added in v0.40.0
func (p *ProtobufParser) Comment() []byte
Comment always returns nil because comments aren't supported by the protobuf format.
func (*ProtobufParser) Exemplar ¶ added in v0.40.0
func (p *ProtobufParser) Exemplar(ex *exemplar.Exemplar) bool
Exemplar writes the exemplar of the current sample into the passed exemplar. It returns if an exemplar exists or not. In case of a native histogram, the legacy bucket section is still used for exemplars. To ingest all exemplars, call the Exemplar method repeatedly until it returns false.
func (*ProtobufParser) Help ¶ added in v0.40.0
func (p *ProtobufParser) Help() ([]byte, []byte)
Help returns the metric name and help text in the current entry. Must only be called after Next returned a help entry. The returned byte slices become invalid after the next call to Next.
func (*ProtobufParser) Histogram ¶ added in v0.40.0
func (p *ProtobufParser) Histogram() ([]byte, *int64, *histogram.Histogram, *histogram.FloatHistogram)
Histogram returns the bytes of a series with a native histogram as a value, the timestamp if set, and the native histogram in the current sample.
The Compact method is called before returning the Histogram (or FloatHistogram).
If the SampleCountFloat or the ZeroCountFloat in the proto message is > 0, the histogram is parsed and returned as a FloatHistogram and nil is returned as the (integer) Histogram return value. Otherwise, it is parsed and returned as an (integer) Histogram and nil is returned as the FloatHistogram return value.
func (*ProtobufParser) Metric ¶ added in v0.40.0
func (p *ProtobufParser) Metric(l *labels.Labels) string
Metric writes the labels of the current sample into the passed labels. It returns the string from which the metric was parsed.
func (*ProtobufParser) Next ¶ added in v0.40.0
func (p *ProtobufParser) Next() (Entry, error)
Next advances the parser to the next "sample" (emulating the behavior of a text format parser). It returns (EntryInvalid, io.EOF) if no samples were read.
func (*ProtobufParser) Series ¶ added in v0.40.0
func (p *ProtobufParser) Series() ([]byte, *int64, float64)
Series returns the bytes of a series with a simple float64 as a value, the timestamp if set, and the value of the current sample.
func (*ProtobufParser) Type ¶ added in v0.40.0
func (p *ProtobufParser) Type() ([]byte, MetricType)
Type returns the metric name and type in the current entry. Must only be called after Next returned a type entry. The returned byte slices become invalid after the next call to Next.
func (*ProtobufParser) Unit ¶ added in v0.40.0
func (p *ProtobufParser) Unit() ([]byte, []byte)
Unit always returns (nil, nil) because units aren't supported by the protobuf format.