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, resourceAnalyzer ResourceAnalyzer) *restful.WebService
- type CPUStats
- type Cache
- type ContainerStats
- type FsStats
- type MemoryStats
- type MockStatsProvider
- func (_m *MockStatsProvider) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
- func (_m *MockStatsProvider) GetContainerInfo(podFullName string, uid types.UID, containerName string, ...) (*cadvisorapi.ContainerInfo, error)
- func (_m *MockStatsProvider) GetContainerInfoV2(name string, options cadvisorapiv2.RequestOptions) (map[string]cadvisorapiv2.ContainerInfo, error)
- func (_m *MockStatsProvider) GetNode() (*api.Node, error)
- func (_m *MockStatsProvider) GetNodeConfig() cm.NodeConfig
- func (_m *MockStatsProvider) GetPodByName(namespace string, name string) (*api.Pod, bool)
- func (_m *MockStatsProvider) GetPods() []*api.Pod
- func (_m *MockStatsProvider) GetRawContainerInfo(containerName string, req *cadvisorapi.ContainerInfoRequest, ...) (map[string]*cadvisorapi.ContainerInfo, error)
- func (_m *MockStatsProvider) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool)
- func (_m *MockStatsProvider) RootFsInfo() (cadvisorapiv2.FsInfo, error)
- type NetworkStats
- type NodeStats
- type PodReference
- type PodStats
- type PodVolumeStats
- type ResourceAnalyzer
- type StatsProvider
- type StatsRequest
- type Summary
- type SummaryProvider
- 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, resourceAnalyzer ResourceAnalyzer) *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 Cache ¶ added in v1.1.4
type Cache map[types.UID]*PodVolumeStats
Map to PodVolumeStats pointers since the addresses for map values are not constant and can cause pain if we need ever to get a pointer to one of the values (e.g. you can't)
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 that are exposed by containers in the pod. Typically, we expect only one container in the pod to be exposing user defined metrics. In the event of multiple containers exposing metrics, they will be combined here. 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 MockStatsProvider ¶ added in v1.1.4
func (*MockStatsProvider) DockerImagesFsInfo ¶ added in v1.1.4
func (_m *MockStatsProvider) DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error)
DockerImagesFsInfo provides a mock function with given fields:
func (*MockStatsProvider) GetContainerInfo ¶ added in v1.1.4
func (_m *MockStatsProvider) GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error)
GetContainerInfo provides a mock function with given fields: podFullName, uid, containerName, req
func (*MockStatsProvider) GetContainerInfoV2 ¶ added in v1.1.4
func (_m *MockStatsProvider) GetContainerInfoV2(name string, options cadvisorapiv2.RequestOptions) (map[string]cadvisorapiv2.ContainerInfo, error)
GetContainerInfoV2 provides a mock function with given fields: name, options
func (*MockStatsProvider) GetNode ¶ added in v1.1.4
func (_m *MockStatsProvider) GetNode() (*api.Node, error)
GetNode provides a mock function with given fields:
func (*MockStatsProvider) GetNodeConfig ¶ added in v1.1.4
func (_m *MockStatsProvider) GetNodeConfig() cm.NodeConfig
GetNodeConfig provides a mock function with given fields:
func (*MockStatsProvider) GetPodByName ¶ added in v1.1.4
GetPodByName provides a mock function with given fields: namespace, name
func (*MockStatsProvider) GetPods ¶ added in v1.1.4
func (_m *MockStatsProvider) GetPods() []*api.Pod
GetPods provides a mock function with given fields:
func (*MockStatsProvider) GetRawContainerInfo ¶ added in v1.1.4
func (_m *MockStatsProvider) GetRawContainerInfo(containerName string, req *cadvisorapi.ContainerInfoRequest, subcontainers bool) (map[string]*cadvisorapi.ContainerInfo, error)
GetRawContainerInfo provides a mock function with given fields: containerName, req, subcontainers
func (*MockStatsProvider) ListVolumesForPod ¶ added in v1.1.4
ListVolumesForPod provides a mock function with given fields: podUID
func (*MockStatsProvider) RootFsInfo ¶ added in v1.1.4
func (_m *MockStatsProvider) RootFsInfo() (cadvisorapiv2.FsInfo, error)
RootFsInfo provides a mock function with given fields:
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 ¶ added in v1.1.4
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 PodVolumeStats ¶ added in v1.1.4
type PodVolumeStats struct {
Volumes []VolumeStats
}
PodVolumeStats encapsulates all VolumeStats for a pod
type ResourceAnalyzer ¶ added in v1.1.4
type ResourceAnalyzer interface { Start() // contains filtered or unexported methods }
ResourceAnalyzer provides statistics on node resource consumption
func NewResourceAnalyzer ¶ added in v1.1.4
func NewResourceAnalyzer(statsProvider StatsProvider, calVolumeFrequency time.Duration) ResourceAnalyzer
NewResourceAnalyzer returns a new ResourceAnalyzer
type StatsProvider ¶
type StatsProvider interface { GetContainerInfo(podFullName string, uid types.UID, containerName string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error) GetContainerInfoV2(name string, options cadvisorapiv2.RequestOptions) (map[string]cadvisorapiv2.ContainerInfo, error) GetRawContainerInfo(containerName string, req *cadvisorapi.ContainerInfoRequest, subcontainers bool) (map[string]*cadvisorapi.ContainerInfo, error) GetPodByName(namespace, name string) (*api.Pod, bool) GetNode() (*api.Node, error) GetNodeConfig() cm.NodeConfig DockerImagesFsInfo() (cadvisorapiv2.FsInfo, error) RootFsInfo() (cadvisorapiv2.FsInfo, error) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) GetPods() []*api.Pod }
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 SummaryProvider ¶ added in v1.1.4
type SummaryProvider interface { // Get provides a new Summary using the latest results from cadvisor Get() (*Summary, error) }
func NewSummaryProvider ¶ added in v1.1.4
func NewSummaryProvider(statsProvider StatsProvider, resourceAnalyzer ResourceAnalyzer) SummaryProvider
NewSummaryProvider returns a new SummaryProvider
type UserDefinedMetric ¶ added in v1.1.4
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 ¶ added in v1.1.4
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 ¶ added in v1.1.4
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.