promcolls

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 21, 2022 License: Apache-2.0 Imports: 1 Imported by: 0

README

promcolls

Prometheus Collectors

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DescribeByCollect

func DescribeByCollect(c Collector, descs chan<- *prometheus.Desc)

DescribeByCollect is a helper to implement the Describe method of a custom Collector. It collects the metrics from the provided Collector and sends their descriptors to the provided channel.

If a Collector collects the same metrics throughout its lifetime, its Describe method can simply be implemented as:

func (c customCollector) Describe(ch chan<- *Desc) {
	DescribeByCollect(c, ch)
}

However, this will not work if the metrics collected change dynamically over the lifetime of the Collector in a way that their combined set of descriptors changes as well. The shortcut implementation will then violate the contract of the Describe method. If a Collector sometimes collects no metrics at all (for example vectors like CounterVec, GaugeVec, etc., which only collect metrics after a metric with a fully specified label set has been accessed), it might even get registered as an unchecked Collector (cf. the Register method of the Registerer interface). Hence, only use this shortcut implementation of Describe if you are certain to fulfill the contract.

The Collector example demonstrates a use of DescribeByCollect.

Types

type Collector

type Collector interface {
	// Describe sends the super-set of all possible descriptors of metrics
	// collected by this Collector to the provided channel and returns once
	// the last descriptor has been sent. The sent descriptors fulfill the
	// consistency and uniqueness requirements described in the Desc
	// documentation.
	//
	// It is valid if one and the same Collector sends duplicate
	// descriptors. Those duplicates are simply ignored. However, two
	// different Collectors must not send duplicate descriptors.
	//
	// Sending no descriptor at all marks the Collector as “unchecked”,
	// i.e. no checks will be performed at registration time, and the
	// Collector may yield any Metric it sees fit in its Collect method.
	//
	// This method idempotently sends the same descriptors throughout the
	// lifetime of the Collector. It may be called concurrently and
	// therefore must be implemented in a concurrency safe way.
	//
	// If a Collector encounters an error while executing this method, it
	// must send an invalid descriptor (created with NewInvalidDesc) to
	// signal the error to the registry.
	Describe(chan<- *prometheus.Desc)
	// Collect is called by the Prometheus registry when collecting
	// metrics. The implementation sends each collected metric via the
	// provided channel and returns once the last metric has been sent. The
	// descriptor of each sent metric is one of those returned by Describe
	// (unless the Collector is unchecked, see above). Returned metrics that
	// share the same descriptor must differ in their variable label
	// values.
	//
	// This method may be called concurrently and must therefore be
	// implemented in a concurrency safe way. Blocking occurs at the expense
	// of total performance of rendering all registered metrics. Ideally,
	// Collector implementations support concurrent readers.
	Collect(chan<- prometheus.Metric)
}

Collector is the interface implemented by anything that can be used by Prometheus to collect metrics. A Collector has to be registered for collection. See Registerer.Register.

The stock metrics provided by this package (Gauge, Counter, Summary, Histogram, Untyped) are also Collectors (which only ever collect one metric, namely itself). An implementer of Collector may, however, collect multiple metrics in a coordinated fashion and/or create metrics on the fly. Examples for collectors already implemented in this library are the metric vectors (i.e. collection of multiple instances of the same Metric but with different label values) like GaugeVec or SummaryVec, and the ExpvarCollector.

type SelfCollector

type SelfCollector struct {
	// contains filtered or unexported fields
}

selfCollector implements Collector for a single Metric so that the Metric collects itself. Add it as an anonymous field to a struct that implements Metric, and call init with the Metric itself as an argument.

func NewSelfCollector

func NewSelfCollector(self prometheus.Metric) *SelfCollector

NewSelfCollector provides the SelfCollector with a reference to the metric it is supposed to collect.

func (*SelfCollector) Collect

func (c *SelfCollector) Collect(ch chan<- prometheus.Metric)

Collect implements Collector.

func (*SelfCollector) Describe

func (c *SelfCollector) Describe(ch chan<- *prometheus.Desc)

Describe implements Collector.

func (*SelfCollector) Set

func (c *SelfCollector) Set(self prometheus.Metric)

Set provides the selfCollector with a reference to the metric it is supposed to collect. It is usually called within the factory function to create a metric. See example.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL