listeners

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2020 License: Apache-2.0 Imports: 16 Imported by: 0

README

package listeners

This package is providing the ServiceListener concept to the agent. A ServiceListener listens for events related to services the agent should monitor.

Service

Service represents an application we can run an integration against. It should be matched with a config template by the ConfigResolver. Services can only be Docker containers for now.

ServiceListener

ServiceListener monitors events related to Service lifecycles. It then formats and transmits this data to ConfigResolver.

DockerListener

DockerListener first gets current running containers and send these to the AutoConfig. Then it starts listening on the Docker event API for container activity and pass by Services mentioned in start/stop events to the AutoConfig through the corresponding channel.

ECSListener

The ECSListener relies on the metadata APIs available within the agent container. We're listening on changes on the container list exposed through the API to discover new Services.

KubeletListener

The KubeletListener relies on the Kubelet API. We're listening on changes on the container list exposed through the API (/pods) to discover new Services.

Listeners & auto-discovery

Template variable support
Listener AD identifiers Host Port Tag Pid Env Hostname
Docker
ECS
Kubelet

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotSupported = errors.New("AD: variable not supported by listener")

ErrNotSupported is thrown if listener doesn't support the asked variable

View Source
var ServiceListenerFactories = make(map[string]ServiceListenerFactory)

ServiceListenerFactories holds the registered factories

Functions

func ComputeContainerServiceIDs

func ComputeContainerServiceIDs(entity string, image string, labels map[string]string) []string

ComputeContainerServiceIDs takes an entity name, an image (resolved to an actual name) and labels and computes the service IDs for this container service.

func Register

func Register(name string, factory ServiceListenerFactory)

Register registers a service listener factory

Types

type ContainerPort

type ContainerPort struct {
	Port int
	Name string
}

ContainerPort represents a network port in a Service.

type ID

type ID string

ID is the representation of the unique ID of a Service

type SNMPListener

type SNMPListener struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

SNMPListener implements SNMP discovery

func (*SNMPListener) Listen

func (l *SNMPListener) Listen(newSvc chan<- Service, delSvc chan<- Service)

Listen periodically refreshes devices

func (*SNMPListener) Stop

func (l *SNMPListener) Stop()

Stop queues a shutdown of SNMPListener

type SNMPService

type SNMPService struct {
	// contains filtered or unexported fields
}

SNMPService implements and store results from the Service interface for the SNMP listener

func (*SNMPService) GetADIdentifiers

func (s *SNMPService) GetADIdentifiers() ([]string, error)

GetADIdentifiers returns a set of AD identifiers

func (*SNMPService) GetCheckNames

func (s *SNMPService) GetCheckNames() []string

GetCheckNames returns nil

func (*SNMPService) GetCreationTime

func (s *SNMPService) GetCreationTime() integration.CreationTime

GetCreationTime returns the creation time of the Service

func (*SNMPService) GetEntity

func (s *SNMPService) GetEntity() string

GetEntity returns the unique entity ID linked to that service

func (*SNMPService) GetExtraConfig

func (s *SNMPService) GetExtraConfig(key []byte) ([]byte, error)

GetExtraConfig returns data from configuration

func (*SNMPService) GetHostname

func (s *SNMPService) GetHostname() (string, error)

GetHostname returns nothing - not supported

func (*SNMPService) GetHosts

func (s *SNMPService) GetHosts() (map[string]string, error)

GetHosts returns the device IP

func (*SNMPService) GetPid

func (s *SNMPService) GetPid() (int, error)

GetPid returns nil and an error because pids are currently not supported

func (*SNMPService) GetPorts

func (s *SNMPService) GetPorts() ([]ContainerPort, error)

GetPorts returns the device port

func (*SNMPService) GetTaggerEntity

func (s *SNMPService) GetTaggerEntity() string

GetTaggerEntity returns the unique entity ID linked to that service

func (*SNMPService) GetTags

func (s *SNMPService) GetTags() ([]string, error)

GetTags returns the list of container tags - currently always empty

func (*SNMPService) HasFilter

func (s *SNMPService) HasFilter(filter containers.FilterType) bool

HasFilter returns false on SNMP

func (*SNMPService) IsReady

func (s *SNMPService) IsReady() bool

IsReady returns true

type Service

type Service interface {
	GetEntity() string                         // unique entity name
	GetTaggerEntity() string                   // tagger entity name
	GetADIdentifiers() ([]string, error)       // identifiers on which templates will be matched
	GetHosts() (map[string]string, error)      // network --> IP address
	GetPorts() ([]ContainerPort, error)        // network ports
	GetTags() ([]string, error)                // tags
	GetPid() (int, error)                      // process identifier
	GetHostname() (string, error)              // hostname.domainname for the entity
	GetCreationTime() integration.CreationTime // created before or after the agent start
	IsReady() bool                             // is the service ready
	GetCheckNames() []string                   // slice of check names defined in kubernetes annotations or docker labels
	HasFilter(containers.FilterType) bool      // whether the service is excluded by metrics or logs exclusion config
	GetExtraConfig([]byte) ([]byte, error)     // Extra configuration values
}

Service represents an application we can run a check against. It should be matched with a check template by the ConfigResolver using the ADIdentifiers field.

type ServiceListener

type ServiceListener interface {
	Listen(newSvc, delSvc chan<- Service)
	Stop()
}

ServiceListener monitors running services and triggers check (un)scheduling

It holds a cache of running services, listens to new/killed services and updates its cache, and the AutoConfig with these events.

func NewSNMPListener

func NewSNMPListener() (ServiceListener, error)

NewSNMPListener creates a SNMPListener

type ServiceListenerFactory

type ServiceListenerFactory func() (ServiceListener, error)

ServiceListenerFactory builds a service listener

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL