...

Package metrics

import "k8s.io/component-base/metrics"
Overview
Index
Subdirectories

Overview ▾

Index ▾

Constants
Variables
func BuildFQName(namespace, subsystem, name string) string
func ErrIsNotRegistered(err error) bool
func ExponentialBuckets(start, factor float64, count int) []float64
func ExponentialBucketsRange(min, max float64, count int) []float64
func HandlerFor(reg Gatherer, opts HandlerOpts) http.Handler
func HandlerWithReset(reg KubeRegistry, opts HandlerOpts) http.Handler
func LinearBuckets(start, width float64, count int) []float64
func MergeBuckets(buckets ...[]float64) []float64
func RegisterBuildInfo(r KubeRegistry)
func RegisterProcessStartTime(registrationFunc func(Registerable) error) error
func SetDisabledMetric(name string)
func SetLabelAllowListFromCLI(allowListMapping map[string]string)
func SetLabelAllowListFromManifest(manifest string)
func SetShowHidden()
func ShouldShowHidden() bool
func ValidateShowHiddenMetricsVersion(v string) []error
type BaseStableCollector
    func (bsc *BaseStableCollector) ClearState()
    func (bsc *BaseStableCollector) Collect(ch chan<- prometheus.Metric)
    func (bsc *BaseStableCollector) CollectWithStability(ch chan<- Metric)
    func (bsc *BaseStableCollector) Create(version *semver.Version, self StableCollector) bool
    func (bsc *BaseStableCollector) Describe(ch chan<- *prometheus.Desc)
    func (bsc *BaseStableCollector) DescribeWithStability(ch chan<- *Desc)
    func (bsc *BaseStableCollector) HiddenMetrics() (fqNames []string)
type Collector
type Counter
    func NewCounter(opts *CounterOpts) *Counter
    func (r *Counter) ClearState()
    func (c *Counter) Collect(ch chan<- prometheus.Metric)
    func (r *Counter) Create(version *semver.Version) bool
    func (c *Counter) DeprecatedVersion() *semver.Version
    func (c *Counter) Desc() *prometheus.Desc
    func (c *Counter) Describe(ch chan<- *prometheus.Desc)
    func (r *Counter) FQName() string
    func (r *Counter) IsCreated() bool
    func (r *Counter) IsDeprecated() bool
    func (r *Counter) IsHidden() bool
    func (c *Counter) Reset()
    func (c *Counter) WithContext(ctx context.Context) CounterMetric
    func (c *Counter) Write(to *dto.Metric) error
type CounterMetric
type CounterOpts
type CounterVec
    func NewCounterVec(opts *CounterOpts, labels []string) *CounterVec
    func (r *CounterVec) ClearState()
    func (r *CounterVec) Create(version *semver.Version) bool
    func (v *CounterVec) Delete(labels map[string]string) bool
    func (v *CounterVec) DeprecatedVersion() *semver.Version
    func (r *CounterVec) FQName() string
    func (r *CounterVec) IsCreated() bool
    func (r *CounterVec) IsDeprecated() bool
    func (r *CounterVec) IsHidden() bool
    func (v *CounterVec) Reset()
    func (v *CounterVec) With(labels map[string]string) CounterMetric
    func (v *CounterVec) WithContext(ctx context.Context) *CounterVecWithContext
    func (v *CounterVec) WithLabelValues(lvs ...string) CounterMetric
type CounterVecMetric
type CounterVecWithContext
    func (r CounterVecWithContext) ClearState()
    func (r CounterVecWithContext) Create(version *semver.Version) bool
    func (r CounterVecWithContext) FQName() string
    func (r CounterVecWithContext) IsCreated() bool
    func (r CounterVecWithContext) IsDeprecated() bool
    func (r CounterVecWithContext) IsHidden() bool
    func (vc *CounterVecWithContext) With(labels map[string]string) CounterMetric
    func (vc *CounterVecWithContext) WithLabelValues(lvs ...string) CounterMetric
type Desc
    func NewDesc(fqName string, help string, variableLabels []string, constLabels Labels, stabilityLevel StabilityLevel, deprecatedVersion string) *Desc
    func (d *Desc) ClearState()
    func (d *Desc) DeprecatedVersion() *semver.Version
    func (d *Desc) GetRawDesc() *Desc
    func (d *Desc) IsCreated() bool
    func (d *Desc) IsDeprecated() bool
    func (d *Desc) IsHidden() bool
    func (d *Desc) String() string
type Gatherer
type Gauge
    func NewGauge(opts *GaugeOpts) *Gauge
    func (r *Gauge) ClearState()
    func (c *Gauge) Collect(ch chan<- prometheus.Metric)
    func (r *Gauge) Create(version *semver.Version) bool
    func (g *Gauge) DeprecatedVersion() *semver.Version
    func (c *Gauge) Describe(ch chan<- *prometheus.Desc)
    func (r *Gauge) FQName() string
    func (r *Gauge) IsCreated() bool
    func (r *Gauge) IsDeprecated() bool
    func (r *Gauge) IsHidden() bool
    func (g *Gauge) WithContext(ctx context.Context) GaugeMetric
type GaugeFunc
    func NewGaugeFunc(opts *GaugeOpts, function func() float64) GaugeFunc
type GaugeMetric
type GaugeOpts
type GaugeVec
    func NewGaugeVec(opts *GaugeOpts, labels []string) *GaugeVec
    func (r *GaugeVec) ClearState()
    func (r *GaugeVec) Create(version *semver.Version) bool
    func (v *GaugeVec) Delete(labels map[string]string) bool
    func (v *GaugeVec) DeprecatedVersion() *semver.Version
    func (r *GaugeVec) FQName() string
    func (v *GaugeVec) InterfaceWithContext(ctx context.Context) GaugeVecMetric
    func (r *GaugeVec) IsCreated() bool
    func (r *GaugeVec) IsDeprecated() bool
    func (r *GaugeVec) IsHidden() bool
    func (v *GaugeVec) Reset()
    func (v *GaugeVec) With(labels map[string]string) GaugeMetric
    func (v *GaugeVec) WithChecked(labels map[string]string) (GaugeMetric, error)
    func (v *GaugeVec) WithContext(ctx context.Context) *GaugeVecWithContext
    func (v *GaugeVec) WithLabelValues(lvs ...string) GaugeMetric
    func (v *GaugeVec) WithLabelValuesChecked(lvs ...string) (GaugeMetric, error)
type GaugeVecMetric
type GaugeVecWithContext
    func (r GaugeVecWithContext) ClearState()
    func (r GaugeVecWithContext) Create(version *semver.Version) bool
    func (r GaugeVecWithContext) FQName() string
    func (r GaugeVecWithContext) IsCreated() bool
    func (r GaugeVecWithContext) IsDeprecated() bool
    func (r GaugeVecWithContext) IsHidden() bool
    func (vc *GaugeVecWithContext) With(labels map[string]string) GaugeMetric
    func (vc *GaugeVecWithContext) WithLabelValues(lvs ...string) GaugeMetric
type HandlerOpts
type Histogram
    func NewHistogram(opts *HistogramOpts) *Histogram
    func (r *Histogram) ClearState()
    func (c *Histogram) Collect(ch chan<- prometheus.Metric)
    func (r *Histogram) Create(version *semver.Version) bool
    func (h *Histogram) DeprecatedVersion() *semver.Version
    func (c *Histogram) Describe(ch chan<- *prometheus.Desc)
    func (r *Histogram) FQName() string
    func (r *Histogram) IsCreated() bool
    func (r *Histogram) IsDeprecated() bool
    func (r *Histogram) IsHidden() bool
    func (h *Histogram) WithContext(ctx context.Context) ObserverMetric
