metadata

package
v0.0.0-...-dd874a1 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2024 License: Apache-2.0 Imports: 10 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), 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

View Source
var (

	// AllDefaultCollectors the names of all the available default collectors
	AllDefaultCollectors = []string{}
)

Functions

func RegisterCollector

func RegisterCollector(name string, metadataCollector Collector)

RegisterCollector adds a Metadata Collector to the catalog

func SetupMetadataCollection

func SetupMetadataCollection(sch *Scheduler, additionalCollectors []string) error

SetupMetadataCollection initializes the metadata scheduler and its collectors based on the config. This function also starts the default collectors listed in 'additionalCollectors' if they're not listed in the configuration.

Types

type Collector

type Collector interface {
	Send(ctx context.Context, s serializer.MetricSerializer) 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 CollectorWithFirstRun

type CollectorWithFirstRun interface {
	// FirstRunInterval returns the interval after which to send the first payload. This allows the collector to
	// send a payload shortly after Agent startup.
	FirstRunInterval() time.Duration
}

CollectorWithFirstRun is an optional interface for collectors that want to send their first payload after a different interval. This allows collectors to send a payload shortly after the Agent starts.

type CollectorWithInit

type CollectorWithInit interface {
	Init() error
}

CollectorWithInit is an optional interface for collectors that need to be initialized can implement. If implemented, the Init method will be called when the collector is scheduled

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 Scheduler

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

Scheduler takes care of sending metadata at specific time intervals

func NewScheduler

func NewScheduler(demux aggregator.Demultiplexer) *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) IsScheduled

func (c *Scheduler) IsScheduled(name string) bool

IsScheduled returns wether a given Collector has been added to this Scheduler

func (*Scheduler) Stop

func (c *Scheduler) Stop()

Stop scheduling collectors

func (*Scheduler) TriggerAndResetCollectorTimer

func (c *Scheduler) TriggerAndResetCollectorTimer(name string, delay time.Duration)

TriggerAndResetCollectorTimer runs a collector manually, on demand. The delay parameter can be set to 0 to run it immediately, or to a duration after which the collector will run. The runs at regular intervals of the collector will be resumed *after* this manual run. Calling TriggerAndResetCollectorTimer on a stopped Scheduler does nothing, since the goroutine that waits on the Timer will not be running.

Directories

Path Synopsis
Package externalhost implements the External Host Tags metadata provider.
Package externalhost implements the External Host Tags metadata provider.

Jump to

Keyboard shortcuts

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