 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
- Variables
- func ClusterKey() string
- func GcmLabels() map[string]LabelDescriptor
- func GcmNodeAutoscalingLabels() map[string]LabelDescriptor
- func IsNodeAutoscalingMetric(name string) bool
- func NamespaceKey(namespace string) string
- func NodeContainerKey(node, container string) string
- func NodeKey(node string) string
- func PodContainerKey(namespace, podName, containerName string) string
- func PodKey(namespace, podName string) string
- type DataBatch
- type DataProcessor
- type DataSink
- type LabelDescriptor
- type LabeledMetric
- type Metric
- type MetricDescriptor
- type MetricSet
- type MetricType
- type MetricValue
- type MetricsSource
- type MetricsSourceProvider
- type UnitsType
- type ValueType
Constants ¶
      View Source
      
  
const (
	CustomMetricPrefix = "custom/"
)
    Variables ¶
      View Source
      
  
    var ( LabelMetricSetType = LabelDescriptor{ Key: "type", Description: "Type of the metrics set (container, pod, namespace, node, cluster)", } MetricSetTypeSystemContainer = "sys_container" MetricSetTypePodContainer = "pod_container" MetricSetTypePod = "pod" MetricSetTypeNamespace = "ns" MetricSetTypeNode = "node" MetricSetTypeCluster = "cluster" LabelPodId = LabelDescriptor{ Key: "pod_id", Description: "The unique ID of the pod", } LabelPodName = LabelDescriptor{ Key: "pod_name", Description: "The name of the pod", } // Deprecated label LabelPodNamespace = LabelDescriptor{ Key: "pod_namespace", Description: "The namespace of the pod", } LabelNamespaceName = LabelDescriptor{ Key: "namespace_name", Description: "The name of the namespace", } LabelPodNamespaceUID = LabelDescriptor{ Key: "namespace_id", Description: "The UID of namespace of the pod", } LabelContainerName = LabelDescriptor{ Key: "container_name", Description: "User-provided name of the container or full container name for system containers", } LabelLabels = LabelDescriptor{ Key: "labels", Description: "Comma-separated list of user-provided labels", } LabelNodename = LabelDescriptor{ Key: "nodename", Description: "nodename where the container ran", } LabelHostname = LabelDescriptor{ Key: "hostname", Description: "Hostname where the container ran", } LabelResourceID = LabelDescriptor{ Key: "resource_id", Description: "Identifier(s) specific to a metric", } LabelHostID = LabelDescriptor{ Key: "host_id", Description: "Identifier specific to a host. Set by cloud provider or user", } LabelContainerBaseImage = LabelDescriptor{ Key: "container_base_image", Description: "User-defined image name that is run inside the container", } // The label is populated only for GCM LabelCustomMetricName = LabelDescriptor{ Key: "custom_metric_name", Description: "User-defined name of the exported custom metric", } LabelGCEResourceID = LabelDescriptor{ Key: "compute.googleapis.com/resource_id", Description: "Resource id for nodes specific for GCE.", } LabelGCEResourceType = LabelDescriptor{ Key: "compute.googleapis.com/resource_type", Description: "Resource types for nodes specific for GCE.", } )
      View Source
      
  var AdditionalMetrics = []Metric{ MetricCpuRequest, MetricCpuLimit, MetricMemoryRequest, MetricMemoryLimit}
Metrics computed based on cluster state using Kubernetes API.
      View Source
      
  
    var AllMetrics = append(append(append(append(StandardMetrics, AdditionalMetrics...), RateMetrics...), LabeledMetrics...), NodeAutoscalingMetrics...)
      View Source
      
  
    var LabeledMetrics = []Metric{ MetricFilesystemUsage, MetricFilesystemLimit, MetricFilesystemAvailable, }
      View Source
      
  
    var MetricCpuLimit = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/limit", Description: "CPU hard limit in millicores.", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsCount, }, }
      View Source
      
  var MetricCpuRequest = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/request", Description: "CPU request (the guaranteed amount of resources) in millicores. This metric is Kubernetes specific.", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsCount, }, }
Definition of Additional Metrics.
      View Source
      
  
    var MetricCpuUsage = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/usage", Description: "Cumulative CPU usage on all cores", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsNanoseconds, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasCpu }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Cpu.Usage.Total)} }, }
      View Source
      
  var MetricCpuUsageRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/usage_rate", Description: "CPU usage on all cores in millicores", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsCount, }, }
Definition of Rate Metrics.
      View Source
      
  
    var MetricFilesystemAvailable = Metric{ MetricDescriptor: MetricDescriptor{ Name: "filesystem/available", Description: "The number of available bytes remaining in a the filesystem", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, Labels: metricLabels, }, }
      View Source
      
  
    var MetricFilesystemLimit = Metric{ MetricDescriptor: MetricDescriptor{ Name: "filesystem/limit", Description: "The total size of filesystem in bytes", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, Labels: metricLabels, }, HasLabeledMetric: func(spec *cadvisor.ContainerSpec) bool { return spec.HasFilesystem }, GetLabeledMetric: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) []LabeledMetric { result := make([]LabeledMetric, 0, len(stat.Filesystem)) for _, fs := range stat.Filesystem { result = append(result, LabeledMetric{ Name: "filesystem/limit", Labels: map[string]string{ LabelResourceID.Key: fs.Device, }, MetricValue: MetricValue{ ValueType: ValueInt64, MetricType: MetricGauge, IntValue: int64(fs.Limit), }, }) } return result }, }
      View Source
      
  
    var MetricFilesystemUsage = Metric{ MetricDescriptor: MetricDescriptor{ Name: "filesystem/usage", Description: "Total number of bytes consumed on a filesystem", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, Labels: metricLabels, }, HasLabeledMetric: func(spec *cadvisor.ContainerSpec) bool { return spec.HasFilesystem }, GetLabeledMetric: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) []LabeledMetric { result := make([]LabeledMetric, 0, len(stat.Filesystem)) for _, fs := range stat.Filesystem { result = append(result, LabeledMetric{ Name: "filesystem/usage", Labels: map[string]string{ LabelResourceID.Key: fs.Device, }, MetricValue: MetricValue{ ValueType: ValueInt64, MetricType: MetricGauge, IntValue: int64(fs.Usage), }, }) } return result }, }
      View Source
      
  
    var MetricMemoryLimit = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/limit", Description: "Memory hard limit in bytes.", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, }, }
      View Source
      
  
    var MetricMemoryMajorPageFaults = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/major_page_faults", Description: "Number of major page faults", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsCount, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasMemory }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Memory.ContainerData.Pgmajfault)} }, }
      View Source
      
  
    var MetricMemoryMajorPageFaultsRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/major_page_faults_rate", Description: "Rate of major page faults in counts per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricMemoryPageFaults = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/page_faults", Description: "Number of page faults", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsCount, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasMemory }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Memory.ContainerData.Pgfault)} }, }
      View Source
      
  
    var MetricMemoryPageFaultsRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/page_faults_rate", Description: "Rate of page faults in counts per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricMemoryRequest = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/request", Description: "Memory request (the guaranteed amount of resources) in bytes. This metric is Kubernetes specific.", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, }, }
      View Source
      
  
    var MetricMemoryUsage = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/usage", Description: "Total memory usage", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasMemory }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricGauge, IntValue: int64(stat.Memory.Usage)} }, }
      View Source
      
  
    var MetricMemoryWorkingSet = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/working_set", Description: "Total working set usage. Working set is the memory being used and not easily dropped by the kernel", Type: MetricGauge, ValueType: ValueInt64, Units: UnitsBytes, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasMemory }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricGauge, IntValue: int64(stat.Memory.WorkingSet)} }, }
      View Source
      
  
    var MetricNetworkRx = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/rx", Description: "Cumulative number of bytes received over the network", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsBytes, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasNetwork }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Network.RxBytes)} }, }
      View Source
      
  
    var MetricNetworkRxErrors = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/rx_errors", Description: "Cumulative number of errors while receiving over the network", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsCount, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasNetwork }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Network.RxErrors)} }, }
      View Source
      
  
    var MetricNetworkRxErrorsRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/rx_errors_rate", Description: "Rate of errors sending over the network in errors per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNetworkRxRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/rx_rate", Description: "Rate of bytes received over the network in bytes per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNetworkTx = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/tx", Description: "Cumulative number of bytes sent over the network", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsBytes, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasNetwork }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Network.TxBytes)} }, }
      View Source
      
  
    var MetricNetworkTxErrors = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/tx_errors", Description: "Cumulative number of errors while sending over the network", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsCount, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return spec.HasNetwork }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: int64(stat.Network.TxErrors)} }, }
      View Source
      
  
    var MetricNetworkTxErrorsRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/tx_errors_rate", Description: "Rate of errors transmitting over the network in errors per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNetworkTxRate = Metric{ MetricDescriptor: MetricDescriptor{ Name: "network/tx_rate", Description: "Rate of bytes transmitted over the network in bytes per second", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNodeCpuReservation = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/node_reservation", Description: "Share of cpu that is reserved on the node", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNodeCpuUtilization = Metric{ MetricDescriptor: MetricDescriptor{ Name: "cpu/node_utilization", Description: "Cpu utilization as a share of node capacity", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNodeMemoryReservation = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/node_reservation", Description: "Share of memory that is reserved on the node", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  
    var MetricNodeMemoryUtilization = Metric{ MetricDescriptor: MetricDescriptor{ Name: "memory/node_utilization", Description: "Memory utilization as a share of memory capacity", Type: MetricGauge, ValueType: ValueFloat, Units: UnitsCount, }, }
      View Source
      
  var MetricUptime = Metric{ MetricDescriptor: MetricDescriptor{ Name: "uptime", Description: "Number of milliseconds since the container was started", Type: MetricCumulative, ValueType: ValueInt64, Units: UnitsMilliseconds, }, HasValue: func(spec *cadvisor.ContainerSpec) bool { return !spec.CreationTime.IsZero() }, GetValue: func(spec *cadvisor.ContainerSpec, stat *cadvisor.ContainerStats) MetricValue { return MetricValue{ ValueType: ValueInt64, MetricType: MetricCumulative, IntValue: time.Since(spec.CreationTime).Nanoseconds() / time.Millisecond.Nanoseconds()} }, }
Definition of Standard Metrics.
      View Source
      
  
    var NodeAutoscalingMetrics = []Metric{ MetricNodeCpuUtilization, MetricNodeMemoryUtilization, MetricNodeCpuReservation, MetricNodeMemoryReservation, }
      View Source
      
  var RateMetrics = []Metric{ MetricCpuUsageRate, MetricMemoryPageFaultsRate, MetricMemoryMajorPageFaultsRate, MetricNetworkRxRate, MetricNetworkRxErrorsRate, MetricNetworkTxRate, MetricNetworkTxErrorsRate}
Computed based on corresponding StandardMetrics.
      View Source
      
  
    var RateMetricsMapping = map[string]Metric{ MetricCpuUsage.MetricDescriptor.Name: MetricCpuUsageRate, MetricMemoryPageFaults.MetricDescriptor.Name: MetricMemoryPageFaultsRate, MetricMemoryMajorPageFaults.MetricDescriptor.Name: MetricMemoryMajorPageFaultsRate, MetricNetworkRx.MetricDescriptor.Name: MetricNetworkRxRate, MetricNetworkRxErrors.MetricDescriptor.Name: MetricNetworkRxErrorsRate, MetricNetworkTx.MetricDescriptor.Name: MetricNetworkTxRate, MetricNetworkTxErrors.MetricDescriptor.Name: MetricNetworkTxErrorsRate}
      View Source
      
  var StandardMetrics = []Metric{ MetricUptime, MetricCpuUsage, MetricMemoryUsage, MetricMemoryWorkingSet, MetricMemoryPageFaults, MetricMemoryMajorPageFaults, MetricNetworkRx, MetricNetworkRxErrors, MetricNetworkTx, MetricNetworkTxErrors}
Provided by Kubelet/cadvisor.
Functions ¶
func ClusterKey ¶
func ClusterKey() string
func GcmLabels ¶
func GcmLabels() map[string]LabelDescriptor
func GcmNodeAutoscalingLabels ¶
func GcmNodeAutoscalingLabels() map[string]LabelDescriptor
func IsNodeAutoscalingMetric ¶
func NamespaceKey ¶
func NodeContainerKey ¶
func PodContainerKey ¶
Types ¶
type DataProcessor ¶
type DataSink ¶
type DataSink interface {
	Name() string
	// Exports data to the external storge. The funciton should be synchronous/blocking and finish only
	// after the given DataBatch was written. This will allow sink manager to push data only to these
	// sinks that finished writing the previous data.
	ExportData(*DataBatch)
	Stop()
}
    type LabelDescriptor ¶
type LabelDescriptor struct {
	// Key to use for the label.
	Key string `json:"key,omitempty"`
	// Description of the label.
	Description string `json:"description,omitempty"`
}
    func CommonLabels ¶
func CommonLabels() []LabelDescriptor
func ContainerLabels ¶
func ContainerLabels() []LabelDescriptor
func MetricLabels ¶
func MetricLabels() []LabelDescriptor
func PodLabels ¶
func PodLabels() []LabelDescriptor
func SupportedLabels ¶
func SupportedLabels() []LabelDescriptor
type LabeledMetric ¶
type LabeledMetric struct {
	Name   string
	Labels map[string]string
	MetricValue
}
    func (*LabeledMetric) GetValue ¶
func (this *LabeledMetric) GetValue() interface{}
type Metric ¶
type Metric struct {
	MetricDescriptor
	// Returns whether this metric is present.
	HasValue func(*cadvisor.ContainerSpec) bool
	// Returns a slice of internal point objects that contain metric values and associated labels.
	GetValue func(*cadvisor.ContainerSpec, *cadvisor.ContainerStats) MetricValue
	// Returns whether this metric is present.
	HasLabeledMetric func(*cadvisor.ContainerSpec) bool
	// Returns a slice of internal point objects that contain metric values and associated labels.
	GetLabeledMetric func(*cadvisor.ContainerSpec, *cadvisor.ContainerStats) []LabeledMetric
}
    Metric represents a resource usage stat metric.
type MetricDescriptor ¶
type MetricDescriptor struct {
	// The unique name of the metric.
	Name string `json:"name,omitempty"`
	// Description of the metric.
	Description string `json:"description,omitempty"`
	// Descriptor of the labels specific to this metric.
	Labels []LabelDescriptor `json:"labels,omitempty"`
	// Type and value of metric data.
	Type      MetricType `json:"type,omitempty"`
	ValueType ValueType  `json:"value_type,omitempty"`
	Units     UnitsType  `json:"units,omitempty"`
}
    type MetricSet ¶
type MetricSet struct {
	CreateTime     time.Time
	ScrapeTime     time.Time
	MetricValues   map[string]MetricValue
	Labels         map[string]string
	LabeledMetrics []LabeledMetric
}
    type MetricType ¶
type MetricType int8
const ( MetricCumulative MetricType = iota MetricGauge MetricDelta )
func (*MetricType) String ¶
func (self *MetricType) String() string
type MetricValue ¶
type MetricValue struct {
	IntValue   int64
	FloatValue float32
	MetricType MetricType
	ValueType  ValueType
}
    func (*MetricValue) GetValue ¶
func (this *MetricValue) GetValue() interface{}
type MetricsSource ¶
A place from where the metrics should be scraped.
type MetricsSourceProvider ¶
type MetricsSourceProvider interface {
	GetMetricsSources() []MetricsSource
}
    Provider of list of sources to be scaped.
 Click to show internal directories. 
   Click to hide internal directories.