type HistogramOpts
type HistogramVec
    func NewHistogramVec(opts *HistogramOpts, labels []string) *HistogramVec
    func (r *HistogramVec) ClearState()
    func (r *HistogramVec) Create(version *semver.Version) bool
    func (v *HistogramVec) Delete(labels map[string]string) bool
    func (v *HistogramVec) DeprecatedVersion() *semver.Version
    func (r *HistogramVec) FQName() string
    func (r *HistogramVec) IsCreated() bool
    func (r *HistogramVec) IsDeprecated() bool
    func (r *HistogramVec) IsHidden() bool
    func (v *HistogramVec) Reset()
    func (v *HistogramVec) With(labels map[string]string) ObserverMetric
    func (v *HistogramVec) WithContext(ctx context.Context) *HistogramVecWithContext
    func (v *HistogramVec) WithLabelValues(lvs ...string) ObserverMetric
type HistogramVecWithContext
    func (r HistogramVecWithContext) ClearState()
    func (r HistogramVecWithContext) Create(version *semver.Version) bool
    func (r HistogramVecWithContext) FQName() string
    func (r HistogramVecWithContext) IsCreated() bool
    func (r HistogramVecWithContext) IsDeprecated() bool
    func (r HistogramVecWithContext) IsHidden() bool
    func (vc *HistogramVecWithContext) With(labels map[string]string) ObserverMetric
    func (vc *HistogramVecWithContext) WithLabelValues(lvs ...string) ObserverMetric
type KubeOpts
type KubeRegistry
    func NewKubeRegistry() KubeRegistry
type Labels
type Metric
    func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error)
    func NewLazyConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) Metric
    func NewLazyMetricWithTimestamp(t time.Time, m Metric) Metric
type MetricLabelAllowList
    func (allowList *MetricLabelAllowList) ConstrainLabelMap(labels map[string]string)
    func (allowList *MetricLabelAllowList) ConstrainToAllowedList(labelNameList, labelValueList []string)
type ObserverMetric
type Options
    func NewOptions() *Options
    func (o *Options) AddFlags(fs *pflag.FlagSet)
    func (o *Options) Apply()
    func (o *Options) Validate() []error
type PromRegistry
type PrometheusTimingHistogram
type Registerable
type Registerer
type StabilityLevel
type StableCollector
type Summary
    func NewSummary(opts *SummaryOpts) *Summary
    func (r *Summary) ClearState()
    func (c *Summary) Collect(ch chan<- prometheus.Metric)
    func (r *Summary) Create(version *semver.Version) bool
    func (s *Summary) DeprecatedVersion() *semver.Version
    func (c *Summary) Describe(ch chan<- *prometheus.Desc)
    func (r *Summary) FQName() string
    func (r *Summary) IsCreated() bool
    func (r *Summary) IsDeprecated() bool
    func (r *Summary) IsHidden() bool
    func (s *Summary) WithContext(ctx context.Context) ObserverMetric
type SummaryOpts
type SummaryVec
    func NewSummaryVec(opts *SummaryOpts, labels []string) *SummaryVec
    func (r *SummaryVec) ClearState()
    func (r *SummaryVec) Create(version *semver.Version) bool
    func (v *SummaryVec) Delete(labels map[string]string) bool
    func (v *SummaryVec) DeprecatedVersion() *semver.Version
    func (r *SummaryVec) FQName() string
    func (r *SummaryVec) IsCreated() bool
    func (r *SummaryVec) IsDeprecated() bool
    func (r *SummaryVec) IsHidden() bool
    func (v *SummaryVec) Reset()
    func (v *SummaryVec) With(labels map[string]string) ObserverMetric
    func (v *SummaryVec) WithContext(ctx context.Context) *SummaryVecWithContext
    func (v *SummaryVec) WithLabelValues(lvs ...string) ObserverMetric
type SummaryVecWithContext
    func (r SummaryVecWithContext) ClearState()
    func (r SummaryVecWithContext) Create(version *semver.Version) bool
    func (r SummaryVecWithContext) FQName() string
    func (r SummaryVecWithContext) IsCreated() bool
    func (r SummaryVecWithContext) IsDeprecated() bool
    func (r SummaryVecWithContext) IsHidden() bool
    func (vc *SummaryVecWithContext) With(labels map[string]string) ObserverMetric
    func (vc *SummaryVecWithContext) WithLabelValues(lvs ...string) ObserverMetric
type TimingHistogram
    func NewTestableTimingHistogram(nowFunc func() time.Time, opts *TimingHistogramOpts) *TimingHistogram
    func NewTimingHistogram(opts *TimingHistogramOpts) *TimingHistogram
    func (r *TimingHistogram) ClearState()
    func (c *TimingHistogram) Collect(ch chan<- prometheus.Metric)
    func (r *TimingHistogram) Create(version *semver.Version) bool
    func (h *TimingHistogram) DeprecatedVersion() *semver.Version
    func (c *TimingHistogram) Describe(ch chan<- *prometheus.Desc)
    func (r *TimingHistogram) FQName() string
    func (r *TimingHistogram) IsCreated() bool
    func (r *TimingHistogram) IsDeprecated() bool
    func (r *TimingHistogram) IsHidden() bool
    func (h *TimingHistogram) WithContext(ctx context.Context) GaugeMetric
type TimingHistogramOpts
type TimingHistogramVec
    func NewTestableTimingHistogramVec(nowFunc func() time.Time, opts *TimingHistogramOpts, labels []string) *TimingHistogramVec
    func NewTimingHistogramVec(opts *TimingHistogramOpts, labels []string) *TimingHistogramVec
    func (r *TimingHistogramVec) ClearState()
    func (r *TimingHistogramVec) Create(version *semver.Version) bool
    func (v *TimingHistogramVec) Delete(labels map[string]string) bool
    func (v *TimingHistogramVec) DeprecatedVersion() *semver.Version
    func (r *TimingHistogramVec) FQName() string
    func (v *TimingHistogramVec) InterfaceWithContext(ctx context.Context) GaugeVecMetric
    func (r *TimingHistogramVec) IsCreated() bool
    func (r *TimingHistogramVec) IsDeprecated() bool
    func (r *TimingHistogramVec) IsHidden() bool
    func (v *TimingHistogramVec) Reset()
    func (v *TimingHistogramVec) With(labels map[string]string) GaugeMetric
    func (v *TimingHistogramVec) WithChecked(labels map[string]string) (GaugeMetric, error)
    func (v *TimingHistogramVec) WithLabelValues(lvs ...string) GaugeMetric
    func (v *TimingHistogramVec) WithLabelValuesChecked(lvs ...string) (GaugeMetric, error)
type TimingHistogramVecWithContext
    func (r TimingHistogramVecWithContext) ClearState()
    func (r TimingHistogramVecWithContext) Create(version *semver.Version) bool
    func (r TimingHistogramVecWithContext) FQName() string
    func (r TimingHistogramVecWithContext) IsCreated() bool
    func (r TimingHistogramVecWithContext) IsDeprecated() bool
    func (r TimingHistogramVecWithContext) IsHidden() bool
type ValueType

Package files

buckets.go collector.go counter.go desc.go gauge.go histogram.go http.go labels.go metric.go options.go opts.go processstarttime.go processstarttime_others.go registry.go summary.go timing_histogram.go value.go version.go version_parser.go wrappers.go

Constants

These constants cause handlers serving metrics to behave as described if errors are encountered.

