Documentation
¶
Overview ¶
Package stats handles exporting Kubelet and container stats. NOTE: We intend to move this functionality into a standalone pod, so this package should be very loosely coupled to the rest of the Kubelet.
Index ¶
- Constants
- func CreateHandlers(provider StatsProvider) *restful.WebService
- type CPUStats
- type ContainerStats
- type FsStats
- type MemoryStats
- type NetworkStats
- type NodeStats
- type PodReference
- type PodStats
- type StatsProvider
- type StatsRequest
- type Summary
- type UserDefinedMetric
- type UserDefinedMetricDescriptor
- type UserDefinedMetricType
- type VolumeStats
Constants ¶
const ( // Container name for the system container tracking Kubelet usage. SystemContainerKubelet = "kubelet" // Container name for the system container tracking the runtime (e.g. docker or rkt) usage. SystemContainerRuntime = "runtime" // Container name for the system container tracking non-kubernetes processes. SystemContainerMisc = "misc" )
Variables ¶
This section is empty.
Functions ¶
func CreateHandlers ¶
func CreateHandlers(provider StatsProvider) *restful.WebService
Types ¶
type CPUStats ¶
type CPUStats struct {
// Total CPU usage (sum of all cores) averaged over the sample window.
// The "core" unit can be interpreted as CPU core-nanoseconds per second.
UsageNanoCores *uint64 `json:"usageNanoCores,omitempty"`
// Cumulative CPU usage (sum of all cores) since object creation.
UsageCoreNanoSeconds *uint64 `json:"usageCoreNanoSeconds,omitempty"`
}
CPUStats contains data about CPU usage.
type ContainerStats ¶
type ContainerStats struct {
// Reference to the measured container.
Name string `json:"name"`
// The time at which data collection for this container was (re)started.
StartTime unversioned.Time `json:"startTime"`
// Stats pertaining to CPU resources.
CPU *CPUStats `json:"cpu,omitempty"`
// Stats pertaining to memory (RAM) resources.
Memory *MemoryStats `json:"memory,omitempty"`
// Stats pertaining to container rootfs usage of filesystem resources.
// Rootfs.UsedBytes is the number of bytes used for the container write layer.
Rootfs *FsStats `json:"rootfs,omitempty"`
// Stats pertaining to container logs usage of filesystem resources.
// Logs.UsedBytes is the number of bytes used for the container logs.
Logs *FsStats `json:"logs,omitempty"`
// User defined metrics are arbitrary metrics exposed by containers in pods.
UserDefinedMetrics []UserDefinedMetric `json:"userDefinedMetrics,omitmepty" patchStrategy:"merge" patchMergeKey:"name"`
}
ContainerStats holds container-level unprocessed sample stats.
type FsStats ¶
type FsStats struct {
// AvailableBytes represents the storage space available (bytes) for the filesystem.
AvailableBytes *uint64 `json:"availableBytes,omitempty"`
// CapacityBytes represents the total capacity (bytes) of the filesystems underlying storage.
CapacityBytes *uint64 `json:"capacityBytes,omitempty"`
// UsedBytes represents the bytes used for a specific task on the filesystem.
// This may differ from the total bytes used on the filesystem and may not equal CapacityBytes - AvailableBytes.
// e.g. For ContainerStats.Rootfs this is the bytes used by the container rootfs on the filesystem.
UsedBytes *uint64 `json:"usedBytes,omitempty"`
}
FsStats contains data about filesystem usage.
type MemoryStats ¶
type MemoryStats struct {
// Total memory in use. This includes all memory regardless of when it was accessed.
UsageBytes *uint64 `json:"usageBytes,omitempty"`
// The amount of working set memory. This includes recently accessed memory,
// dirty memory, and kernel memory. UsageBytes is <= TotalBytes.
WorkingSetBytes *uint64 `json:"workingSetBytes,omitempty"`
// Cumulative number of minor page faults.
PageFaults *uint64 `json:"pageFaults,omitempty"`
// Cumulative number of major page faults.
MajorPageFaults *uint64 `json:"majorPageFaults,omitempty"`
}
MemoryStats contains data about memory usage.
type NetworkStats ¶
type NetworkStats struct {
// Cumulative count of bytes received.
RxBytes *uint64 `json:"rxBytes,omitempty"`
// Cumulative count of receive errors encountered.
RxErrors *uint64 `json:"rxErrors,omitempty"`
// Cumulative count of bytes transmitted.
TxBytes *uint64 `json:"txBytes,omitempty"`
// Cumulative count of transmit errors encountered.
TxErrors *uint64 `json:"txErrors,omitempty"`
}
NetworkStats contains data about network resources.
type NodeStats ¶
type NodeStats struct {
// Reference to the measured Node.
NodeName string `json:"nodeName"`
// Stats of system daemons tracked as raw containers.
// The system containers are named according to the SystemContainer* constants.
SystemContainers []ContainerStats `json:"systemContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
// The time at which data collection for the node-scoped (i.e. aggregate) stats was (re)started.
StartTime unversioned.Time `json:"startTime"`
// Stats pertaining to CPU resources.
CPU *CPUStats `json:"cpu,omitempty"`
// Stats pertaining to memory (RAM) resources.
Memory *MemoryStats `json:"memory,omitempty"`
// Stats pertaining to network resources.
Network *NetworkStats `json:"network,omitempty"`
// Stats pertaining to total usage of filesystem resources on the rootfs used by node k8s components.
// NodeFs.Used is the total bytes used on the filesystem.
Fs *FsStats `json:"fs,omitempty"`
}
NodeStats holds node-level unprocessed sample stats.
type PodReference ¶
type PodReference struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
UID string `json:"uid"`
}
PodReference contains enough information to locate the referenced pod.
type PodStats ¶
type PodStats struct {
// Reference to the measured Pod.
PodRef PodReference `json:"podRef"`
// The time at which data collection for the pod-scoped (e.g. network) stats was (re)started.
StartTime unversioned.Time `json:"startTime"`
// Stats of containers in the measured pod.
Containers []ContainerStats `json:"containers" patchStrategy:"merge" patchMergeKey:"name"`
// Stats pertaining to network resources.
Network *NetworkStats `json:"network,omitempty"`
// Stats pertaining to volume usage of filesystem resources.
// VolumeStats.UsedBytes is the number of bytes used by the Volume
VolumeStats []VolumeStats `json:"volume,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
}
PodStats holds pod-level unprocessed sample stats.
type StatsProvider ¶
type StatsProvider interface {
GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error)
GetRawContainerInfo(containerName string, req *cadvisorapi.ContainerInfoRequest, subcontainers bool) (map[string]*cadvisorapi.ContainerInfo, error)
GetPodByName(namespace, name string) (*api.Pod, bool)
}
Host methods required by stats handlers.
type StatsRequest ¶
type StatsRequest struct {
// The name of the container for which to request stats.
// Default: /
ContainerName string `json:"containerName,omitempty"`
// Max number of stats to return.
// If start and end time are specified this limit is ignored.
// Default: 60
NumStats int `json:"num_stats,omitempty"`
// Start time for which to query information.
// If omitted, the beginning of time is assumed.
Start time.Time `json:"start,omitempty"`
// End time for which to query information.
// If omitted, current time is assumed.
End time.Time `json:"end,omitempty"`
// Whether to also include information from subcontainers.
// Default: false.
Subcontainers bool `json:"subcontainers,omitempty"`
}
type Summary ¶
type Summary struct {
// The time the most recent data included in this summary was collect at, rounded to the nearest
// second.
Time unversioned.Time `json:"time"`
// Overall node stats.
Node NodeStats `json:"node"`
// Per-pod stats.
Pods []PodStats `json:"pods"`
}
Summary is a top-level container for holding NodeStats and PodStats.
type UserDefinedMetric ¶
type UserDefinedMetric struct {
UserDefinedMetricDescriptor `json:",inline"`
// Value of the metric. Float64s have 53 bit precision.
// We do not forsee any metrics exceeding that value.
Value float64 `json:"value"`
}
UserDefinedMetric represents a metric defined and generate by users.
type UserDefinedMetricDescriptor ¶
type UserDefinedMetricDescriptor struct {
// The name of the metric.
Name string `json:"name"`
// Type of the metric.
Type UserDefinedMetricType `json:"type"`
// Display Units for the stats.
Units string `json:"units"`
// Metadata labels associated with this metric.
Labels map[string]string `json:"labels,omitempty"`
}
UserDefinedMetricDescriptor contains metadata that describes a user defined metric.
type UserDefinedMetricType ¶
type UserDefinedMetricType string
UserDefinedMetricType defines how the metric should be interpreted by the user.
const ( // Instantaneous value. May increase or decrease. MetricGauge UserDefinedMetricType = "gauge" // A counter-like value that is only expected to increase. MetricCumulative UserDefinedMetricType = "cumulative" // Rate over a time period. MetricDelta UserDefinedMetricType = "delta" )
type VolumeStats ¶
type VolumeStats struct {
// Embedded FsStats
FsStats
// Name is the name given to the Volume
Name string `json:"name,omitempty"`
}
VolumeStats contains data about Volume filesystem usage.