mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
#### Description Remove the default telemetry factory, and require callers to specify one, to keep things maintainable. #### Link to tracking issue Fixes #14003 #### Testing <!--Describe the documentation added.--> #### Documentation N/A
52 lines
2.1 KiB
Go
52 lines
2.1 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package otelcol // import "go.opentelemetry.io/collector/otelcol"
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"go.opentelemetry.io/collector/confmap"
|
|
"go.opentelemetry.io/collector/connector"
|
|
"go.opentelemetry.io/collector/exporter"
|
|
"go.opentelemetry.io/collector/extension"
|
|
"go.opentelemetry.io/collector/otelcol/internal/configunmarshaler"
|
|
"go.opentelemetry.io/collector/processor"
|
|
"go.opentelemetry.io/collector/receiver"
|
|
"go.opentelemetry.io/collector/service"
|
|
)
|
|
|
|
var errNilTelemetryFactory = errors.New("otelcol.Factories.Telemetry must not be nil. For example, you can use otelconftelemetry.NewFactory to build a telemetry factory")
|
|
|
|
type configSettings struct {
|
|
Receivers *configunmarshaler.Configs[receiver.Factory] `mapstructure:"receivers"`
|
|
Processors *configunmarshaler.Configs[processor.Factory] `mapstructure:"processors"`
|
|
Exporters *configunmarshaler.Configs[exporter.Factory] `mapstructure:"exporters"`
|
|
Connectors *configunmarshaler.Configs[connector.Factory] `mapstructure:"connectors"`
|
|
Extensions *configunmarshaler.Configs[extension.Factory] `mapstructure:"extensions"`
|
|
Service service.Config `mapstructure:"service"`
|
|
}
|
|
|
|
// unmarshal the configSettings from a confmap.Conf.
|
|
// After the config is unmarshalled, `Validate()` must be called to validate.
|
|
func unmarshal(v *confmap.Conf, factories Factories) (*configSettings, error) {
|
|
if factories.Telemetry == nil {
|
|
return nil, errNilTelemetryFactory
|
|
}
|
|
|
|
// Unmarshal top level sections and validate.
|
|
cfg := &configSettings{
|
|
Receivers: configunmarshaler.NewConfigs(factories.Receivers),
|
|
Processors: configunmarshaler.NewConfigs(factories.Processors),
|
|
Exporters: configunmarshaler.NewConfigs(factories.Exporters),
|
|
Connectors: configunmarshaler.NewConfigs(factories.Connectors),
|
|
Extensions: configunmarshaler.NewConfigs(factories.Extensions),
|
|
// TODO: Add a component.ServiceFactory to allow this to be defined by the Service.
|
|
Service: service.Config{
|
|
Telemetry: factories.Telemetry.CreateDefaultConfig(),
|
|
},
|
|
}
|
|
err := v.Unmarshal(&cfg)
|
|
return cfg, err
|
|
}
|