const (
    // HTTPErrorOnError serve an HTTP status code 500 upon the first error
    // encountered. Report the error message in the body.
    HTTPErrorOnError promhttp.HandlerErrorHandling = iota

    // ContinueOnError ignore errors and try to serve as many metrics as possible.
    // However, if no metrics can be served, serve an HTTP status code 500 and the
    // last error message in the body. Only use this in deliberate "best
    // effort" metrics collection scenarios. In this case, it is highly
    // recommended to provide other means of detecting errors: By setting an
    // ErrorLog in HandlerOpts, the errors are logged. By providing a
    // Registry in HandlerOpts, the exposed metrics include an error counter
    // "promhttp_metric_handler_errors_total", which can be used for
    // alerts.
    ContinueOnError

    // PanicOnError panics upon the first error encountered (useful for "crash only" apps).
    PanicOnError
)
const (
    DefAgeBuckets = prometheus.DefAgeBuckets
    DefBufCap     = prometheus.DefBufCap
    DefMaxAge     = prometheus.DefMaxAge
)

Variables

BuildVersion is a helper function that can be easily mocked.

var BuildVersion = version.Get

DefBuckets is a wrapper for prometheus.DefBuckets

var DefBuckets = prometheus.DefBuckets

func BuildFQName

func BuildFQName(namespace, subsystem, name string) string

BuildFQName joins the given three name components by "_". Empty name components are ignored. If the name parameter itself is empty, an empty string is returned, no matter what. Metric implementations included in this library use this function internally to generate the fully-qualified metric name from the name component in their Opts. Users of the library will only need this function if they implement their own Metric or instantiate a Desc (with NewDesc) directly.

func ErrIsNotRegistered

func ErrIsNotRegistered(err error) bool

func ExponentialBuckets

func ExponentialBuckets(start, factor float64, count int) []float64

ExponentialBuckets is a wrapper for prometheus.ExponentialBuckets.

func ExponentialBucketsRange

func ExponentialBucketsRange(min, max float64, count int) []float64

ExponentialBucketsRange creates 'count' buckets, where the lowest bucket is 'min' and the highest bucket is 'max'. The final +Inf bucket is not counted and not included in the returned slice. The returned slice is meant to be used for the Buckets field of HistogramOpts.

The function panics if 'count' is 0 or negative, if 'min' is 0 or negative.

func HandlerFor

func HandlerFor(reg Gatherer, opts HandlerOpts) http.Handler

HandlerFor returns an uninstrumented http.Handler for the provided Gatherer. The behavior of the Handler is defined by the provided HandlerOpts. Thus, HandlerFor is useful to create http.Handlers for custom Gatherers, with non-default HandlerOpts, and/or with custom (or no) instrumentation. Use the InstrumentMetricHandler function to apply the same kind of instrumentation as it is used by the Handler function.

func HandlerWithReset

func HandlerWithReset(reg KubeRegistry, opts HandlerOpts) http.Handler

HandlerWithReset return an http.Handler with Reset

func LinearBuckets

func LinearBuckets(start, width float64, count int) []float64

LinearBuckets is a wrapper for prometheus.LinearBuckets.

func MergeBuckets

func MergeBuckets(buckets ...[]float64) []float64

MergeBuckets merges buckets together

func RegisterBuildInfo

func RegisterBuildInfo(r KubeRegistry)

RegisterBuildInfo registers the build and version info in a metadata metric in prometheus

func RegisterProcessStartTime

func RegisterProcessStartTime(registrationFunc func(Registerable) error) error

RegisterProcessStartTime registers the process_start_time_seconds to a prometheus registry. This metric needs to be included to ensure counter data fidelity.

func SetDisabledMetric

func SetDisabledMetric(name string)

func SetLabelAllowListFromCLI

func SetLabelAllowListFromCLI(allowListMapping map[string]string)

func SetLabelAllowListFromManifest

func SetLabelAllowListFromManifest(manifest string)

func SetShowHidden

func SetShowHidden()

SetShowHidden will enable showing hidden metrics. This will no-opt after the initial call

func ShouldShowHidden

func ShouldShowHidden() bool

ShouldShowHidden returns whether showing hidden deprecated metrics is enabled. While the primary usecase for this is internal (to determine registration behavior) this can also be used to introspect

func ValidateShowHiddenMetricsVersion

func ValidateShowHiddenMetricsVersion(v string) []error

ValidateShowHiddenMetricsVersion checks invalid version for which show hidden metrics.

type BaseStableCollector

BaseStableCollector which implements almost all methods defined by StableCollector is a convenient assistant for custom collectors. It is recommended to inherit BaseStableCollector when implementing custom collectors.

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

func (*BaseStableCollector) ClearState

func (bsc *BaseStableCollector) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*BaseStableCollector) Collect

func (bsc *BaseStableCollector) Collect(ch chan<- prometheus.Metric)

Collect is called by the Prometheus registry when collecting metrics.

func (*BaseStableCollector) CollectWithStability

func (bsc *BaseStableCollector) CollectWithStability(ch chan<- Metric)

CollectWithStability sends all metrics to the provided channel. Every custom collector should over-write this method.

func (*BaseStableCollector) Create

func (bsc *BaseStableCollector) Create(version *semver.Version, self StableCollector) bool

Create intends to be called by registry. Create will return true as long as there is one or more metrics not be hidden. Otherwise return false, that means the whole collector will be ignored by registry.

func (*BaseStableCollector) Describe

func (bsc *BaseStableCollector) Describe(ch chan<- *prometheus.Desc)

Describe sends all descriptors to the provided channel. It intended to be called by prometheus registry.

func (*BaseStableCollector) DescribeWithStability

func (bsc *BaseStableCollector) DescribeWithStability(ch chan<- *Desc)

DescribeWithStability sends all descriptors to the provided channel. Every custom collector should over-write this method.

func (*BaseStableCollector) HiddenMetrics

func (bsc *BaseStableCollector) HiddenMetrics() (fqNames []string)

HiddenMetrics tells the list of hidden metrics with fqName.

type Collector

Collector defines a subset of prometheus.Collector interface methods

type Collector interface {
    Describe(chan<- *prometheus.Desc)
    Collect(chan<- prometheus.Metric)
}

type Counter

Counter is our internal representation for our wrapping struct around prometheus counters. Counter implements both kubeCollector and CounterMetric.

type Counter struct {
    CounterMetric
    *CounterOpts
    // contains filtered or unexported fields
}

func NewCounter

func NewCounter(opts *CounterOpts) *Counter

NewCounter returns an object which satisfies the kubeCollector and CounterMetric interfaces. However, the object returned will not measure anything unless the collector is first registered, since the metric is lazily instantiated.

func (*Counter) ClearState

func (r *Counter) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*Counter) Collect

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

func (*Counter) Create

func (r *Counter) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*Counter) DeprecatedVersion

func (c *Counter) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*Counter) Desc

func (c *Counter) Desc() *prometheus.Desc

func (*Counter) Describe

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

func (*Counter) FQName

func (r *Counter) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*Counter) IsCreated

func (r *Counter) IsCreated() bool

func (*Counter) IsDeprecated

func (r *Counter) IsDeprecated() bool

func (*Counter) IsHidden

func (r *Counter) IsHidden() bool

func (*Counter) Reset

func (c *Counter) Reset()

Reset resets the underlying prometheus Counter to start counting from 0 again

func (*Counter) WithContext

func (c *Counter) WithContext(ctx context.Context) CounterMetric

WithContext allows the normal Counter metric to pass in context. The context is no-op now.

func (*Counter) Write

func (c *Counter) Write(to *dto.Metric) error

type CounterMetric

CounterMetric is an interface which defines a subset of the interface provided by prometheus.Counter

type CounterMetric interface {
    Inc()
    Add(float64)
}

type CounterOpts

CounterOpts is an alias for Opts. See there for doc comments.

type CounterOpts KubeOpts

type CounterVec

CounterVec is the internal representation of our wrapping struct around prometheus counterVecs. CounterVec implements both kubeCollector and CounterVecMetric.

type CounterVec struct {
    *prometheus.CounterVec
    *CounterOpts
    // contains filtered or unexported fields
}

func NewCounterVec

