cadvisor: github.com/google/cadvisor/info/v2 Index | Files

package v2

import "github.com/google/cadvisor/info/v2"

Index

Package Files

container.go conversion.go machine.go

Constants

const (
    TypeName   = "name"
    TypeDocker = "docker"
)

type Attributes Uses

type Attributes 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"`

    // Docker API version.
    DockerAPIVersion string `json:"docker_api_version"`

    // cAdvisor version.
    CadvisorVersion string `json:"cadvisor_version"`

    // 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 uint64 `json:"memory_capacity"`

    // The machine id
    MachineID string `json:"machine_id"`

    // The system uuid
    SystemUUID string `json:"system_uuid"`

    // HugePages on this machine.
    HugePages []v1.HugePagesInfo `json:"hugepages"`

    // Filesystems on this machine.
    Filesystems []v1.FsInfo `json:"filesystems"`

    // Disk map
    DiskMap map[string]v1.DiskInfo `json:"disk_map"`

    // Network devices
    NetworkDevices []v1.NetInfo `json:"network_devices"`

    // Machine Topology
    // Describes cpu/memory layout and hierarchy.
    Topology []v1.Node `json:"topology"`

    // Cloud provider the machine belongs to
    CloudProvider v1.CloudProvider `json:"cloud_provider"`

    // Type of cloud instance (e.g. GCE standard) the machine is.
    InstanceType v1.InstanceType `json:"instance_type"`
}

func GetAttributes Uses

func GetAttributes(mi *v1.MachineInfo, vi *v1.VersionInfo) Attributes

type ContainerInfo Uses

type ContainerInfo struct {
    // Describes the container.
    Spec ContainerSpec `json:"spec,omitempty"`

    // Historical statistics gathered from the container.
    Stats []*ContainerStats `json:"stats,omitempty"`
}

type ContainerSpec Uses

type ContainerSpec struct {
    // Time at which the container was created.
    CreationTime time.Time `json:"creation_time,omitempty"`

    // 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"`

    // Metadata labels associated with this container.
    Labels map[string]string `json:"labels,omitempty"`
    // Metadata envs associated with this container. Only whitelisted envs are added.
    Envs map[string]string `json:"envs,omitempty"`

    HasCpu bool    `json:"has_cpu"`
    Cpu    CpuSpec `json:"cpu,omitempty"`

    HasMemory bool       `json:"has_memory"`
    Memory    MemorySpec `json:"memory,omitempty"`

    HasCustomMetrics bool            `json:"has_custom_metrics"`
    CustomMetrics    []v1.MetricSpec `json:"custom_metrics,omitempty"`

    HasProcesses bool           `json:"has_processes"`
    Processes    v1.ProcessSpec `json:"processes,omitempty"`

    // Following resources have no associated spec, but are being isolated.
    HasNetwork    bool `json:"has_network"`
    HasFilesystem bool `json:"has_filesystem"`
    HasDiskIo     bool `json:"has_diskio"`

    // Image name used for this container.
    Image string `json:"image,omitempty"`
}

func ContainerSpecFromV1 Uses

func ContainerSpecFromV1(specV1 *v1.ContainerSpec, aliases []string, namespace string) ContainerSpec

Get V2 container spec from v1 container info.

type ContainerStats Uses

type ContainerStats struct {
    // The time of this stat point.
    Timestamp time.Time `json:"timestamp"`
    // CPU statistics
    // In nanoseconds (aggregated)
    Cpu *v1.CpuStats `json:"cpu,omitempty"`
    // In nanocores per second (instantaneous)
    CpuInst *CpuInstStats `json:"cpu_inst,omitempty"`
    // Disk IO statistics
    DiskIo *v1.DiskIoStats `json:"diskio,omitempty"`
    // Memory statistics
    Memory *v1.MemoryStats `json:"memory,omitempty"`
    // Network statistics
    Network *NetworkStats `json:"network,omitempty"`
    // Processes statistics
    Processes *v1.ProcessStats `json:"processes,omitempty"`
    // Filesystem statistics
    Filesystem *FilesystemStats `json:"filesystem,omitempty"`
    // Task load statistics
    Load *v1.LoadStats `json:"load_stats,omitempty"`
    // Metrics for Accelerators. Each Accelerator corresponds to one element in the array.
    Accelerators []v1.AcceleratorStats `json:"accelerators,omitempty"`
    // Custom Metrics
    CustomMetrics map[string][]v1.MetricVal `json:"custom_metrics,omitempty"`
}

