Documentation ¶
Index ¶
- Constants
- Variables
- func BuildEntityName(runtime, id string) string
- func BuildTaggerEntityName(id string) string
- func ContainerIDForEntity(name string) string
- func GetFilterErrors() map[string]struct{}
- func IsEntityName(name string) bool
- func IsPauseContainer(labels map[string]string) bool
- func ResetSharedFilter()
- func SplitEntityName(name string) (string, string)
- func SplitImageName(image string) (string, string, string, error)
- type Container
- type ContainerImplementation
- type Filter
- type FilterType
- type NetworkAddress
- type NetworkDestination
- type UTSMode
Constants ¶
const ( RuntimeNameDocker string = "docker" RuntimeNameContainerd string = "containerd" RuntimeNameCRIO string = "cri-o" RuntimeNameGarden string = "garden" )
Known container runtimes
const ( ContainerUnknownState string = "unknown" ContainerCreatedState = "created" ContainerRunningState = "running" ContainerRestartingState = "restarting" ContainerPausedState = "paused" ContainerExitedState = "exited" ContainerDeadState = "dead" ContainerActiveState = "active" )
Supported container states
const ( ContainerUnknownHealth string = "unknown" ContainerStartingHealth = "starting" ContainerHealthy = "healthy" ContainerUnhealthy = "unhealthy" )
Supported container health
const ( DefaultNetworkMode string = "default" // bridge HostNetworkMode = "host" BridgeNetworkMode = "bridge" NoneNetworkMode = "none" AwsvpcNetworkMode = "awsvpc" UnknownNetworkMode = "unknown" )
Container network modes
const ( DefaultUTSMode UTSMode = "" HostUTSMode = "host" UnknownUTSMode = "unknown" )
UTSMode is container UTS modes
const ContainerEntityName = "container_id"
ContainerEntityName is the entity name applied to all containers
const ContainerEntityPrefix = ContainerEntityName + EntitySeparator
ContainerEntityPrefix is the prefix that any entity corresponding to a container must have It replaces any prior prefix like <runtime>:// in a pod container status.
const EntitySeparator = "://"
EntitySeparator is used to separate the entity name from its ID
Variables ¶
var ( // ErrEmptyImage is returned when image name argument is empty ErrEmptyImage = errors.New("empty image name") // ErrImageIsSha256 is returned when image name argument is a sha256 ErrImageIsSha256 = errors.New("invalid image name (is a sha256)") )
Functions ¶
func BuildEntityName ¶
BuildEntityName builds a valid entity name for a given container runtime and cid.
func BuildTaggerEntityName ¶
BuildTaggerEntityName builds a valid tagger entity name for a given cid.
func ContainerIDForEntity ¶
ContainerIDForEntity extracts the container ID portion of a container entity name
func GetFilterErrors ¶ added in v0.9.0
func GetFilterErrors() map[string]struct{}
GetFilterErrors retrieves a list of errors and warnings resulting from parseFilters
func IsEntityName ¶
IsEntityName tests whether a given entity name is valid
func IsPauseContainer ¶ added in v0.9.0
IsPauseContainer returns whether a container is a pause container based on the container labels This util can be used to exclude pause container in best-effort Note: Pause containers can still be excluded based on the image name via the container filtering module
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 SplitEntityName ¶
SplitEntityName returns the prefix 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 AddressList []NetworkAddress StartedAt int64 metrics.ContainerMetrics Limits metrics.ContainerLimits Network metrics.ContainerNetStats }
Container represents a single container on a machine and includes system-level statistics about the container.
func (*Container) SetLimits ¶
func (ctn *Container) SetLimits(ctnLimits *metrics.ContainerLimits)
SetLimits stores results from a ContainerLimits to a Container
func (*Container) SetMetrics ¶
func (ctn *Container) SetMetrics(ctnMetrics *metrics.ContainerMetrics)
SetMetrics stores results from a ContainerMetrics to the embedded struct inside Container
type ContainerImplementation ¶
type ContainerImplementation interface { // Asks provider to fetch data from system APIs in bulk // It's required to call it before any other function Prefetch() error ContainerExists(containerID string) bool GetContainerStartTime(containerID string) (int64, error) DetectNetworkDestinations(pid int) ([]NetworkDestination, error) GetAgentCID() (string, error) GetPIDs(containerID string) ([]int32, error) ContainerIDForPID(pid int) (string, error) GetDefaultGateway() (net.IP, error) GetDefaultHostIPs() ([]string, error) GetNumFileDescriptors(pid int) (int, error) metrics.ContainerMetricsProvider }
ContainerImplementation is a generic interface that defines a common interface across different container implementation (Linux cgroup, windows containers, etc.)
type Filter ¶
type Filter struct { Enabled bool ImageIncludeList []*regexp.Regexp NameIncludeList []*regexp.Regexp NamespaceIncludeList []*regexp.Regexp ImageExcludeList []*regexp.Regexp NameExcludeList []*regexp.Regexp NamespaceExcludeList []*regexp.Regexp Errors map[string]struct{} }
Filter holds the state for the container filtering logic
func GetPauseContainerFilter ¶ added in v0.9.0
GetPauseContainerFilter returns a filter only excluding pause containers
func GetSharedMetricFilter ¶ added in v0.9.0
GetSharedMetricFilter allows to share the result of NewFilterFromConfig for several user classes
func NewAutodiscoveryFilter ¶
func NewAutodiscoveryFilter(filter FilterType) (*Filter, error)
NewAutodiscoveryFilter creates a new container filter for Autodiscovery It sources patterns from the pkg/config options but ignores the exclude_pause_container options It allows to filter metrics and logs separately For use in autodiscovery.
func NewFilter ¶
NewFilter creates a new container filter from a two slices of regexp patterns for a include list and exclude list. Each pattern should have the following format: "field:pattern" where field can be: [image, name, kube_namespace]. An error is returned if any of the expression don't compile.
func (Filter) IsExcluded ¶
IsExcluded returns a bool indicating if the container should be excluded based on the filters in the containerFilter instance.
type FilterType ¶
type FilterType string
FilterType indicates the container filter type
const GlobalFilter FilterType = "GlobalFilter"
GlobalFilter is used to cover both MetricsFilter and LogsFilter filter types
const LogsFilter FilterType = "LogsFilter"
LogsFilter refers to the Logs filter type
const MetricsFilter FilterType = "MetricsFilter"
MetricsFilter refers to the Metrics filter type
type NetworkAddress ¶
NetworkAddress represents a tuple IP/Port/Protocol
type NetworkDestination ¶
NetworkDestination holds one network destination subnet and it's linked interface name