func NewCounterVec(opts *CounterOpts, labels []string) *CounterVec

NewCounterVec returns an object which satisfies the kubeCollector and (almost) CounterVecMetric interfaces. However, the object returned will not measure anything unless the collector is first registered, since the metric is lazily instantiated, and only members extracted after registration will actually measure anything.

func (*CounterVec) ClearState

func (r *CounterVec) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*CounterVec) Create

func (r *CounterVec) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*CounterVec) Delete

func (v *CounterVec) Delete(labels map[string]string) bool

Delete deletes the metric where the variable labels are the same as those passed in as labels. It returns true if a metric was deleted.

It is not an error if the number and names of the Labels are inconsistent with those of the VariableLabels in Desc. However, such inconsistent Labels can never match an actual metric, so the method will always return false in that case.

func (*CounterVec) DeprecatedVersion

func (v *CounterVec) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*CounterVec) FQName

func (r *CounterVec) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*CounterVec) IsCreated

func (r *CounterVec) IsCreated() bool

func (*CounterVec) IsDeprecated

func (r *CounterVec) IsDeprecated() bool

func (*CounterVec) IsHidden

func (r *CounterVec) IsHidden() bool

func (*CounterVec) Reset

func (v *CounterVec) Reset()

Reset deletes all metrics in this vector.

func (*CounterVec) With

func (v *CounterVec) With(labels map[string]string) CounterMetric

With returns the Counter for the given Labels map (the label names must match those of the VariableLabels in Desc). If that label map is accessed for the first time, a new Counter is created IFF the counterVec has been registered to a metrics registry.

func (*CounterVec) WithContext

func (v *CounterVec) WithContext(ctx context.Context) *CounterVecWithContext

WithContext returns wrapped CounterVec with context

func (*CounterVec) WithLabelValues

func (v *CounterVec) WithLabelValues(lvs ...string) CounterMetric

WithLabelValues returns the Counter for the given slice of label values (same order as the VariableLabels in Desc). If that combination of label values is accessed for the first time, a new Counter is created IFF the counterVec has been registered to a metrics registry.

type CounterVecMetric

CounterVecMetric is an interface which prometheus.CounterVec satisfies.

type CounterVecMetric interface {
    WithLabelValues(...string) CounterMetric
    With(prometheus.Labels) CounterMetric
}

type CounterVecWithContext

CounterVecWithContext is the wrapper of CounterVec with context.

type CounterVecWithContext struct {
    *CounterVec
    // contains filtered or unexported fields
}

func (CounterVecWithContext) ClearState

func (r CounterVecWithContext) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (CounterVecWithContext) Create

func (r CounterVecWithContext) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (CounterVecWithContext) FQName

func (r CounterVecWithContext) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (CounterVecWithContext) IsCreated

func (r CounterVecWithContext) IsCreated() bool

func (CounterVecWithContext) IsDeprecated

func (r CounterVecWithContext) IsDeprecated() bool

func (CounterVecWithContext) IsHidden

func (r CounterVecWithContext) IsHidden() bool

func (*CounterVecWithContext) With

func (vc *CounterVecWithContext) With(labels map[string]string) CounterMetric

With is the wrapper of CounterVec.With.

func (*CounterVecWithContext) WithLabelValues

func (vc *CounterVecWithContext) WithLabelValues(lvs ...string) CounterMetric

WithLabelValues is the wrapper of CounterVec.WithLabelValues.

type Desc

Desc is a prometheus.Desc extension.

Use NewDesc to create new Desc instances.

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

func NewDesc

func NewDesc(fqName string, help string, variableLabels []string, constLabels Labels,
    stabilityLevel StabilityLevel, deprecatedVersion string) *Desc

NewDesc extends prometheus.NewDesc with stability support.

The stabilityLevel should be valid stability label, such as "metrics.ALPHA" and "metrics.STABLE"(Maybe "metrics.BETA" in future). Default value "metrics.ALPHA" will be used in case of empty or invalid stability label.

The deprecatedVersion represents in which version this Metric be deprecated. The deprecation policy outlined by the control plane metrics stability KEP.

func (*Desc) ClearState

func (d *Desc) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*Desc) DeprecatedVersion

func (d *Desc) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*Desc) GetRawDesc

func (d *Desc) GetRawDesc() *Desc

GetRawDesc will returns a new *Desc with original parameters provided to NewDesc().

It will be useful in testing scenario that the same Desc be registered to different registry.

  1. Desc `D` is registered to registry 'A' in TestA (Note: `D` maybe created)
  2. Desc `D` is registered to registry 'B' in TestB (Note: since 'D' has been created once, thus will be ignored by registry 'B')

func (*Desc) IsCreated

func (d *Desc) IsCreated() bool

IsCreated returns if metric has been created.

func (*Desc) IsDeprecated

func (d *Desc) IsDeprecated() bool

IsDeprecated returns if metric has been deprecated

func (*Desc) IsHidden

func (d *Desc) IsHidden() bool

IsHidden returns if metric will be hidden

func (*Desc) String

func (d *Desc) String() string

String formats the Desc as a string. The stability metadata maybe annotated in 'HELP' section if called after registry, otherwise not. e.g. "Desc{fqName: "normal_stable_descriptor", help: "STABLE this is a stable descriptor", constLabels: {}, variableLabels: []}"

type Gatherer

Gatherer is the interface for the part of a registry in charge of gathering the collected metrics into a number of MetricFamilies.

type Gatherer interface {
    prometheus.Gatherer
}

type Gauge

Gauge is our internal representation for our wrapping struct around prometheus gauges. kubeGauge implements both kubeCollector and KubeGauge.

type Gauge struct {
    GaugeMetric
    *GaugeOpts
    // contains filtered or unexported fields
}

func NewGauge

func NewGauge(opts *GaugeOpts) *Gauge

NewGauge returns an object which satisfies the kubeCollector, Registerable, and Gauge interfaces. However, the object returned will not measure anything unless the collector is first registered, since the metric is lazily instantiated.

func (*Gauge) ClearState

func (r *Gauge) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*Gauge) Collect

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

func (*Gauge) Create

func (r *Gauge) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*Gauge) DeprecatedVersion

func (g *Gauge) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*Gauge) Describe

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

func (*Gauge) FQName

func (r *Gauge) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*Gauge) IsCreated

func (r *Gauge) IsCreated() bool

func (*Gauge) IsDeprecated

func (r *Gauge) IsDeprecated() bool

func (*Gauge) IsHidden

func (r *Gauge) IsHidden() bool

func (*Gauge) WithContext

func (g *Gauge) WithContext(ctx context.Context) GaugeMetric

WithContext allows the normal Gauge metric to pass in context. The context is no-op now.

type GaugeFunc

GaugeFunc is a Gauge whose value is determined at collect time by calling a provided function.

To create GaugeFunc instances, use NewGaugeFunc.

type GaugeFunc interface {
    Metric
    Collector
}

func NewGaugeFunc

func NewGaugeFunc(opts *GaugeOpts, function func() float64) GaugeFunc

NewGaugeFunc creates a new GaugeFunc based on the provided GaugeOpts. The value reported is determined by calling the given function from within the Write method. Take into account that metric collection may happen concurrently. If that results in concurrent calls to Write, like in the case where a GaugeFunc is directly registered with Prometheus, the provided function must be concurrency-safe.

type GaugeMetric

GaugeMetric is an interface which defines a subset of the interface provided by prometheus.Gauge

type GaugeMetric interface {
    Set(float64)
    Inc()
    Dec()
    Add(float64)
    Write(out *dto.Metric) error
    SetToCurrentTime()
}

type GaugeOpts

GaugeOpts is an alias for Opts. See there for doc comments.

type GaugeOpts KubeOpts

type GaugeVec

