Documentation ¶
Overview ¶
Package promext contains custom metric types and pure utility functions
Types and functions inside are at the lowest level and should not call Logger or other packages, to avoid cyclic dependency
Index ¶
- func CollectMetrics(c prometheus.Collector, filterLabels prometheus.Labels) ([]*dto.Metric, error)
- func DumpMetrics(prefix string, skipComments, skipZeroValues bool, ...) string
- func DumpMetricsFrom(prefix string, skipComments, skipZeroValues bool, ...) string
- func GetExportedMetricValue(metric *dto.Metric) float64
- func GetLabelValue(metric *dto.Metric, targetLabel string) string
- func MatchExportedMetrics(metrics []*dto.Metric, labels prometheus.Labels) []*dto.Metric
- func SumExportedMetrics(metricFamily *dto.MetricFamily, labels map[string]string) float64
- func SumMetricValues(c prometheus.Collector) float64
- func SumMetricValues2(c prometheus.Collector, filterLabels prometheus.Labels) float64
- func SumMetricValuesBy(c prometheus.Collector, keyLabel string, filterLabels prometheus.Labels) map[string]float64
- type LazyRWCounter
- type LazyRWCounterVec
- func (v *LazyRWCounterVec) Collect(ch chan<- prometheus.Metric)
- func (v *LazyRWCounterVec) CurryWith(labels prometheus.Labels) (*LazyRWCounterVec, error)
- func (v *LazyRWCounterVec) GetMetricWithLabelValues(lvs ...string) (LazyRWCounter, error)
- func (v *LazyRWCounterVec) MustCurryWith(labels prometheus.Labels) *LazyRWCounterVec
- func (v *LazyRWCounterVec) WithLabelValues(lvs ...string) LazyRWCounter
- type RWCounter
- type RWCounterVec
- func (v *RWCounterVec) CurryWith(labels prometheus.Labels) (*RWCounterVec, error)
- func (v *RWCounterVec) GetMetricWithLabelValues(lvs ...string) (RWCounter, error)
- func (v *RWCounterVec) MustCurryWith(labels prometheus.Labels) *RWCounterVec
- func (v *RWCounterVec) WithLabelValues(lvs ...string) RWCounter
- type RWGauge
- type RWGaugeVec
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CollectMetrics ¶
func CollectMetrics(c prometheus.Collector, filterLabels prometheus.Labels) ([]*dto.Metric, error)
CollectMetrics exports all metrics matching an optional set of labels.
The values are already final during the collection. They won't change despite being pointers.
func DumpMetrics ¶
func DumpMetrics(prefix string, skipComments, skipZeroValues bool, gatherers ...prometheus.Gatherer) string
DumpMetrics dumps matched metrics from the given gatherer(s) into the .prom text format
prefix can be empty to include all metrics
If no gatherers is provided, the DefaultGatherer is used
func DumpMetricsFrom ¶
func DumpMetricsFrom(prefix string, skipComments, skipZeroValues bool, collectors ...prometheus.Collector) string
DumpMetricsFrom dumps matched metrics from the given collectors into the .prom text format
prefix can be empty to include all metrics
Extra check is enabled by using prometheus.PedanticRegistry
func GetExportedMetricValue ¶
GetExportedMetricValue returns the value of the exported (protobuf) metric.
For Summary and Histogram, the sum of samples is returned
func GetLabelValue ¶
GetLabelValue reads the value of a specific label from the given metric.
If the label does not exist, an empty string is returned.
func MatchExportedMetrics ¶
MatchExportedMetrics lists metrics under a family by matching given labels
func SumExportedMetrics ¶
func SumExportedMetrics(metricFamily *dto.MetricFamily, labels map[string]string) float64
SumExportedMetrics returns the sum of values from metrics matching the labels
func SumMetricValues ¶
func SumMetricValues(c prometheus.Collector) float64
SumMetricValues sums all the values of a given Prometheus Collector (GaugeVec or CounterVec).
Note curried metric vectors would give the same result as uncurried ones.
func SumMetricValues2 ¶
func SumMetricValues2(c prometheus.Collector, filterLabels prometheus.Labels) float64
SumMetricValues2 sums all the values of a given Prometheus Collector (GaugeVec or CounterVec), with a set of labels for filtering.
Note curried metric vectors would give the same result as uncurried ones.
func SumMetricValuesBy ¶
func SumMetricValuesBy(c prometheus.Collector, keyLabel string, filterLabels prometheus.Labels) map[string]float64
SumMetricValuesBy sums all the values of a given Prometheus Collector (GaugeVec or CounterVec) by a specific label.
If the label does not exist for some of the metrics, the values would be summed under key="" in the resulting map.
Note curried metric vectors would give the same result as uncurried ones.
Types ¶
type LazyRWCounter ¶
type LazyRWCounter RWCounter
LazyRWCounter is prometheus.Counter with unsigned int64 type and getter, and only collected when not zero
type LazyRWCounterVec ¶
type LazyRWCounterVec struct {
RWCounterVec
}
LazyRWCounterVec is a lazy version of prometheus.CounterVec with unsigned int64 type and getter
Unlike the normal RWCounterVec, counters inside this vector are omitted from output collection if their values are zero
func NewLazyRWCounterVec ¶
func NewLazyRWCounterVec(opts prometheus.CounterOpts, labelNames []string) *LazyRWCounterVec
NewLazyRWCounterVec creates a lazy RWCounterVec based on the provided CounterOpts and label names
Unlike the normal counter-vector, all zero-valued counters are omitted from metric collection / dump
func (*LazyRWCounterVec) Collect ¶
func (v *LazyRWCounterVec) Collect(ch chan<- prometheus.Metric)
Collect implements prometheus.Collector, putting all non-zero counters to the given output channel
func (*LazyRWCounterVec) CurryWith ¶
func (v *LazyRWCounterVec) CurryWith(labels prometheus.Labels) (*LazyRWCounterVec, error)
CurryWith returns a vector curried with the provided labels
func (*LazyRWCounterVec) GetMetricWithLabelValues ¶
func (v *LazyRWCounterVec) GetMetricWithLabelValues(lvs ...string) (LazyRWCounter, error)
GetMetricWithLabelValues returns the Counter for the given slice of label values (same order as the variable labels in Desc).
func (*LazyRWCounterVec) MustCurryWith ¶
func (v *LazyRWCounterVec) MustCurryWith(labels prometheus.Labels) *LazyRWCounterVec
MustCurryWith returns a vector curried with the provided labels or panic
func (*LazyRWCounterVec) WithLabelValues ¶
func (v *LazyRWCounterVec) WithLabelValues(lvs ...string) LazyRWCounter
WithLabelValues returns the Counter for the given slice of label values or panic (same order as the variable labels in Desc).
type RWCounter ¶
type RWCounter interface { prometheus.Metric prometheus.Collector Get() uint64 Inc() uint64 Add(uint64) uint64 }
RWCounter is prometheus.Counter with unsigned int64 type and getter
The code is nearly 100% copy paste from prometheus.Counter. Use generics when available.
type RWCounterVec ¶
type RWCounterVec struct { *prometheus.MetricVec // contains filtered or unexported fields }
RWCounterVec is prometheus.CounterVec with unsigned int64 type and getter
The code is nearly 100% copy paste from prometheus.CounterVec. Use generics when available.
func NewRWCounterVec ¶
func NewRWCounterVec(opts prometheus.CounterOpts, labelNames []string) *RWCounterVec
NewRWCounterVec creates a new RWCounterVec based on the provided CounterOpts and label names
func (*RWCounterVec) CurryWith ¶
func (v *RWCounterVec) CurryWith(labels prometheus.Labels) (*RWCounterVec, error)
CurryWith returns a vector curried with the provided labels
func (*RWCounterVec) GetMetricWithLabelValues ¶
func (v *RWCounterVec) GetMetricWithLabelValues(lvs ...string) (RWCounter, error)
GetMetricWithLabelValues returns the Counter for the given slice of label values (same order as the variable labels in Desc).
func (*RWCounterVec) MustCurryWith ¶
func (v *RWCounterVec) MustCurryWith(labels prometheus.Labels) *RWCounterVec
MustCurryWith returns a vector curried with the provided labels or panic
func (*RWCounterVec) WithLabelValues ¶
func (v *RWCounterVec) WithLabelValues(lvs ...string) RWCounter
WithLabelValues returns the Counter for the given slice of label values or panic (same order as the variable labels in Desc).
type RWGauge ¶
type RWGauge interface { prometheus.Metric prometheus.Collector Get() int64 Set(int64) Inc() int64 Dec() int64 Add(int64) int64 Sub(int64) int64 WaitForZero(timeout time.Duration) bool }
RWGauge is prometheus.Gauge with signed int64 type and getter
The code is nearly 100% copy paste from prometheus.Gauge. Use generics when available.
type RWGaugeVec ¶
type RWGaugeVec struct { *prometheus.MetricVec // contains filtered or unexported fields }
RWGaugeVec is prometheus.GaugeVec with signed int64 type and getter
The code is nearly 100% copy paste from prometheus.GaugeVec. Use generics when available.
func NewRWGaugeVec ¶
func NewRWGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *RWGaugeVec
NewRWGaugeVec creates a new RWGaugeVec based on the provided GaugeOpts and label names
func (*RWGaugeVec) CurryWith ¶
func (v *RWGaugeVec) CurryWith(labels prometheus.Labels) (*RWGaugeVec, error)
CurryWith returns a vector curried with the provided labels
func (*RWGaugeVec) GetMetricWithLabelValues ¶
func (v *RWGaugeVec) GetMetricWithLabelValues(lvs ...string) (RWGauge, error)
GetMetricWithLabelValues returns the Gauge for the given slice of label values (same order as the variable labels in Desc).
func (*RWGaugeVec) MustCurryWith ¶
func (v *RWGaugeVec) MustCurryWith(labels prometheus.Labels) *RWGaugeVec
MustCurryWith returns a vector curried with the provided labels or panic
func (*RWGaugeVec) WithLabelValues ¶
func (v *RWGaugeVec) WithLabelValues(lvs ...string) RWGauge
WithLabelValues returns the Gauge for the given slice of label values or panic (same order as the variable labels in Desc).