Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrMissingTarget = errors.New("Missing cgroup target") ErrFildNotFound = errors.New("cgroup file is missing") )
var (
ErrDockerNotAvailable = errors.New("docker not available")
)
Functions ¶
func CgroupsForPids ¶
func CgroupsForPids(pids []int32) (map[string]*ContainerCgroup, error)
CgroupsForPids returns ContainerCgroup for every container that's in a Cgroup. We return as a map[containerID]Cgroup for easy look-up.
func ContainersByPID ¶
Generates a mapping of PIDs to container metadata. Optimized to limit the number of syscalls for each PID for just enough to get the data we need. Only supports Docker containers for now but the bulk of the logic is around cgroups so we could support other types without too much trouble.
func GetHostname ¶ added in v0.99.33
Types ¶
type CgroupIOStat ¶ added in v0.99.34
type CgroupMemStat ¶
type CgroupMemStat struct {
ContainerID string
Cache uint64
RSS uint64
RSSHuge uint64
MappedFile uint64
Pgpgin uint64
Pgpgout uint64
Pgfault uint64
Pgmajfault uint64
InactiveAnon uint64
ActiveAnon uint64
InactiveFile uint64
ActiveFile uint64
Unevictable uint64
HierarchicalMemoryLimit uint64
TotalCache uint64
TotalRSS uint64
TotalRSSHuge uint64
TotalMappedFile uint64
TotalPgpgIn uint64
TotalPgpgOut uint64
TotalPgFault uint64
TotalPgMajFault uint64
TotalInactiveAnon uint64
TotalActiveAnon uint64
TotalInactiveFile uint64
TotalActiveFile uint64
TotalUnevictable uint64
MemUsageInBytes uint64
MemMaxUsageInBytes uint64
MemLimitInBytes uint64
MemFailCnt uint64
}
type CgroupTimesStat ¶
type Container ¶
type Container struct {
Type string
ID string
Name string
Image string
ImageID string
CPULimit float64
MemLimit uint64
Created int64
State string
Health string
ReadBytes uint64
WriteBytes uint64
}
func GetDockerContainers ¶
GetDockerContainers returns a list of Docker info for active containers using the Docker API. This requires the running user to be in the "docker" user group or have access to /tmp/docker.sock.
type ContainerCgroup ¶
type ContainerCgroup struct {
ContainerID string
Pids []int32
Paths map[string]string
Mounts map[string]string
}
func (ContainerCgroup) CPU ¶
func (c ContainerCgroup) CPU() (*CgroupTimesStat, error)
CPU returns the CPU status for this cgroup instance If the cgroup file does not exist then we just log debug return nothing.
func (ContainerCgroup) CPULimit ¶
func (c ContainerCgroup) CPULimit() (float64, error)
CPULimit would show CPU limit for this cgroup. It does so by checking the cpu period and cpu quota config if a user does this:
docker run --cpus='0.5' ubuntu:latest
we should return 50% for that container If the limits files aren't available (on older version) then we'll return the default value of 100.
func (ContainerCgroup) IO ¶ added in v0.99.34
func (c ContainerCgroup) IO() (*CgroupIOStat, error)
IO returns the disk read and write bytes stats for this cgroup. Format:
8:0 Read 49225728 8:0 Write 9850880 8:0 Sync 0 8:0 Async 59076608 8:0 Total 59076608 252:0 Read 49094656 252:0 Write 9850880 252:0 Sync 0 252:0 Async 58945536 252:0 Total 58945536
func (ContainerCgroup) Mem ¶
func (c ContainerCgroup) Mem() (*CgroupMemStat, error)
Mem returns the memory statistics for a Cgroup. If the cgroup file is not availble then we return an empty stats file.