GaugeVec is the internal representation of our wrapping struct around prometheus gaugeVecs. kubeGaugeVec implements both kubeCollector and KubeGaugeVec.

type GaugeVec struct {
    *prometheus.GaugeVec
    *GaugeOpts
    // contains filtered or unexported fields
}

func NewGaugeVec

func NewGaugeVec(opts *GaugeOpts, labels []string) *GaugeVec

NewGaugeVec returns an object which satisfies the kubeCollector, Registerable, and GaugeVecMetric interfaces. However, the object returned will not measure anything unless the collector is first registered, since the metric is lazily instantiated, and only members extracted after registration will actually measure anything.

func (*GaugeVec) ClearState

func (r *GaugeVec) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*GaugeVec) Create

func (r *GaugeVec) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*GaugeVec) Delete

func (v *GaugeVec) Delete(labels map[string]string) bool

Delete deletes the metric where the variable labels are the same as those passed in as labels. It returns true if a metric was deleted.

It is not an error if the number and names of the Labels are inconsistent with those of the VariableLabels in Desc. However, such inconsistent Labels can never match an actual metric, so the method will always return false in that case.

func (*GaugeVec) DeprecatedVersion

func (v *GaugeVec) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*GaugeVec) FQName

func (r *GaugeVec) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*GaugeVec) InterfaceWithContext

func (v *GaugeVec) InterfaceWithContext(ctx context.Context) GaugeVecMetric

func (*GaugeVec) IsCreated

func (r *GaugeVec) IsCreated() bool

func (*GaugeVec) IsDeprecated

func (r *GaugeVec) IsDeprecated() bool

func (*GaugeVec) IsHidden

func (r *GaugeVec) IsHidden() bool

func (*GaugeVec) Reset

func (v *GaugeVec) Reset()

Reset deletes all metrics in this vector.

func (*GaugeVec) With

func (v *GaugeVec) With(labels map[string]string) GaugeMetric

With returns the GaugeMetric for the given Labels map (the label names must match those of the VariableLabels in Desc). If that label map is accessed for the first time, a new GaugeMetric is created IFF the gaugeVec has been registered to a metrics registry.

func (*GaugeVec) WithChecked

func (v *GaugeVec) WithChecked(labels map[string]string) (GaugeMetric, error)

func (*GaugeVec) WithContext

func (v *GaugeVec) WithContext(ctx context.Context) *GaugeVecWithContext

WithContext returns wrapped GaugeVec with context

func (*GaugeVec) WithLabelValues

func (v *GaugeVec) WithLabelValues(lvs ...string) GaugeMetric

WithLabelValues returns the GaugeMetric for the given slice of label values (same order as the VariableLabels in Desc). If that combination of label values is accessed for the first time, a new GaugeMetric is created IFF the gaugeVec has been registered to a metrics registry.

func (*GaugeVec) WithLabelValuesChecked

func (v *GaugeVec) WithLabelValuesChecked(lvs ...string) (GaugeMetric, error)

type GaugeVecMetric

GaugeVecMetric is a collection of Gauges that differ only in label values.

type GaugeVecMetric interface {

    // WithLabelValuesChecked, if called before this vector has been registered in
    // at least one registry, will return a noop gauge and
    // an error that passes ErrIsNotRegistered.
    // If called on a hidden vector,
    // will return a noop gauge and a nil error.
    // If called with a syntactic problem in the labels, will
    // return a noop gauge and an error about the labels.
    // If none of the above apply, this method will return
    // the appropriate vector member and a nil error.
    WithLabelValuesChecked(labelValues ...string) (GaugeMetric, error)

    // WithLabelValues calls WithLabelValuesChecked
    // and handles errors as follows.
    // An error that passes ErrIsNotRegistered is ignored
    // and the noop gauge is returned;
    // all other errors cause a panic.
    WithLabelValues(labelValues ...string) GaugeMetric

    // WithChecked, if called before this vector has been registered in
    // at least one registry, will return a noop gauge and
    // an error that passes ErrIsNotRegistered.
    // If called on a hidden vector,
    // will return a noop gauge and a nil error.
    // If called with a syntactic problem in the labels, will
    // return a noop gauge and an error about the labels.
    // If none of the above apply, this method will return
    // the appropriate vector member and a nil error.
    WithChecked(labels map[string]string) (GaugeMetric, error)

    // With calls WithChecked and handles errors as follows.
    // An error that passes ErrIsNotRegistered is ignored
    // and the noop gauge is returned;
    // all other errors cause a panic.
    With(labels map[string]string) GaugeMetric

    // Delete asserts that the vec should have no member for the given label set.
    // The returned bool indicates whether there was a change.
    // The return will certainly be `false` if the given label set has the wrong
    // set of label names.
    Delete(map[string]string) bool

    // Reset removes all the members
    Reset()
}

type GaugeVecWithContext

GaugeVecWithContext is the wrapper of GaugeVec with context.

type GaugeVecWithContext struct {
    *GaugeVec
    // contains filtered or unexported fields
}

func (GaugeVecWithContext) ClearState

func (r GaugeVecWithContext) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (GaugeVecWithContext) Create

func (r GaugeVecWithContext) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (GaugeVecWithContext) FQName

func (r GaugeVecWithContext) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (GaugeVecWithContext) IsCreated

func (r GaugeVecWithContext) IsCreated() bool

func (GaugeVecWithContext) IsDeprecated

func (r GaugeVecWithContext) IsDeprecated() bool

func (GaugeVecWithContext) IsHidden

func (r GaugeVecWithContext) IsHidden() bool

func (*GaugeVecWithContext) With

func (vc *GaugeVecWithContext) With(labels map[string]string) GaugeMetric

With is the wrapper of GaugeVec.With.

func (*GaugeVecWithContext) WithLabelValues

func (vc *GaugeVecWithContext) WithLabelValues(lvs ...string) GaugeMetric

WithLabelValues is the wrapper of GaugeVec.WithLabelValues.

type HandlerOpts

HandlerOpts specifies options how to serve metrics via an http.Handler. The zero value of HandlerOpts is a reasonable default.

type HandlerOpts promhttp.HandlerOpts

type Histogram

Histogram is our internal representation for our wrapping struct around prometheus histograms. Summary implements both kubeCollector and ObserverMetric

type Histogram struct {
    ObserverMetric
    *HistogramOpts
    // contains filtered or unexported fields
}

func NewHistogram

func NewHistogram(opts *HistogramOpts) *Histogram

NewHistogram returns an object which is Histogram-like. However, nothing will be measured until the histogram is registered somewhere.

func (*Histogram) ClearState

func (r *Histogram) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*Histogram) Collect

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

func (*Histogram) Create

func (r *Histogram) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*Histogram) DeprecatedVersion

func (h *Histogram) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*Histogram) Describe

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

func (*Histogram) FQName

func (r *Histogram) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*Histogram) IsCreated

func (r *Histogram) IsCreated() bool

func (*Histogram) IsDeprecated

func (r *Histogram) IsDeprecated() bool

func (*Histogram) IsHidden

func (r *Histogram) IsHidden() bool

func (*Histogram) WithContext

func (h *Histogram) WithContext(ctx context.Context) ObserverMetric

WithContext allows the normal Histogram metric to pass in context. The context is no-op now.

type HistogramOpts

HistogramOpts bundles the options for creating a Histogram metric. It is mandatory to set Name to a non-empty string. All other fields are optional and can safely be left at their zero value, although it is strongly encouraged to set a Help string.

type HistogramOpts struct {
    Namespace         string
    Subsystem         string
    Name              string
    Help              string
    ConstLabels       map[string]string
    Buckets           []float64
    DeprecatedVersion string

    StabilityLevel       StabilityLevel
    LabelValueAllowLists *MetricLabelAllowList
    // contains filtered or unexported fields
}

