metadata

package
v0.0.0-...-c036721 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2018 License: Apache-2.0 Imports: 8 Imported by: 0

README

package metadata

This package is responsible to provide metadata in the right form to be directly sent to the backend. Metadata collection is iterated during Agent execution at different time intervals for different use cases.

Providers

Single metadata providers are defined in the form of insulated sub packages exposing a public method like:

func GetPayload() *Payload

along with their specific Payload definition. Payload formats can be different, that's why metadata providers are not implemented as interfaces. These components should be loosely coupled with the rest of the Agent, this way they can be used as independent go packages in different projects and different environments.

Collectors

Collectors are used by the Agent and are supposed to be run periodically. They are responsible to invoke the relevant Provider, collect all the info needed, fill the appropriate payload and send it to the specific endpoint in the intake. Collectors are allowed to be strongly coupled to the rest of the Agent components because they're not supposed to be used elsewhere. Collectors can be user configurable, except for the host metadata collector that is always scheduled with a default interval.

Notice: For the time being, several providers collect a piece of information that is used in the v5 package to compose a single metadata payload compatible with the one from Agent v.5. This way we can send metadata through the current backend endpoints (see HostCollector and ResourcesCollector), waiting for the new ones to be deployed. At that point, all the subpackages will be required to define a payload with either the new Protobuf format or a custom JSON compatible with the v2 intake API.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterCollector

func RegisterCollector(name string, metadataCollector Collector)

RegisterCollector adds a Metadata Collector to the catalog

Types

type Collector

type Collector interface {
	Send(s *serializer.Serializer) error
}

Collector is anything capable to collect and send metadata payloads through the forwarder. A Metadata Collector normally uses a Metadata Provider to fill the payload.

type HostCollector

type HostCollector struct{}

HostCollector fills and sends the old metadata payload used in the Agent v5

func (*HostCollector) Send

Send collects the data needed and submits the payload

type Payload

type Payload interface {
	Reset()
	String() string
	ProtoMessage()
	Descriptor() ([]byte, []int)
}

Payload is an interface shared by the output of the newer metadata providers. Right now this interface simply satisfies the Protobuf interface.

type ResourcesCollector

type ResourcesCollector struct{}

ResourcesCollector sends the old metadata payload used in the Agent v5

func (*ResourcesCollector) Send

Send collects the data needed and submits the payload

type Scheduler

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

Scheduler takes care of sending metadata at specific time intervals

func NewScheduler

func NewScheduler(s *serializer.Serializer, hostname string) *Scheduler

NewScheduler builds and returns a new Metadata Scheduler

func (*Scheduler) AddCollector

func (c *Scheduler) AddCollector(name string, interval time.Duration) error

AddCollector schedules a Metadata Collector at the given interval

func (*Scheduler) Stop

func (c *Scheduler) Stop()

Stop scheduling collectors

Directories

Path Synopsis
Package ecs provides functionalities to collect ECS metadata
Package ecs provides functionalities to collect ECS metadata

Jump to

Keyboard shortcuts

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