func ContainerStatsFromV1 Uses

func ContainerStatsFromV1(containerName string, spec *v1.ContainerSpec, stats []*v1.ContainerStats) []*ContainerStats

type CpuInstStats Uses

type CpuInstStats struct {
    Usage CpuInstUsage `json:"usage"`
}

Instantaneous CPU stats

func InstCpuStats Uses

func InstCpuStats(last, cur *v1.ContainerStats) (*CpuInstStats, error)

type CpuInstUsage Uses

type CpuInstUsage struct {
    // Total CPU usage.
    // Units: nanocores per second
    Total uint64 `json:"total"`

    // Per CPU/core usage of the container.
    // Unit: nanocores per second
    PerCpu []uint64 `json:"per_cpu_usage,omitempty"`

    // Time spent in user space.
    // Unit: nanocores per second
    User uint64 `json:"user"`

    // Time spent in kernel space.
    // Unit: nanocores per second
    System uint64 `json:"system"`
}

CPU usage time statistics.

type CpuSpec Uses

type CpuSpec struct {
    // Requested cpu shares. Default is 1024.
    Limit uint64 `json:"limit"`
    // Requested cpu hard limit. Default is unlimited (0).
    // Units: milli-cpus.
    MaxLimit uint64 `json:"max_limit"`
    // Cpu affinity mask.
    // TODO(rjnagal): Add a library to convert mask string to set of cpu bitmask.
    Mask string `json:"mask,omitempty"`
    // CPUQuota Default is disabled
    Quota uint64 `json:"quota,omitempty"`
    // Period is the CPU reference time in ns e.g the quota is compared against this.
    Period uint64 `json:"period,omitempty"`
}

type DeprecatedContainerStats Uses

type DeprecatedContainerStats struct {
    // The time of this stat point.
    Timestamp time.Time `json:"timestamp"`
    // CPU statistics
    HasCpu bool `json:"has_cpu"`
    // In nanoseconds (aggregated)
    Cpu v1.CpuStats `json:"cpu,omitempty"`
    // In nanocores per second (instantaneous)
    CpuInst *CpuInstStats `json:"cpu_inst,omitempty"`
    // Disk IO statistics
    HasDiskIo bool           `json:"has_diskio"`
    DiskIo    v1.DiskIoStats `json:"diskio,omitempty"`
    // Memory statistics
    HasMemory bool           `json:"has_memory"`
    Memory    v1.MemoryStats `json:"memory,omitempty"`
    // Network statistics
    HasNetwork bool         `json:"has_network"`
    Network    NetworkStats `json:"network,omitempty"`
    // Processes statistics
    HasProcesses bool            `json:"has_processes"`
    Processes    v1.ProcessStats `json:"processes,omitempty"`
    // Filesystem statistics
    HasFilesystem bool         `json:"has_filesystem"`
    Filesystem    []v1.FsStats `json:"filesystem,omitempty"`
    // Task load statistics
    HasLoad bool         `json:"has_load"`
    Load    v1.LoadStats `json:"load_stats,omitempty"`
    // Custom Metrics
    HasCustomMetrics bool                      `json:"has_custom_metrics"`
    CustomMetrics    map[string][]v1.MetricVal `json:"custom_metrics,omitempty"`
}

func DeprecatedStatsFromV1 Uses

func DeprecatedStatsFromV1(cont *v1.ContainerInfo) []DeprecatedContainerStats

type DerivedStats Uses

type DerivedStats struct {
    // Time of generation of these stats.
    Timestamp time.Time `json:"timestamp"`
    // Latest instantaneous sample.
    LatestUsage InstantUsage `json:"latest_usage"`
    // Percentiles in last observed minute.
    MinuteUsage Usage `json:"minute_usage"`
    // Percentile in last hour.
    HourUsage Usage `json:"hour_usage"`
    // Percentile in last day.
    DayUsage Usage `json:"day_usage"`
}

type DiskStats Uses

type DiskStats struct {
    // Number of reads completed
    // This is the total number of reads completed successfully.
    ReadsCompleted *uint64 `json:"reads_completed,omitempty"`

    // 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,omitempty"`

    // Number of sectors read
    // This is the total number of sectors read successfully.
    SectorsRead *uint64 `json:"sectors_read,omitempty"`

    // Time spent reading
    // This is the total number of milliseconds spent by all reads (as
    // measured from __make_request() to end_that_request_last()).
    ReadDuration *time.Duration `json:"read_duration,omitempty"`

    // Number of writes completed
    // This is the total number of writes completed successfully.
    WritesCompleted *uint64 `json:"writes_completed,omitempty"`

    // Number of writes merged
    // See the description of reads merged.
    WritesMerged *uint64 `json:"writes_merged,omitempty"`

    // Number of sectors written
    // This is the total number of sectors written successfully.
    SectorsWritten *uint64 `json:"sectors_written,omitempty"`

    // Time spent writing
    // This is the total number of milliseconds spent by all writes (as
    // measured from __make_request() to end_that_request_last()).
    WriteDuration *time.Duration `json:"write_duration,omitempty"`

    // 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,omitempty"`

    // Time spent doing I/Os
    // This field increases so long as field 9 is nonzero.
    IoDuration *time.Duration `json:"io_duration,omitempty"`

    // weighted time 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.
    WeightedIoDuration *time.Duration `json:"weighted_io_duration,omitempty"`
}

DiskStats contains per partition usage information. This information is only available at the machine level.

type FilesystemStats Uses

type FilesystemStats struct {
    // Total Number of bytes consumed by container.
    TotalUsageBytes *uint64 `json:"totalUsageBytes,omitempty"`
    // Number of bytes consumed by a container through its root filesystem.
    BaseUsageBytes *uint64 `json:"baseUsageBytes,omitempty"`
    // Number of inodes used within the container's root filesystem.
    // This only accounts for inodes that are shared across containers,
    // and does not include inodes used in mounted directories.
    InodeUsage *uint64 `json:"containter_inode_usage,omitempty"`
}

Filesystem usage statistics.

type FsInfo Uses

type FsInfo struct {
    // Time of generation of these stats.
    Timestamp time.Time `json:"timestamp"`

    // The block device name associated with the filesystem.
    Device string `json:"device"`

    // Path where the filesystem is mounted.
    Mountpoint string `json:"mountpoint"`

    // Filesystem usage in bytes.
    Capacity uint64 `json:"capacity"`

    // Bytes available for non-root use.
    Available uint64 `json:"available"`

    // Number of bytes used on this filesystem.
    Usage uint64 `json:"usage"`

    // Labels associated with this filesystem.
    Labels []string `json:"labels"`

    // Number of Inodes.
    Inodes *uint64 `json:"inodes,omitempty"`

    // Number of available Inodes (if known)
    InodesFree *uint64 `json:"inodes_free,omitempty"`
}

type InstantUsage Uses

type InstantUsage struct {
    // cpu rate in cpu milliseconds/second.
    Cpu uint64 `json:"cpu"`
    // Memory usage in bytes.
    Memory uint64 `json:"memory"`
}

latest sample collected for a container.

type MachineFsStats Uses

type MachineFsStats struct {
    // The block device name associated with the filesystem.
    Device string `json:"device"`

    // Type of filesystem.
    Type string `json:"type"`

    // Number of bytes that can be consumed on this filesystem.
    Capacity *uint64 `json:"capacity,omitempty"`

    // Number of bytes that is currently consumed on this filesystem.
    Usage *uint64 `json:"usage,omitempty"`

    // Number of bytes available for non-root user on this filesystem.
    Available *uint64 `json:"available,omitempty"`

    // Number of inodes that are available on this filesystem.
    InodesFree *uint64 `json:"inodes_free,omitempty"`

    // DiskStats for this device.
    DiskStats `json:"inline"`
}

MachineFsStats contains per filesystem capacity and usage information.

type MachineStats Uses