type HistogramVec

HistogramVec is the internal representation of our wrapping struct around prometheus histogramVecs.

type HistogramVec struct {
    *prometheus.HistogramVec
    *HistogramOpts
    // contains filtered or unexported fields
}

func NewHistogramVec

func NewHistogramVec(opts *HistogramOpts, labels []string) *HistogramVec

func (*HistogramVec) ClearState

func (r *HistogramVec) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*HistogramVec) Create

func (r *HistogramVec) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*HistogramVec) Delete

func (v *HistogramVec) Delete(labels map[string]string) bool

Delete deletes the metric where the variable labels are the same as those passed in as labels. It returns true if a metric was deleted.

It is not an error if the number and names of the Labels are inconsistent with those of the VariableLabels in Desc. However, such inconsistent Labels can never match an actual metric, so the method will always return false in that case.

func (*HistogramVec) DeprecatedVersion

func (v *HistogramVec) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*HistogramVec) FQName

func (r *HistogramVec) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*HistogramVec) IsCreated

func (r *HistogramVec) IsCreated() bool

func (*HistogramVec) IsDeprecated

func (r *HistogramVec) IsDeprecated() bool

func (*HistogramVec) IsHidden

func (r *HistogramVec) IsHidden() bool

func (*HistogramVec) Reset

func (v *HistogramVec) Reset()

Reset deletes all metrics in this vector.

func (*HistogramVec) With

func (v *HistogramVec) With(labels map[string]string) ObserverMetric

With returns the ObserverMetric for the given Labels map (the label names must match those of the VariableLabels in Desc). If that label map is accessed for the first time, a new ObserverMetric is created IFF the HistogramVec has been registered to a metrics registry.

func (*HistogramVec) WithContext

func (v *HistogramVec) WithContext(ctx context.Context) *HistogramVecWithContext

WithContext returns wrapped HistogramVec with context

func (*HistogramVec) WithLabelValues

func (v *HistogramVec) WithLabelValues(lvs ...string) ObserverMetric

WithLabelValues returns the ObserverMetric for the given slice of label values (same order as the VariableLabels in Desc). If that combination of label values is accessed for the first time, a new ObserverMetric is created IFF the HistogramVec has been registered to a metrics registry.

type HistogramVecWithContext

HistogramVecWithContext is the wrapper of HistogramVec with context.

type HistogramVecWithContext struct {
    *HistogramVec
    // contains filtered or unexported fields
}

func (HistogramVecWithContext) ClearState

func (r HistogramVecWithContext) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (HistogramVecWithContext) Create

func (r HistogramVecWithContext) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (HistogramVecWithContext) FQName

func (r HistogramVecWithContext) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (HistogramVecWithContext) IsCreated

func (r HistogramVecWithContext) IsCreated() bool

func (HistogramVecWithContext) IsDeprecated

func (r HistogramVecWithContext) IsDeprecated() bool

func (HistogramVecWithContext) IsHidden

func (r HistogramVecWithContext) IsHidden() bool

func (*HistogramVecWithContext) With

func (vc *HistogramVecWithContext) With(labels map[string]string) ObserverMetric

With is the wrapper of HistogramVec.With.

func (*HistogramVecWithContext) WithLabelValues

func (vc *HistogramVecWithContext) WithLabelValues(lvs ...string) ObserverMetric

WithLabelValues is the wrapper of HistogramVec.WithLabelValues.

type KubeOpts

KubeOpts is superset struct for prometheus.Opts. The prometheus Opts structure is purposefully not embedded here because that would change struct initialization in the manner which people are currently accustomed.

Name must be set to a non-empty string. DeprecatedVersion is defined only if the metric for which this options applies is, in fact, deprecated.

type KubeOpts struct {
    Namespace         string
    Subsystem         string
    Name              string
    Help              string
    ConstLabels       map[string]string
    DeprecatedVersion string

    StabilityLevel       StabilityLevel
    LabelValueAllowLists *MetricLabelAllowList
    // contains filtered or unexported fields
}

type KubeRegistry

KubeRegistry is an interface which implements a subset of prometheus.Registerer and prometheus.Gatherer interfaces

type KubeRegistry interface {
    // Deprecated
    RawMustRegister(...prometheus.Collector)
    // CustomRegister is our internal variant of Prometheus registry.Register
    CustomRegister(c StableCollector) error
    // CustomMustRegister is our internal variant of Prometheus registry.MustRegister
    CustomMustRegister(cs ...StableCollector)
    // Register conforms to Prometheus registry.Register
    Register(Registerable) error
    // MustRegister conforms to Prometheus registry.MustRegister
    MustRegister(...Registerable)
    // Unregister conforms to Prometheus registry.Unregister
    Unregister(collector Collector) bool
    // Gather conforms to Prometheus gatherer.Gather
    Gather() ([]*dto.MetricFamily, error)
    // Reset invokes the Reset() function on all items in the registry
    // which are added as resettables.
    Reset()
    // RegisterMetaMetrics registers metrics about the number of registered metrics.
    RegisterMetaMetrics()
    // Registerer exposes the underlying prometheus registerer
    Registerer() prometheus.Registerer
    // Gatherer exposes the underlying prometheus gatherer
    Gatherer() prometheus.Gatherer
}

func NewKubeRegistry

func NewKubeRegistry() KubeRegistry

NewKubeRegistry creates a new vanilla Registry

type Labels

Labels represents a collection of label name -> value mappings.

type Labels prometheus.Labels

type Metric

Metric defines a subset of prometheus.Metric interface methods

type Metric interface {
    Desc() *prometheus.Desc
    Write(*dto.Metric) error
}

func NewConstMetric

func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error)

NewConstMetric is a helper of NewConstMetric.

Note: If the metrics described by the desc is hidden, the metrics will not be created.

func NewLazyConstMetric

func NewLazyConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) Metric

NewLazyConstMetric is a helper of MustNewConstMetric.

Note: If the metrics described by the desc is hidden, the metrics will not be created.

func NewLazyMetricWithTimestamp

func NewLazyMetricWithTimestamp(t time.Time, m Metric) Metric

NewLazyMetricWithTimestamp is a helper of NewMetricWithTimestamp.

Warning: the Metric 'm' must be the one created by NewLazyConstMetric(), otherwise, no stability guarantees would be offered.

type MetricLabelAllowList

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

func (*MetricLabelAllowList) ConstrainLabelMap

func (allowList *MetricLabelAllowList) ConstrainLabelMap(labels map[string]string)

func (*MetricLabelAllowList) ConstrainToAllowedList

func (allowList *MetricLabelAllowList) ConstrainToAllowedList(labelNameList, labelValueList []string)

type ObserverMetric

ObserverMetric captures individual observations.

type ObserverMetric interface {
    Observe(float64)
}

type Options

Options has all parameters needed for exposing metrics from components

type Options struct {
    ShowHiddenMetricsForVersion string
    DisabledMetrics             []string
    AllowListMapping            map[string]string
    AllowListMappingManifest    string
}

func NewOptions

func NewOptions() *Options

NewOptions returns default metrics options

func (*Options) AddFlags

func (o *Options) AddFlags(fs *pflag.FlagSet)

AddFlags adds flags for exposing component metrics.

func (*Options) Apply

func (o *Options) Apply()

Apply applies parameters into global configuration of metrics.

func (*Options) Validate

func (o *Options) Validate() []error

Validate validates metrics flags options.

type PromRegistry

PromRegistry is an interface which implements a subset of prometheus.Registerer and prometheus.Gatherer interfaces

type PromRegistry interface {
    Register(prometheus.Collector) error
    MustRegister(...prometheus.Collector)
    Unregister(prometheus.Collector) bool
    Gather() ([]*dto.MetricFamily, error)
}

type PrometheusTimingHistogram

