 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- 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 FsInfo
- type FsStats
- type LoadStats
- type MachineInfo
- type MachineInfoFactory
- type MemorySpec
- type MemoryStats
- type MemoryStatsMemoryData
- type NetInfo
- type NetworkStats
- type Node
- type PerDiskStats
- type VersionInfo
Constants ¶
This section is empty.
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 ¶
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"`
	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 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 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"`
}