config

package
v0.27.0 Latest Latest
Warning

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

Go to latest
Published: May 18, 2021 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package config defines the data models for entities. This file defines the models for configuration format. The defined entities are: Config (the top-level structure), Receivers, Exporters, Processors, Pipelines.

Receivers, Exporters and Processors typically have common configuration settings, however sometimes specific implementations will have extra configuration settings. This requires the configuration data for these entities to be polymorphic.

To satisfy these requirements we declare interfaces Receiver, Exporter, Processor, which define the behavior. We also provide helper structs ReceiverSettings, ExporterSettings, ProcessorSettings, which define the common settings and un-marshaling from config files.

Specific Receivers/Exporters/Processors are expected to at the minimum implement the corresponding interface and if they have additional settings they must also extend the corresponding common settings struct (the easiest approach is to embed the common struct).

Index

Constants

View Source
const (
	// KeyDelimiter is used as the default key delimiter in the default viper instance.
	KeyDelimiter = "::"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ComponentID added in v0.25.0

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

ComponentID represents the identity for a component. It combines two values: * type - the Type of the component. * name - the name of that component. The component ComponentID (combination type + name) is unique for a given component.Kind.

func NewID added in v0.26.0

func NewID(typeVal Type) ComponentID

NewID returns a new ComponentID with the given Type and empty name.

func NewIDFromString added in v0.27.0

func NewIDFromString(idStr string) (ComponentID, error)

NewIDFromString decodes a string in type[/name] format into ComponentID. The type and name components will have spaces trimmed, the "type" part must be present, the forward slash and "name" are optional. The returned ComponentID will be invalid if err is not-nil.

func NewIDWithName added in v0.26.0

func NewIDWithName(typeVal Type, nameVal string) ComponentID

NewIDWithName returns a new ComponentID with the given Type and name.

func (ComponentID) Name added in v0.25.0

func (id ComponentID) Name() string

Name returns the custom name of the component.

func (ComponentID) String added in v0.25.0

func (id ComponentID) String() string

String returns the ComponentID string representation as "type[/name]" format.

func (ComponentID) Type added in v0.25.0

func (id ComponentID) Type() Type

Type returns the type of the component.

type Config added in v0.24.0

Config defines the configuration for the various elements of collector or agent.

func (*Config) Validate added in v0.24.0

func (cfg *Config) Validate() error

Validate returns an error if the config is invalid.

This function performs basic validation of configuration. There may be more subtle invalid cases that we currently don't check for but which we may want to add in the future (e.g. disallowing receiving and exporting on the same endpoint).

type CustomUnmarshable added in v0.25.0

type CustomUnmarshable interface {
	// Unmarshal is a function that un-marshals a Parser into the unmarshable struct in a custom way.
	// componentSection *Parser
	//   The config for this specific component. May be nil or empty if no config available.
	Unmarshal(componentSection *Parser) error
}

CustomUnmarshable defines an optional interface for custom configuration unmarshaling. A configuration struct can implement this interface to override the default unmarshaling.

type DataType added in v0.24.0

type DataType string

DataType is the data type that is supported for collection. We currently support collecting metrics, traces and logs, this can expand in the future.

const (
	// TracesDataType is the data type tag for traces.
	TracesDataType DataType = "traces"

	// MetricsDataType is the data type tag for metrics.
	MetricsDataType DataType = "metrics"

	// LogsDataType is the data type tag for logs.
	LogsDataType DataType = "logs"
)

Currently supported data types. Add new data types here when new types are supported in the future.

type Exporter added in v0.24.0

type Exporter interface {
	// contains filtered or unexported methods
}

Exporter is the configuration of an exporter. Embedded validatable will force each exporter to implement Validate() function

type ExporterSettings added in v0.24.0

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

ExporterSettings defines common settings for an exporter configuration. Specific exporters can embed this struct and extend it with more fields if needed. When embedded in the exporter config it must be with `mapstructure:",squash"` tag.

func NewExporterSettings added in v0.24.0

func NewExporterSettings(id ComponentID) ExporterSettings

NewExporterSettings return a new ExporterSettings with the given ComponentID.

func (*ExporterSettings) ID added in v0.26.0

func (rs *ExporterSettings) ID() ComponentID

ID returns the receiver ComponentID.

func (*ExporterSettings) SetIDName added in v0.26.0

func (rs *ExporterSettings) SetIDName(idName string)

SetIDName sets the receiver name.

func (*ExporterSettings) Validate added in v0.25.0

func (rs *ExporterSettings) Validate() error

Validate validates the configuration and returns an error if invalid.

type Exporters added in v0.24.0

type Exporters map[ComponentID]Exporter

Exporters is a map of names to Exporters.

type Extension added in v0.24.0

type Extension interface {
	// contains filtered or unexported methods
}

Extension is the configuration of a service extension. Specific extensions must implement this interface and will typically embed ExtensionSettings struct or a struct that extends it. Embedded validatable will force each extension to implement Validate() function

type ExtensionSettings added in v0.24.0

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

ExtensionSettings defines common settings for an extension configuration. Specific processors can embed this struct and extend it with more fields if needed. When embedded in the extension config it must be with `mapstructure:",squash"` tag.

func NewExtensionSettings added in v0.24.0

func NewExtensionSettings(id ComponentID) ExtensionSettings

NewExtensionSettings return a new ExtensionSettings with the given ComponentID.

func (*ExtensionSettings) ID added in v0.26.0

func (rs *ExtensionSettings) ID() ComponentID

ID returns the receiver ComponentID.

func (*ExtensionSettings) SetIDName added in v0.26.0

func (rs *ExtensionSettings) SetIDName(idName string)

SetIDName sets the receiver name.

func (*ExtensionSettings) Validate added in v0.25.0

func (rs *ExtensionSettings) Validate() error

Validate validates the configuration and returns an error if invalid.

type Extensions added in v0.24.0

type Extensions map[ComponentID]Extension

Extensions is a map of names to extensions.

type Parser added in v0.24.0

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

Parser loads configuration.

func NewParser added in v0.24.0

func NewParser() *Parser

NewParser creates a new empty Parser instance.

func NewParserFromBuffer added in v0.25.0

func NewParserFromBuffer(buf io.Reader) (*Parser, error)

NewParserFromBuffer creates a new Parser by reading the given yaml buffer.

func NewParserFromFile added in v0.24.0

func NewParserFromFile(fileName string) (*Parser, error)

NewParserFromFile creates a new Parser by reading the given file.

func NewParserFromStringMap added in v0.24.0

func NewParserFromStringMap(data map[string]interface{}) *Parser

NewParserFromStringMap creates a parser from a map[string]interface{}.

func (*Parser) AllKeys added in v0.24.0

func (l *Parser) AllKeys() []string

AllKeys returns all keys holding a value, regardless of where they are set. Nested keys are returned with a KeyDelimiter separator

func (*Parser) Get added in v0.24.0

func (l *Parser) Get(key string) interface{}

Get can retrieve any value given the key to use.

func (*Parser) IsSet added in v0.25.0

func (l *Parser) IsSet(key string) bool

IsSet checks to see if the key has been set in any of the data locations. IsSet is case-insensitive for a key.

func (*Parser) MergeStringMap added in v0.25.0

func (l *Parser) MergeStringMap(cfg map[string]interface{}) error

MergeStringMap merges the configuration from the given map with the existing config. Note that the given map may be modified.

func (*Parser) Set added in v0.24.0

func (l *Parser) Set(key string, value interface{})

Set sets the value for the key.

func (*Parser) Sub added in v0.24.0

func (l *Parser) Sub(key string) (*Parser, error)

Sub returns new Parser instance representing a sub tree of this instance.

func (*Parser) ToStringMap added in v0.24.0

func (l *Parser) ToStringMap() map[string]interface{}

ToStringMap creates a map[string]interface{} from a Parser.

func (*Parser) Unmarshal added in v0.24.0

func (l *Parser) Unmarshal(rawVal interface{}) error

Unmarshal unmarshals the config into a struct. Make sure that the tags on the fields of the structure are properly set.

func (*Parser) UnmarshalExact added in v0.24.0

func (l *Parser) UnmarshalExact(intoCfg interface{}) error

UnmarshalExact unmarshals the config into a struct, erroring if a field is nonexistent.

type Pipeline added in v0.24.0

type Pipeline struct {
	Name       string
	InputType  DataType
	Receivers  []ComponentID
	Processors []ComponentID
	Exporters  []ComponentID
}

Pipeline defines a single pipeline.

type Pipelines added in v0.24.0

type Pipelines map[string]*Pipeline

Pipelines is a map of names to Pipelines.

type Processor added in v0.24.0

type Processor interface {
	// contains filtered or unexported methods
}

Processor is the configuration of a processor. Specific processors must implement this interface and will typically embed ProcessorSettings struct or a struct that extends it. Embedded validatable will force each processor to implement Validate() function

type ProcessorSettings added in v0.24.0

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

ProcessorSettings defines common settings for a processor configuration. Specific processors can embed this struct and extend it with more fields if needed. When embedded in the processor config it must be with `mapstructure:",squash"` tag.

func NewProcessorSettings added in v0.24.0

func NewProcessorSettings(id ComponentID) ProcessorSettings

NewProcessorSettings return a new ProcessorSettings with the given ComponentID.

func (*ProcessorSettings) ID added in v0.26.0

func (rs *ProcessorSettings) ID() ComponentID

ID returns the receiver ComponentID.

func (*ProcessorSettings) SetIDName added in v0.26.0

func (rs *ProcessorSettings) SetIDName(idName string)

SetIDName sets the receiver name.

func (*ProcessorSettings) Validate added in v0.25.0

func (rs *ProcessorSettings) Validate() error

Validate validates the configuration and returns an error if invalid.

type Processors added in v0.24.0

type Processors map[ComponentID]Processor

Processors is a map of names to Processors.

type Receiver added in v0.24.0

type Receiver interface {
	// contains filtered or unexported methods
}

Receiver is the configuration of a receiver. Specific receivers must implement this interface and will typically embed ReceiverSettings struct or a struct that extends it. Embedded validatable will force each receiver to implement Validate() function

type ReceiverSettings added in v0.24.0

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

ReceiverSettings defines common settings for a receiver configuration. Specific receivers can embed this struct and extend it with more fields if needed. It is highly recommended to "override" the Validate() function. When embedded in the receiver config it must be with `mapstructure:",squash"` tag.

func NewReceiverSettings added in v0.26.0

func NewReceiverSettings(id ComponentID) ReceiverSettings

NewReceiverSettings return a new ReceiverSettings with the given ComponentID.

func (*ReceiverSettings) ID added in v0.26.0

func (rs *ReceiverSettings) ID() ComponentID

ID returns the receiver ComponentID.

func (*ReceiverSettings) SetIDName added in v0.26.0

func (rs *ReceiverSettings) SetIDName(idName string)

SetIDName sets the receiver name.

func (*ReceiverSettings) Validate added in v0.24.0

func (rs *ReceiverSettings) Validate() error

Validate validates the configuration and returns an error if invalid.

type Receivers added in v0.24.0

type Receivers map[ComponentID]Receiver

Receivers is a map of names to Receivers.

type Service added in v0.24.0

type Service struct {
	// Extensions is the ordered list of extensions configured for the service.
	Extensions []ComponentID

	// Pipelines is the set of data pipelines configured for the service.
	Pipelines Pipelines
}

Service defines the configurable components of the service.

type Type added in v0.24.0

type Type string

Type is the component type as it is used in the config.

Directories

Path Synopsis
Package configcheck has checks to be applied to configuration objects implemented by factories of components used in the OpenTelemetry collector.
Package configcheck has checks to be applied to configuration objects implemented by factories of components used in the OpenTelemetry collector.
Package configgrpc defines the gRPC configuration settings.
Package configgrpc defines the gRPC configuration settings.
xconfighttp Module
Package configloader implements configuration loading from a config.Parser.
Package configloader implements configuration loading from a config.Parser.
configopaque module
configretry module
experimental
configsource
Package configsource is an experimental package that defines the interface of "configuration sources," e.g., Vault, ZooKeeper, etcd2, and others.
Package configsource is an experimental package that defines the interface of "configuration sources," e.g., Vault, ZooKeeper, etcd2, and others.
internal module

Jump to

Keyboard shortcuts

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