Files
MarioandGitHub e0354d1bed Update Prometheus to v0.307.2, OTel collector contrib to v0.138.0, OTel to v1.44.0 (#5810)
* Update Prometheus to v0.307.2

* Update otel collector

* Update OTel collector
2025-10-28 11:30:17 +01:00

50 lines
2.2 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package otelcol // import "go.opentelemetry.io/collector/otelcol"
import (
"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"
"go.opentelemetry.io/collector/service/telemetry/otelconftelemetry"
)
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) {
// TODO: inject the telemetry factory through factories, once available.
// See https://github.com/open-telemetry/opentelemetry-collector/issues/4970
telFactory := otelconftelemetry.NewFactory()
defaultTelConfig := telFactory.CreateDefaultConfig().(*otelconftelemetry.Config)
// 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: defaultTelConfig,
},
}
err := v.Unmarshal(&cfg)
return cfg, err
}