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(e *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 the whether an exemplar exists.
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 ¶
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 returns if an exemplar exists or not. 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 ¶
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(e *exemplar.Exemplar) bool
Exemplar writes the exemplar of the current sample into the passed exemplar. It returns if an exemplar exists.
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 ¶
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 ¶
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 ¶
func (p *ProtobufParser) Comment() []byte
Comment always returns nil because comments aren't supported by the protobuf format.
func (*ProtobufParser) Exemplar ¶
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 examplars, call the Exemplar method repeatedly until it returns false.
func (*ProtobufParser) Help ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
func (p *ProtobufParser) Unit() ([]byte, []byte)
Unit always returns (nil, nil) because units aren't supported by the protobuf format.