Documentation ¶
Index ¶
- Constants
- Variables
- func BuildEntityName(runtime, id string) string
- func ContainerIDForEntity(name string) string
- func EntityForPID(pid int32) (string, error)
- func GetRuntimeForPID(pid int32) (string, error)
- func IsEntityName(name string) bool
- func ResetSharedFilter()
- func RuntimeForEntity(name string) string
- func SplitEntityName(name string) (string, string)
- func SplitImageName(image string) (string, string, string, error)
- type Container
- type Filter
- type NetworkAddress
Constants ¶
const ( RuntimeNameDocker string = "docker" RuntimeNameContainerd string = "containerd" RuntimeNameCRIO string = "cri-o" )
Known container runtimes
const ( ContainerUnknownState string = "unknown" ContainerCreatedState = "created" ContainerRunningState = "running" ContainerRestartingState = "restarting" ContainerPausedState = "paused" ContainerExitedState = "exited" ContainerDeadState = "dead" )
Supported container states
const ( ContainerUnknownHealth string = "unknown" ContainerStartingHealth = "starting" ContainerHealthy = "healthy" ContainerUnhealthy = "unhealthy" )
Supported container health
Variables ¶
var ErrNoContainerMatch = errors.New("cannot match a container ID")
ErrNoContainerMatch is returned when no container ID can be matched
var ErrNoRuntimeMatch = errors.New("cannot match a container runtime")
ErrNoRuntimeMatch is returned when no container runtime can be matched
Functions ¶
func BuildEntityName ¶
BuildEntityName builds a valid entity name for a given container runtime and cid
func ContainerIDForEntity ¶
ContainerIDForEntity extracts the container ID portion of a container entity name
func EntityForPID ¶
EntityForPID returns the entity ID for a given PID. It can return either ErrNoRuntimeMatch or ErrNoContainerMatch if no match its found for the PID.
func GetRuntimeForPID ¶
GetRuntimeForPID inspects a PID's parents to detect a container runtime. For now, this assumes we are running on hostPID, as gopsutil looks-up processess in `/proc` (or HOST_PROC if set)
func IsEntityName ¶
IsEntityName tests whether a given entity name is valid
func ResetSharedFilter ¶
func ResetSharedFilter()
ResetSharedFilter is only to be used in unit tests: it resets the global filter instance to force re-parsing of the configuration.
func RuntimeForEntity ¶
RuntimeForEntity extracts the runtime portion of a container entity name
func SplitEntityName ¶
SplitEntityName returns the runtime and container cid parts of a valid entity name
func SplitImageName ¶
SplitImageName splits a valid image name (from ResolveImageName) and returns:
- the "long image name" with registry and prefix, without tag
- the "short image name", without registry, prefix nor tag
- the image tag if present
- an error if parsing failed
Types ¶
type Container ¶
type Container struct { Type string ID string EntityID string Name string Image string ImageID string Created int64 State string Health string Pids []int32 Excluded bool CPULimit float64 SoftMemLimit uint64 KernMemUsage uint64 MemLimit uint64 MemFailCnt uint64 CPUNrThrottled uint64 CPU *metrics.CgroupTimesStat Memory *metrics.CgroupMemStat IO *metrics.CgroupIOStat Network metrics.ContainerNetStats AddressList []NetworkAddress StartedAt int64 ThreadCount uint64 ThreadLimit uint64 // contains filtered or unexported fields }
Container represents a single container on a machine and includes Cgroup-level statistics about the container.
func (*Container) FillCgroupLimits ¶
FillCgroupLimits fills the resource limits for a Container, based on the associated cgroups. This can be called once if the limits are assumed constant.
func (*Container) FillCgroupMetrics ¶
FillCgroupMetrics fills the performance metrics for a Container, based on the associated cgroups. Network metrics are handled by FillNetworkMetrics
func (*Container) FillNetworkMetrics ¶
FillNetworkMetrics fills the network metrics for a Container, based on the associated cgroups.
func (*Container) SetCgroups ¶
func (c *Container) SetCgroups(cgroup *metrics.ContainerCgroup) error
SetCgroups has to be called when creating the Container, in order to be able to enable FillCgroupMetrics and FillNetworkMetrics to works
type Filter ¶
type Filter struct { Enabled bool ImageWhitelist []*regexp.Regexp NameWhitelist []*regexp.Regexp ImageBlacklist []*regexp.Regexp NameBlacklist []*regexp.Regexp }
Filter holds the state for the container filtering logic
func GetSharedFilter ¶
GetSharedFilter allows to share the result of NewFilterFromConfig for several user classes
func NewFilter ¶
NewFilter creates a new container filter from a two slices of regexp patterns for a whitelist and blacklist. Each pattern should have the following format: "field:pattern" where field can be: [image, name]. An error is returned if any of the expression don't compile.
func NewFilterFromConfig ¶
NewFilterFromConfig creates a new container filter, sourcing patterns from the pkg/config options
func NewFilterFromConfigIncludePause ¶
NewFilterFromConfigIncludePause creates a new container filter, sourcing patterns from the pkg/config options, but ignoring the exclude_pause_container option, for use in autodiscovery
func (Filter) IsExcluded ¶
IsExcluded returns a bool indicating if the container should be excluded based on the filters in the containerFilter instance.