statemetrics

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package statemetrics is library contains interface and utilities to expose prometheus metrics for Kubernetes Resources state.

The interface is inspired by how k8s.io/kube-state-metrics provides state metrics for Kubernetes Custom Resources. This library uses prometheus.Collector interface to write the metrics instead of using the own writer generator as k8s.io/kube-state-metrics do. That makes this library compatible with Prometheus Registry

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Collector

type Collector struct {
	// APIReader is a controller-runtime client.Reader
	// that configured to uses the API server instead of cache.
	APIReader client.Reader

	// CacheReader is a controller-runtime client.Reader
	// that configured to uses controller-runtime cache.
	CacheReader client.Reader
	// contains filtered or unexported fields
}

Collector collects prometheus metrics from given providers

func NewCollector

func NewCollector(mgr ctrl.Manager, providers ...Provider) *Collector

func (*Collector) Collect

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

Collect implements prometheus.Collector.

func (*Collector) Describe

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

Describe implements prometheus.Collector.

func (*Collector) Scrape

func (c *Collector) Scrape(ctx context.Context, reader client.Reader, provider Provider) []prometheus.Metric

Scrape scrapes the metrics from the given provider. The reader may be given from either APIReader or CacheReader.

type Metric

type Metric struct {
	// LabelKeys list of prometheus label keys.
	LabelKeys []string

	// LabelValues list of prometheus label values.
	LabelValues []string

	// Value is prometheus metric value.
	Value float64
}

Metric represents a single time series.

type MetricFamily

type MetricFamily struct {
	// Name is name of metrics
	Name string

	// Help provides information about this metric.
	Help string

	// Type is prometheus metric types.
	Type prometheus.ValueType

	// MetricsFunc knowns how to provide the metrics from given Kubernetes Object.
	MetricsFunc func(obj runtime.Object) []*Metric
}

MetricFamily represents a set of metrics with the same name and help text.

type Provider

type Provider interface {
	// Namespace returns the prometheus namespace of this provider.
	Namespace() string

	// Subsystem returns the prometheus subsystem of this provider.
	Subsystem() string

	// ProvideMetricFamily returns slice of MetricFamily.
	ProvideMetricFamily() []MetricFamily

	// Lister knowns how to fetch list of Kubernetes Objects.
	Lister(ctx context.Context, r client.Reader) cache.Lister
}

Provider knowns how to construct and scrape the metrics.

Jump to

Keyboard shortcuts

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