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 ¶
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-seconds per second. UsageCores *resource.Quantity `json:"usageCores,omitempty"` // Cumulative CPU usage (sum of all cores) since object creation. UsageCoreSeconds *resource.Quantity `json:"usageCoreSeconds,omitempty"` }
CPUStats contains data about CPU usage.
type ContainerStats ¶
type ContainerStats struct { // Reference to the measured container. Name string `json:"name"` // 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"` }
ContainerStats holds container-level unprocessed sample stats.
type FsStats ¶
type FsStats struct { // AvailableBytes represents the storage space available (bytes) for the filesystem. AvailableBytes *resource.Quantity `json:"availableBytes,omitempty"` // CapacityBytes represents the total capacity (bytes) of the filesystems underlying storage. CapacityBytes *resource.Quantity `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 *resource.Quantity `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 *resource.Quantity `json:"usageBytes,omitempty"` // The amount of working set memory. This includes recently accessed memory, // dirty memory, and kernel memory. UsageBytes is <= TotalBytes. WorkingSetBytes *resource.Quantity `json:"workingSetBytes,omitempty"` // Cumulative number of minor page faults. PageFaults *int64 `json:"pageFaults,omitempty"` // Cumulative number of major page faults. MajorPageFaults *int64 `json:"majorPageFaults,omitempty"` }
MemoryStats contains data about memory usage.
type NetworkStats ¶
type NetworkStats struct { // Cumulative count of bytes received. RxBytes *resource.Quantity `json:"rxBytes,omitempty"` // Cumulative count of receive errors encountered. RxErrors *int64 `json:"rxErrors,omitempty"` // Cumulative count of bytes transmitted. TxBytes *resource.Quantity `json:"txBytes,omitempty"` // Cumulative count of transmit errors encountered. TxErrors *int64 `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"` // 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 NonLocalObjectReference ¶
type NonLocalObjectReference struct { Name string `json:"name"` Namespace string `json:"namespace"` }
NonLocalObjectReference contains enough information to locate the referenced object.
type PodStats ¶
type PodStats struct { // Reference to the measured Pod. PodRef NonLocalObjectReference `json:"podRef"` // 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 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.