metrics

package
v1.9.1 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetMetricUsageRatio

func GetMetricUsageRatio(metrics PodMetricsInfo, targetUsage int64) (utilizationRatio float64, currentUsage int64)

GetMetricUsageRatio takes in a set of metrics and a target utilization value, and calculates the ratio of desired to actual utilization (returning that and the actual utilization)

func GetResourceUtilizationRatio

func GetResourceUtilizationRatio(metrics PodMetricsInfo, requests map[string]int64, targetUtilization int32) (utilizationRatio float64, currentUtilization int32, rawAverageValue int64, err error)

GetResourceUtilizationRatio takes in a set of metrics, a set of matching requests, and a target utilization percentage, and calculates the ratio of desired to actual utilization (returning that, the actual utilization, and the raw average value)

Types

type PodMetric

type PodMetric struct {
	Timestamp time.Time
	Window    time.Duration
	Value     int64
}

PodMetric contains pod metric value (the metric values are expected to be the metric as a milli-value)

type PodMetricsInfo

type PodMetricsInfo map[string]PodMetric

PodMetricsInfo contains pod metrics as a map from pod names to PodMetricsInfo

type QueryClient added in v1.9.0

type QueryClient interface {
	// GetResourceMetric gets the given resource metric (and an associated oldest timestamp)
	// for the specified named container in all pods matching the specified selector in the given namespace and when
	// the container is an empty string it returns the sum of all the container metrics.
	GetResourceMetric(ctx context.Context, resource corev1.ResourceName, namespace string, selector labels.Selector, container string) (PodMetricsInfo, time.Time, error)

	// GetRawMetric gets the given metric (and an associated oldest timestamp)
	// for all pods matching the specified selector in the given namespace
	GetRawMetric(metricName string, namespace string, selector labels.Selector, metricSelector labels.Selector) (PodMetricsInfo, time.Time, error)

	// GetObjectMetric gets the given metric (and an associated timestamp) for the given
	// object in the given namespace
	GetObjectMetric(metricName string, namespace string, objectRef *autoscalingv2.CrossVersionObjectReference, metricSelector labels.Selector) (int64, time.Time, error)

	// GetExternalMetric gets all the values of a given external metric
	// that match the specified selector.
	GetExternalMetric(metricName string, namespace string, selector labels.Selector) ([]int64, time.Time, error)
}

QueryClient knows how to query a remote interface to retrieve container-level resource metrics as well as pod-level arbitrary metrics

func NewRESTMetricsClient

func NewRESTMetricsClient(resourceClient resourceclient.PodMetricsesGetter, customClient customclient.CustomMetricsClient, externalClient externalclient.ExternalMetricsClient) QueryClient

NewRESTMetricsClient creates a new MetricsClient which uses the given

Jump to

Keyboard shortcuts

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