PrometheusTimingHistogram is the abstraction of the underlying histogram that we want to promote from the wrapper.

type PrometheusTimingHistogram interface {
    GaugeMetric
}

type Registerable

Registerable is an interface for a collector metric which we will register with KubeRegistry.

type Registerable interface {
    prometheus.Collector

    // Create will mark deprecated state for the collector
    Create(version *semver.Version) bool

    // ClearState will clear all the states marked by Create.
    ClearState()

    // FQName returns the fully-qualified metric name of the collector.
    FQName() string
}

type Registerer

Registerer is the interface for the part of a registry in charge of registering the collected metrics.

type Registerer interface {
    prometheus.Registerer
}

type StabilityLevel

StabilityLevel represents the API guarantees for a given defined metric.

type StabilityLevel string
const (
    // INTERNAL metrics have no stability guarantees, as such, labels may
    // be arbitrarily added/removed and the metric may be deleted at any time.
    INTERNAL StabilityLevel = "INTERNAL"
    // ALPHA metrics have no stability guarantees, as such, labels may
    // be arbitrarily added/removed and the metric may be deleted at any time.
    ALPHA StabilityLevel = "ALPHA"
    // BETA metrics are governed by the deprecation policy outlined in by
    // the control plane metrics stability KEP.
    BETA StabilityLevel = "BETA"
    // STABLE metrics are guaranteed not be mutated and removal is governed by
    // the deprecation policy outlined in by the control plane metrics stability KEP.
    STABLE StabilityLevel = "STABLE"
)

type StableCollector

StableCollector extends the prometheus.Collector interface to allow customization of the metric registration process, it's especially intend to be used in scenario of custom collector.

type StableCollector interface {
    prometheus.Collector

    // DescribeWithStability sends the super-set of all possible metrics.Desc collected
    // by this StableCollector to the provided channel.
    DescribeWithStability(chan<- *Desc)

    // CollectWithStability sends each collected metrics.Metric via the provide channel.
    CollectWithStability(chan<- Metric)

    // Create will initialize all Desc and it intends to be called by registry.
    Create(version *semver.Version, self StableCollector) bool

    // ClearState will clear all the states marked by Create.
    ClearState()

    // HiddenMetrics tells the list of hidden metrics with fqName.
    HiddenMetrics() []string
}

type Summary

Summary is our internal representation for our wrapping struct around prometheus summaries. Summary implements both kubeCollector and ObserverMetric

DEPRECATED: as per the metrics overhaul KEP

type Summary struct {
    ObserverMetric
    *SummaryOpts
    // contains filtered or unexported fields
}

func NewSummary

func NewSummary(opts *SummaryOpts) *Summary

NewSummary returns an object which is Summary-like. However, nothing will be measured until the summary is registered somewhere.

DEPRECATED: as per the metrics overhaul KEP

func (*Summary) ClearState

func (r *Summary) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*Summary) Collect

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

func (*Summary) Create

func (r *Summary) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*Summary) DeprecatedVersion

func (s *Summary) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*Summary) Describe

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

func (*Summary) FQName

func (r *Summary) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*Summary) IsCreated

func (r *Summary) IsCreated() bool

func (*Summary) IsDeprecated

func (r *Summary) IsDeprecated() bool

func (*Summary) IsHidden

func (r *Summary) IsHidden() bool

func (*Summary) WithContext

func (s *Summary) WithContext(ctx context.Context) ObserverMetric

WithContext allows the normal Summary metric to pass in context. The context is no-op now.

type SummaryOpts

SummaryOpts bundles the options for creating a Summary metric. It is mandatory to set Name to a non-empty string. While all other fields are optional and can safely be left at their zero value, it is recommended to set a help string and to explicitly set the Objectives field to the desired value as the default value will change in the upcoming v0.10 of the library.

type SummaryOpts struct {
    Namespace         string
    Subsystem         string
    Name              string
    Help              string
    ConstLabels       map[string]string
    Objectives        map[float64]float64
    MaxAge            time.Duration
    AgeBuckets        uint32
    BufCap            uint32
    DeprecatedVersion string

    StabilityLevel       StabilityLevel
    LabelValueAllowLists *MetricLabelAllowList
    // contains filtered or unexported fields
}

type SummaryVec

SummaryVec is the internal representation of our wrapping struct around prometheus summaryVecs.

DEPRECATED: as per the metrics overhaul KEP

type SummaryVec struct {
    *prometheus.SummaryVec
    *SummaryOpts
    // contains filtered or unexported fields
}

func NewSummaryVec

func NewSummaryVec(opts *SummaryOpts, labels []string) *SummaryVec

NewSummaryVec returns an object which satisfies kubeCollector and wraps the prometheus.SummaryVec object. However, the object returned will not measure anything unless the collector is first registered, since the metric is lazily instantiated, and only members extracted after registration will actually measure anything.

DEPRECATED: as per the metrics overhaul KEP

func (*SummaryVec) ClearState

func (r *SummaryVec) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*SummaryVec) Create

func (r *SummaryVec) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*SummaryVec) Delete

func (v *SummaryVec) Delete(labels map[string]string) bool

Delete deletes the metric where the variable labels are the same as those passed in as labels. It returns true if a metric was deleted.

It is not an error if the number and names of the Labels are inconsistent with those of the VariableLabels in Desc. However, such inconsistent Labels can never match an actual metric, so the method will always return false in that case.

func (*SummaryVec) DeprecatedVersion

func (v *SummaryVec) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*SummaryVec) FQName

func (r *SummaryVec) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*SummaryVec) IsCreated

func (r *SummaryVec) IsCreated() bool

func (*SummaryVec) IsDeprecated

func (r *SummaryVec) IsDeprecated() bool

func (*SummaryVec) IsHidden

func (r *SummaryVec) IsHidden() bool

func (*SummaryVec) Reset

func (v *SummaryVec) Reset()

Reset deletes all metrics in this vector.

func (*SummaryVec) With

func (v *SummaryVec) With(labels map[string]string) ObserverMetric

With returns the ObserverMetric for the given Labels map (the label names must match those of the VariableLabels in Desc). If that label map is accessed for the first time, a new ObserverMetric is created IFF the summaryVec has been registered to a metrics registry.

func (*SummaryVec) WithContext

func (v *SummaryVec) WithContext(ctx context.Context) *SummaryVecWithContext

WithContext returns wrapped SummaryVec with context

func (*SummaryVec) WithLabelValues

func (v *SummaryVec) WithLabelValues(lvs ...string) ObserverMetric

WithLabelValues returns the ObserverMetric for the given slice of label values (same order as the VariableLabels in Desc). If that combination of label values is accessed for the first time, a new ObserverMetric is created IFF the summaryVec has been registered to a metrics registry.

type SummaryVecWithContext

SummaryVecWithContext is the wrapper of SummaryVec with context.

type SummaryVecWithContext struct {
    *SummaryVec
    // contains filtered or unexported fields
}

func (SummaryVecWithContext) ClearState

func (r SummaryVecWithContext) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (SummaryVecWithContext) Create

func (r SummaryVecWithContext) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (SummaryVecWithContext) FQName

func (r SummaryVecWithContext) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (SummaryVecWithContext) IsCreated

func (r SummaryVecWithContext) IsCreated() bool

func (SummaryVecWithContext) IsDeprecated

func (r SummaryVecWithContext) IsDeprecated() bool

func (SummaryVecWithContext) IsHidden

func (r SummaryVecWithContext) IsHidden() bool

func (*SummaryVecWithContext) With

func (vc *SummaryVecWithContext) With(labels map[string]string) ObserverMetric

With is the wrapper of SummaryVec.With.

func (*SummaryVecWithContext) WithLabelValues

func (vc *SummaryVecWithContext) WithLabelValues(lvs ...string) ObserverMetric

