Version: v1.9.3 Latest Latest

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

Go to latest
Published: Jan 24, 2022 License: MPL-2.0 Imports: 17 Imported by: 11




View Source
const (
	OpenMetricsMIMEType = "application/openmetrics-text"

	PrometheusSchemaMIMEType = "prometheus/telemetry"

	// ErrorContentType is the content type returned by an error response.
	ErrorContentType = "text/plain"
View Source
const OverflowBucket = "+Inf"
View Source
const (
	PrometheusMetricFormat = "prometheus"


View Source
var LogicalTableSizeName []string = []string{"core", "mount_table", "num_entries"}

LogicalTableSizeName is a set of gauge metric keys for logical mount table sizes

View Source
var PhysicalTableSizeName []string = []string{"core", "mount_table", "size"}

PhysicalTableSizeName is a set of gauge metric keys for physical mount table sizes


func FormatFromRequest

func FormatFromRequest(req *logical.Request) string

func NamespaceLabel added in v1.5.0

func NamespaceLabel(ns *namespace.Namespace) metrics.Label

NamespaceLabel creates a metrics label for the given Namespace: root is "root"; others are path with the final '/' removed.

func TTLBucket added in v1.5.0

func TTLBucket(ttl time.Duration) string

TTLBucket computes the label to apply for a token TTL.


type ClusterMetricSink added in v1.5.0

type ClusterMetricSink struct {
	// ClusterName is either the cluster ID, or a name provided
	// in the telemetry configuration stanza.
	// Because it may be set after the Core is initialized, we need
	// to protect against concurrent access.
	ClusterName atomic.Value

	MaxGaugeCardinality int
	GaugeInterval       time.Duration

	// Sink is the go-metrics instance to send to.
	Sink metrics.MetricSink

	// Constants that are helpful for metrics within the metrics sink
	TelemetryConsts TelemetryConstConfig

ClusterMetricSink serves as a shim around go-metrics and inserts a "cluster" label.

It also provides a mechanism to limit the cardinality of the labels on a gauge (at each reporting interval, which isn't sufficient if there is variability in which labels are the top N) and a backoff mechanism for gauge computation.

func BlackholeSink added in v1.5.0

func BlackholeSink() *ClusterMetricSink

BlackholeSink is a default suitable for use in unit tests.

func NewClusterMetricSink added in v1.5.0

func NewClusterMetricSink(clusterName string, sink metrics.MetricSink) *ClusterMetricSink

func (*ClusterMetricSink) AddDurationWithLabels added in v1.5.0

func (m *ClusterMetricSink) AddDurationWithLabels(key []string, d time.Duration, labels []Label)

func (*ClusterMetricSink) AddSample added in v1.7.0

func (m *ClusterMetricSink) AddSample(key []string, val float32)

func (*ClusterMetricSink) AddSampleWithLabels added in v1.5.0

func (m *ClusterMetricSink) AddSampleWithLabels(key []string, val float32, labels []Label)

func (*ClusterMetricSink) IncrCounterWithLabels added in v1.5.0

func (m *ClusterMetricSink) IncrCounterWithLabels(key []string, val float32, labels []Label)

func (*ClusterMetricSink) MeasureSinceWithLabels added in v1.5.0

func (m *ClusterMetricSink) MeasureSinceWithLabels(key []string, start time.Time, labels []Label)

func (*ClusterMetricSink) NewGaugeCollectionProcess added in v1.5.0

func (m *ClusterMetricSink) NewGaugeCollectionProcess(
	key []string,
	id []Label,
	collector GaugeCollector,
	logger log.Logger,
) (*GaugeCollectionProcess, error)

NewGaugeCollectionProcess creates a new collection process for the callback function given as an argument, and starts it running. A label should be provided for metrics *about* this collection process.

The Run() method must be called to start the process.

func (*ClusterMetricSink) SetDefaultClusterName added in v1.5.0

func (m *ClusterMetricSink) SetDefaultClusterName(clusterName string)

SetDefaultClusterName changes the cluster name from its default value, if it has not previously been configured.

func (*ClusterMetricSink) SetGauge added in v1.7.0

func (m *ClusterMetricSink) SetGauge(key []string, val float32)

func (*ClusterMetricSink) SetGaugeWithLabels added in v1.5.0

func (m *ClusterMetricSink) SetGaugeWithLabels(key []string, val float32, labels []Label)

type GaugeCollectionProcess added in v1.5.0

type GaugeCollectionProcess struct {
	// contains filtered or unexported fields

A GaugeCollectionProcess is responsible for one particular gauge metric. It handles a delay on initial startup; limiting the cardinality; and exponential backoff on the requested interval.

func (*GaugeCollectionProcess) Run added in v1.5.0

func (p *GaugeCollectionProcess) Run()

Run should be called as a goroutine.

func (*GaugeCollectionProcess) Stop added in v1.5.0

func (p *GaugeCollectionProcess) Stop()

Stop the collection process

type GaugeCollector added in v1.5.0

type GaugeCollector = func(context.Context) ([]GaugeLabelValues, error)

GaugeCollector is a callback function that returns an unfiltered set of label-value pairs. It may be cancelled if it takes too long.

type GaugeLabelValues added in v1.5.0

type GaugeLabelValues struct {
	Labels []Label
	Value  float32

GaugeLabelValues is one gauge in a set sharing a single key, that are measured in a batch.

type GaugeMetric added in v1.6.0

type GaugeMetric struct {
	Value  float32
	Labels []Label
	Key    []string

type GaugeMetrics added in v1.6.0

type GaugeMetrics struct {
	// Metrics is a map from keys concatenated by "." to the metric.
	// It is a map because although we do not care about distinguishing
	// these loop metrics during emission, we must distinguish them
	// when we update a metric.
	Metrics sync.Map

type Label added in v1.5.0

type Label = metrics.Label

Convenience alias

type LeaseExpiryLabel added in v1.7.0

type LeaseExpiryLabel = struct {
	LabelName string
	LabelNS   string

func ExpiryBucket added in v1.7.0

func ExpiryBucket(expiryTime time.Time, leaseEpsilon time.Duration, rollingWindow time.Time, labelNS string, useNS bool) *LeaseExpiryLabel

type Metrics added in v1.6.0

type Metrics interface {
	SetGaugeWithLabels(key []string, val float32, labels []Label)
	IncrCounterWithLabels(key []string, val float32, labels []Label)
	AddSampleWithLabels(key []string, val float32, labels []Label)
	AddDurationWithLabels(key []string, d time.Duration, labels []Label)
	MeasureSinceWithLabels(key []string, start time.Time, labels []Label)

type MetricsHelper

type MetricsHelper struct {
	PrometheusEnabled bool
	LoopMetrics       GaugeMetrics
	// contains filtered or unexported fields

func NewMetricsHelper

func NewMetricsHelper(inMem *metrics.InmemSink, enablePrometheus bool) *MetricsHelper

func (*MetricsHelper) AddGaugeLoopMetric added in v1.6.0

func (m *MetricsHelper) AddGaugeLoopMetric(key []string, val float32, labels []Label)

func (*MetricsHelper) CreateMetricsCacheKeyName added in v1.6.0

func (m *MetricsHelper) CreateMetricsCacheKeyName(key []string, val float32, labels []Label) string

func (*MetricsHelper) GenericResponse

func (m *MetricsHelper) GenericResponse() *logical.Response

func (*MetricsHelper) PrometheusResponse

func (m *MetricsHelper) PrometheusResponse() *logical.Response

func (*MetricsHelper) ResponseForFormat

func (m *MetricsHelper) ResponseForFormat(format string) *logical.Response

type TelemetryConstConfig added in v1.7.0

type TelemetryConstConfig struct {
	LeaseMetricsEpsilon         time.Duration
	NumLeaseMetricsTimeBuckets  int
	LeaseMetricsNameSpaceLabels bool

Jump to

Keyboard shortcuts

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