Documentation ¶
Index ¶
- Constants
- type Cache
- type ContainerInfo
- type ContainerInfoRequest
- type ContainerReference
- type ContainerReferenceSlice
- type ContainerSpec
- type ContainerStats
- type Core
- type CpuSpec
- type CpuStats
- type CpuUsage
- type DiskInfo
- type DiskIoStats
- type Event
- type EventData
- type EventType
- type FsInfo
- type FsStats
- type LoadStats
- type MachineInfo
- type MachineInfoFactory
- type MemorySpec
- type MemoryStats
- type MemoryStatsMemoryData
- type NetInfo
- type NetworkStats
- type Node
- type OomKillEventData
- type PerDiskStats
- type VersionInfo
Constants ¶
const ( EventOom EventType = "oom" EventOomKill = "oomKill" EventContainerCreation = "containerCreation" EventContainerDeletion = "containerDeletion" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContainerInfo ¶
type ContainerInfo struct { ContainerReference // The direct subcontainers of the current container. Subcontainers []ContainerReference `json:"subcontainers,omitempty"` // The isolation used in the container. Spec ContainerSpec `json:"spec,omitempty"` // Historical statistics gathered from the container. Stats []*ContainerStats `json:"stats,omitempty"` }
func (*ContainerInfo) Eq ¶
func (self *ContainerInfo) Eq(b *ContainerInfo) bool
TODO(vmarmol): Refactor to not need this equality comparison. ContainerInfo may be (un)marshaled by json or other en/decoder. In that case, the Timestamp field in each stats/sample may not be precisely en/decoded. This will lead to small but acceptable differences between a ContainerInfo and its encode-then-decode version. Eq() is used to compare two ContainerInfo accepting small difference (<10ms) of Time fields.
func (*ContainerInfo) StatsAfter ¶
func (self *ContainerInfo) StatsAfter(ref time.Time) []*ContainerStats
func (*ContainerInfo) StatsEndTime ¶
func (self *ContainerInfo) StatsEndTime() time.Time
func (*ContainerInfo) StatsStartTime ¶
func (self *ContainerInfo) StatsStartTime() time.Time
type ContainerInfoRequest ¶
type ContainerInfoRequest struct { // Max number of stats to return. Specify -1 for all stats currently available. // 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 ommitted, the beginning of time is assumed. Start time.Time `json:"start,omitempty"` // End time for which to query information. // If ommitted, current time is assumed. End time.Time `json:"end,omitempty"` }
ContainerInfoQuery is used when users check a container info from the REST api. It specifies how much data users want to get about a container
func DefaultContainerInfoRequest ¶ added in v0.12.0
func DefaultContainerInfoRequest() ContainerInfoRequest
Returns a ContainerInfoRequest with all default values specified.
func (*ContainerInfoRequest) Equals ¶
func (self *ContainerInfoRequest) Equals(other ContainerInfoRequest) bool
type ContainerReference ¶
type ContainerReference struct { // The absolute name of the container. This is unique on the machine. Name string `json:"name"` // Other names by which the container is known within a certain namespace. // This is unique within that namespace. Aliases []string `json:"aliases,omitempty"` // Namespace under which the aliases of a container are unique. // An example of a namespace is "docker" for Docker containers. Namespace string `json:"namespace,omitempty"` }
Container reference contains enough information to uniquely identify a container
type ContainerReferenceSlice ¶
type ContainerReferenceSlice []ContainerReference
Sorts by container name.
func (ContainerReferenceSlice) Len ¶
func (self ContainerReferenceSlice) Len() int
func (ContainerReferenceSlice) Less ¶
func (self ContainerReferenceSlice) Less(i, j int) bool
func (ContainerReferenceSlice) Swap ¶
func (self ContainerReferenceSlice) Swap(i, j int)
type ContainerSpec ¶
type ContainerSpec struct { // Time at which the container was created. CreationTime time.Time `json:"creation_time,omitempty"` // Metadata labels associated with this container. Labels map[string]string `json:"labels,omitempty"` HasCpu bool `json:"has_cpu"` Cpu CpuSpec `json:"cpu,omitempty"` HasMemory bool `json:"has_memory"` Memory MemorySpec `json:"memory,omitempty"` HasNetwork bool `json:"has_network"` HasFilesystem bool `json:"has_filesystem"` // HasDiskIo when true, indicates that DiskIo stats will be available. HasDiskIo bool `json:"has_diskio"` }
func (*ContainerSpec) Eq ¶
func (self *ContainerSpec) Eq(b *ContainerSpec) bool
type ContainerStats ¶
type ContainerStats struct { // The time of this stat point. Timestamp time.Time `json:"timestamp"` Cpu CpuStats `json:"cpu,omitempty"` DiskIo DiskIoStats `json:"diskio,omitempty"` Memory MemoryStats `json:"memory,omitempty"` Network NetworkStats `json:"network,omitempty"` // Filesystem statistics Filesystem []FsStats `json:"filesystem,omitempty"` // Task load stats TaskStats LoadStats `json:"task_stats,omitempty"` }
func (*ContainerStats) Eq ¶
func (a *ContainerStats) Eq(b *ContainerStats) bool
This function is useful because we do not require precise time representation.
func (*ContainerStats) StatsEq ¶
func (a *ContainerStats) StatsEq(b *ContainerStats) bool
Checks equality of the stats values.
type CpuStats ¶
type CpuStats struct { Usage CpuUsage `json:"usage"` // Smoothed average of number of runnable threads x 1000. // We multiply by thousand to avoid using floats, but preserving precision. // Load is smoothed over the last 10 seconds. Instantaneous value can be read // from LoadStats.NrRunning. LoadAverage int32 `json:"load_average"` }
All CPU usage metrics are cumulative from the creation of the container
type CpuUsage ¶
type CpuUsage struct { // Total CPU usage. // Units: nanoseconds Total uint64 `json:"total"` // Per CPU/core usage of the container. // Unit: nanoseconds. PerCpu []uint64 `json:"per_cpu_usage,omitempty"` // Time spent in user space. // Unit: nanoseconds User uint64 `json:"user"` // Time spent in kernel space. // Unit: nanoseconds System uint64 `json:"system"` }
CPU usage time statistics.
type DiskIoStats ¶
type DiskIoStats struct { IoServiceBytes []PerDiskStats `json:"io_service_bytes,omitempty"` IoServiced []PerDiskStats `json:"io_serviced,omitempty"` IoQueued []PerDiskStats `json:"io_queued,omitempty"` Sectors []PerDiskStats `json:"sectors,omitempty"` IoServiceTime []PerDiskStats `json:"io_service_time,omitempty"` IoWaitTime []PerDiskStats `json:"io_wait_time,omitempty"` IoMerged []PerDiskStats `json:"io_merged,omitempty"` IoTime []PerDiskStats `json:"io_time,omitempty"` }
type Event ¶ added in v0.12.0
type Event struct { // the absolute container name for which the event occurred ContainerName string `json:"container_name"` // the time at which the event occurred Timestamp time.Time `json:"timestamp"` // the type of event. EventType is an enumerated type EventType EventType `json:"event_type"` // the original event object and all of its extraneous data, ex. an // OomInstance EventData EventData `json:"event_data,omitempty"` }
Event contains information general to events such as the time at which they occurred, their specific type, and the actual event. Event types are differentiated by the EventType field of Event.
type EventData ¶ added in v0.12.0
type EventData struct { // Information about an OOM kill event. OomKill *OomKillEventData `json:"oom,omitempty"` }
Extra information about an event. Only one type will be set.
type EventType ¶ added in v0.12.0
type EventType string
EventType is an enumerated type which lists the categories under which events may fall. The Event field EventType is populated by this enum.
type FsStats ¶
type FsStats struct { // The block device name associated with the filesystem. Device string `json:"device,omitempty"` // Number of bytes that can be consumed by the container on this filesystem. Limit uint64 `json:"capacity"` // Number of bytes that is consumed by the container on this filesystem. Usage uint64 `json:"usage"` // Number of reads completed // This is the total number of reads completed successfully. ReadsCompleted uint64 `json:"reads_completed"` // Number of reads merged // Reads and writes which are adjacent to each other may be merged for // efficiency. Thus two 4K reads may become one 8K read before it is // ultimately handed to the disk, and so it will be counted (and queued) // as only one I/O. This field lets you know how often this was done. ReadsMerged uint64 `json:"reads_merged"` // Number of sectors read // This is the total number of sectors read successfully. SectorsRead uint64 `json:"sectors_read"` // Number of milliseconds spent reading // This is the total number of milliseconds spent by all reads (as // measured from __make_request() to end_that_request_last()). ReadTime uint64 `json:"read_time"` // Number of writes completed // This is the total number of writes completed successfully. WritesCompleted uint64 `json:"writes_completed"` // Number of writes merged // See the description of reads merged. WritesMerged uint64 `json:"writes_merged"` // Number of sectors written // This is the total number of sectors written successfully. SectorsWritten uint64 `json:"sectors_written"` // Number of milliseconds spent writing // This is the total number of milliseconds spent by all writes (as // measured from __make_request() to end_that_request_last()). WriteTime uint64 `json:"write_time"` // Number of I/Os currently in progress // The only field that should go to zero. Incremented as requests are // given to appropriate struct request_queue and decremented as they finish. IoInProgress uint64 `json:"io_in_progress"` // Number of milliseconds spent doing I/Os // This field increases so long as field 9 is nonzero. IoTime uint64 `json:"io_time"` // weighted number of milliseconds spent doing I/Os // This field is incremented at each I/O start, I/O completion, I/O // merge, or read of these stats by the number of I/Os in progress // (field 9) times the number of milliseconds spent doing I/O since the // last update of this field. This can provide an easy measure of both // I/O completion time and the backlog that may be accumulating. WeightedIoTime uint64 `json:"weighted_io_time"` }
type LoadStats ¶
type LoadStats struct { // Number of sleeping tasks. NrSleeping uint64 `json:"nr_sleeping"` // Number of running tasks. NrRunning uint64 `json:"nr_running"` // Number of tasks in stopped state NrStopped uint64 `json:"nr_stopped"` // Number of tasks in uninterruptible state NrUninterruptible uint64 `json:"nr_uninterruptible"` // Number of tasks waiting on IO NrIoWait uint64 `json:"nr_io_wait"` }
This mirrors kernel internal structure.
type MachineInfo ¶
type MachineInfo struct { // The number of cores in this machine. NumCores int `json:"num_cores"` // Maximum clock speed for the cores, in KHz. CpuFrequency uint64 `json:"cpu_frequency_khz"` // The amount of memory (in bytes) in this machine MemoryCapacity int64 `json:"memory_capacity"` // The machine id MachineID string `json:"machine_id"` // The system uuid SystemUUID string `json:"system_uuid"` // The boot id BootID string `json:"boot_id"` // Filesystems on this machine. Filesystems []FsInfo `json:"filesystems"` // Disk map DiskMap map[string]DiskInfo `json:"disk_map"` // Network devices NetworkDevices []NetInfo `json:"network_devices"` // Machine Topology // Describes cpu/memory layout and hierarchy. Topology []Node `json:"topology"` }
type MachineInfoFactory ¶
type MachineInfoFactory interface { GetMachineInfo() (*MachineInfo, error) GetVersionInfo() (*VersionInfo, error) }
type MemorySpec ¶
type MemorySpec struct { // The amount of memory requested. Default is unlimited (-1). // Units: bytes. Limit uint64 `json:"limit,omitempty"` // The amount of guaranteed memory. Default is 0. // Units: bytes. Reservation uint64 `json:"reservation,omitempty"` // The amount of swap space requested. Default is unlimited (-1). // Units: bytes. SwapLimit uint64 `json:"swap_limit,omitempty"` }
type MemoryStats ¶
type MemoryStats struct { // Current memory usage, this includes all memory regardless of when it was // accessed. // Units: Bytes. Usage uint64 `json:"usage"` // The amount of working set memory, this includes recently accessed memory, // dirty memory, and kernel memory. Working set is <= "usage". // Units: Bytes. WorkingSet uint64 `json:"working_set"` ContainerData MemoryStatsMemoryData `json:"container_data,omitempty"` HierarchicalData MemoryStatsMemoryData `json:"hierarchical_data,omitempty"` }
type MemoryStatsMemoryData ¶
type NetworkStats ¶
type NetworkStats struct { // Cumulative count of bytes received. RxBytes uint64 `json:"rx_bytes"` // Cumulative count of packets received. RxPackets uint64 `json:"rx_packets"` // Cumulative count of receive errors encountered. RxErrors uint64 `json:"rx_errors"` // Cumulative count of packets dropped while receiving. RxDropped uint64 `json:"rx_dropped"` // Cumulative count of bytes transmitted. TxBytes uint64 `json:"tx_bytes"` // Cumulative count of packets transmitted. TxPackets uint64 `json:"tx_packets"` // Cumulative count of transmit errors encountered. TxErrors uint64 `json:"tx_errors"` // Cumulative count of packets dropped while transmitting. TxDropped uint64 `json:"tx_dropped"` }
type Node ¶
type Node struct { Id int `json:"node_id"` // Per-node memory Memory uint64 `json:"memory"` Cores []Core `json:"cores"` Caches []Cache `json:"caches"` }
func (*Node) AddNodeCache ¶
func (*Node) AddPerCoreCache ¶
type OomKillEventData ¶ added in v0.12.0
type OomKillEventData struct { // process id of the killed process Pid int `json:"pid"` // The name of the killed process ProcessName string `json:"process_name"` }
Information related to an OOM kill instance
type PerDiskStats ¶
type VersionInfo ¶
type VersionInfo struct { // Kernel version. KernelVersion string `json:"kernel_version"` // OS image being used for cadvisor container, or host image if running on host directly. ContainerOsVersion string `json:"container_os_version"` // Docker version. DockerVersion string `json:"docker_version"` // cAdvisor version. CadvisorVersion string `json:"cadvisor_version"` }