WithLabelValues is the wrapper of SummaryVec.WithLabelValues.

type TimingHistogram

TimingHistogram is our internal representation for our wrapping struct around timing histograms. It implements both kubeCollector and GaugeMetric

type TimingHistogram struct {
    PrometheusTimingHistogram
    *TimingHistogramOpts
    // contains filtered or unexported fields
}

func NewTestableTimingHistogram

func NewTestableTimingHistogram(nowFunc func() time.Time, opts *TimingHistogramOpts) *TimingHistogram

NewTestableTimingHistogram adds injection of the clock

func NewTimingHistogram

func NewTimingHistogram(opts *TimingHistogramOpts) *TimingHistogram

NewTimingHistogram returns an object which is TimingHistogram-like. However, nothing will be measured until the histogram is registered somewhere.

func (*TimingHistogram) ClearState

func (r *TimingHistogram) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*TimingHistogram) Collect

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

func (*TimingHistogram) Create

func (r *TimingHistogram) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*TimingHistogram) DeprecatedVersion

func (h *TimingHistogram) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*TimingHistogram) Describe

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

func (*TimingHistogram) FQName

func (r *TimingHistogram) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*TimingHistogram) IsCreated

func (r *TimingHistogram) IsCreated() bool

func (*TimingHistogram) IsDeprecated

func (r *TimingHistogram) IsDeprecated() bool

func (*TimingHistogram) IsHidden

func (r *TimingHistogram) IsHidden() bool

func (*TimingHistogram) WithContext

func (h *TimingHistogram) WithContext(ctx context.Context) GaugeMetric

WithContext allows the normal TimingHistogram metric to pass in context. The context is no-op now.

type TimingHistogramOpts

TimingHistogramOpts bundles the options for creating a TimingHistogram metric. It is mandatory to set Name to a non-empty string. All other fields are optional and can safely be left at their zero value, although it is strongly encouraged to set a Help string.

type TimingHistogramOpts struct {
    Namespace         string
    Subsystem         string
    Name              string
    Help              string
    ConstLabels       map[string]string
    Buckets           []float64
    InitialValue      float64
    DeprecatedVersion string

    StabilityLevel       StabilityLevel
    LabelValueAllowLists *MetricLabelAllowList
    // contains filtered or unexported fields
}

type TimingHistogramVec

TimingHistogramVec is the internal representation of our wrapping struct around prometheus TimingHistogramVecs.

type TimingHistogramVec struct {
    *promext.TimingHistogramVec
    *TimingHistogramOpts
    // contains filtered or unexported fields
}

func NewTestableTimingHistogramVec

func NewTestableTimingHistogramVec(nowFunc func() time.Time, opts *TimingHistogramOpts, labels []string) *TimingHistogramVec

NewTestableTimingHistogramVec adds injection of the clock.

func NewTimingHistogramVec

func NewTimingHistogramVec(opts *TimingHistogramOpts, labels []string) *TimingHistogramVec

NewTimingHistogramVec returns an object which satisfies the kubeCollector, Registerable, and GaugeVecMetric interfaces and wraps an underlying promext.TimingHistogramVec object. Note well the way that behavior depends on registration and whether this is hidden.

func (*TimingHistogramVec) ClearState

func (r *TimingHistogramVec) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (*TimingHistogramVec) Create

func (r *TimingHistogramVec) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (*TimingHistogramVec) Delete

func (v *TimingHistogramVec) Delete(labels map[string]string) bool

Delete deletes the metric where the variable labels are the same as those passed in as labels. It returns true if a metric was deleted.

It is not an error if the number and names of the Labels are inconsistent with those of the VariableLabels in Desc. However, such inconsistent Labels can never match an actual metric, so the method will always return false in that case.

func (*TimingHistogramVec) DeprecatedVersion

func (v *TimingHistogramVec) DeprecatedVersion() *semver.Version

DeprecatedVersion returns a pointer to the Version or nil

func (*TimingHistogramVec) FQName

func (r *TimingHistogramVec) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (*TimingHistogramVec) InterfaceWithContext

func (v *TimingHistogramVec) InterfaceWithContext(ctx context.Context) GaugeVecMetric

WithContext returns wrapped TimingHistogramVec with context

func (*TimingHistogramVec) IsCreated

func (r *TimingHistogramVec) IsCreated() bool

func (*TimingHistogramVec) IsDeprecated

func (r *TimingHistogramVec) IsDeprecated() bool

func (*TimingHistogramVec) IsHidden

func (r *TimingHistogramVec) IsHidden() bool

func (*TimingHistogramVec) Reset

func (v *TimingHistogramVec) Reset()

Reset deletes all metrics in this vector.

func (*TimingHistogramVec) With

func (v *TimingHistogramVec) With(labels map[string]string) GaugeMetric

With calls WithChecked and handles errors as follows. An error that passes ErrIsNotRegistered is ignored and the noop gauge is returned; all other errors cause a panic.

func (*TimingHistogramVec) WithChecked

func (v *TimingHistogramVec) WithChecked(labels map[string]string) (GaugeMetric, error)

WithChecked, if called before this vector has been registered in at least one registry, will return a noop gauge and an error that passes ErrIsNotRegistered. If called on a hidden vector, will return a noop gauge and a nil error. If called with a syntactic problem in the labels, will return a noop gauge and an error about the labels. If none of the above apply, this method will return the appropriate vector member and a nil error.

func (*TimingHistogramVec) WithLabelValues

func (v *TimingHistogramVec) WithLabelValues(lvs ...string) GaugeMetric

WithLabelValues calls WithLabelValuesChecked and handles errors as follows. An error that passes ErrIsNotRegistered is ignored and the noop gauge is returned; all other errors cause a panic.

func (*TimingHistogramVec) WithLabelValuesChecked

func (v *TimingHistogramVec) WithLabelValuesChecked(lvs ...string) (GaugeMetric, error)

WithLabelValuesChecked, if called before this vector has been registered in at least one registry, will return a noop gauge and an error that passes ErrIsNotRegistered. If called on a hidden vector, will return a noop gauge and a nil error. If called with a syntactic problem in the labels, will return a noop gauge and an error about the labels. If none of the above apply, this method will return the appropriate vector member and a nil error.

type TimingHistogramVecWithContext

TimingHistogramVecWithContext is the wrapper of TimingHistogramVec with context. Currently the context is ignored.

type TimingHistogramVecWithContext struct {
    *TimingHistogramVec
    // contains filtered or unexported fields
}

func (TimingHistogramVecWithContext) ClearState

func (r TimingHistogramVecWithContext) ClearState()

ClearState will clear all the states marked by Create. It intends to be used for re-register a hidden metric.

func (TimingHistogramVecWithContext) Create

func (r TimingHistogramVecWithContext) Create(version *semver.Version) bool

Create forces the initialization of metric which has been deferred until the point at which this method is invoked. This method will determine whether the metric is deprecated or hidden, no-opting if the metric should be considered hidden. Furthermore, this function no-opts and returns true if metric is already created.

func (TimingHistogramVecWithContext) FQName

func (r TimingHistogramVecWithContext) FQName() string

FQName returns the fully-qualified metric name of the collector.

func (TimingHistogramVecWithContext) IsCreated

func (r TimingHistogramVecWithContext) IsCreated() bool

func (TimingHistogramVecWithContext) IsDeprecated

func (r TimingHistogramVecWithContext) IsDeprecated() bool

func (TimingHistogramVecWithContext) IsHidden

func (r TimingHistogramVecWithContext) IsHidden() bool

type ValueType

ValueType is an enumeration of metric types that represent a simple value.

type ValueType int

Possible values for the ValueType enum.

const (
    CounterValue ValueType
    GaugeValue
    UntypedValue
)

Subdirectories