type MachineStats struct {
    // The time of this stat point.
    Timestamp time.Time `json:"timestamp"`
    // In nanoseconds (aggregated)
    Cpu *v1.CpuStats `json:"cpu,omitempty"`
    // In nanocores per second (instantaneous)
    CpuInst *CpuInstStats `json:"cpu_inst,omitempty"`
    // Memory statistics
    Memory *v1.MemoryStats `json:"memory,omitempty"`
    // Network statistics
    Network *NetworkStats `json:"network,omitempty"`
    // Filesystem statistics
    Filesystem []MachineFsStats `json:"filesystem,omitempty"`
    // Task load statistics
    Load *v1.LoadStats `json:"load_stats,omitempty"`
}

MachineStats contains usage statistics for the entire machine.

func MachineStatsFromV1 Uses

func MachineStatsFromV1(cont *v1.ContainerInfo) []MachineStats

type MemorySpec Uses

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 NetworkStats Uses

type NetworkStats struct {
    // Network stats by interface.
    Interfaces []v1.InterfaceStats `json:"interfaces,omitempty"`
    // TCP connection stats (Established, Listen...)
    Tcp TcpStat `json:"tcp"`
    // TCP6 connection stats (Established, Listen...)
    Tcp6 TcpStat `json:"tcp6"`
    // UDP connection stats
    Udp v1.UdpStat `json:"udp"`
    // UDP6 connection stats
    Udp6 v1.UdpStat `json:"udp6"`
}

type Percentiles Uses

type Percentiles struct {
    // Indicates whether the stats are present or not.
    // If true, values below do not have any data.
    Present bool `json:"present"`
    // Average over the collected sample.
    Mean uint64 `json:"mean"`
    // Max seen over the collected sample.
    Max uint64 `json:"max"`
    // 50th percentile over the collected sample.
    Fifty uint64 `json:"fifty"`
    // 90th percentile over the collected sample.
    Ninety uint64 `json:"ninety"`
    // 95th percentile over the collected sample.
    NinetyFive uint64 `json:"ninetyfive"`
}

type ProcessInfo Uses

type ProcessInfo struct {
    User          string  `json:"user"`
    Pid           int     `json:"pid"`
    Ppid          int     `json:"parent_pid"`
    StartTime     string  `json:"start_time"`
    PercentCpu    float32 `json:"percent_cpu"`
    PercentMemory float32 `json:"percent_mem"`
    RSS           uint64  `json:"rss"`
    VirtualSize   uint64  `json:"virtual_size"`
    Status        string  `json:"status"`
    RunningTime   string  `json:"running_time"`
    CgroupPath    string  `json:"cgroup_path"`
    Cmd           string  `json:"cmd"`
    FdCount       int     `json:"fd_count"`
}

type RequestOptions Uses

type RequestOptions struct {
    // Type of container identifier specified - "name", "dockerid", dockeralias"
    IdType string `json:"type"`
    // Number of stats to return
    Count int `json:"count"`
    // Whether to include stats for child subcontainers.
    Recursive bool `json:"recursive"`
    // Update stats if they are older than MaxAge
    // nil indicates no update, and 0 will always trigger an update.
    MaxAge *time.Duration `json:"max_age"`
}

type TcpStat Uses

type TcpStat struct {
    Established uint64
    SynSent     uint64
    SynRecv     uint64
    FinWait1    uint64
    FinWait2    uint64
    TimeWait    uint64
    Close       uint64
    CloseWait   uint64
    LastAck     uint64
    Listen      uint64
    Closing     uint64
}

type Usage Uses

type Usage struct {
    // Indicates amount of data available [0-100].
    // If we have data for half a day, we'll still process DayUsage,
    // but set PercentComplete to 50.
    PercentComplete int32 `json:"percent_complete"`
    // Mean, Max, and 90p cpu rate value in milliCpus/seconds. Converted to milliCpus to avoid floats.
    Cpu Percentiles `json:"cpu"`
    // Mean, Max, and 90p memory size in bytes.
    Memory Percentiles `json:"memory"`
}

Package v2 imports 4 packages (graph) and is imported by 884 packages. Updated 2019-07-05. Refresh now. Tools for package owners.