config

package
v0.124.0 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2025 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultResyncTime                                  = 5 * time.Minute
	DefaultConfigFilePath               string         = "/conf/targetallocator.yaml"
	DefaultCRScrapeInterval             model.Duration = model.Duration(time.Second * 30)
	DefaultAllocationStrategy                          = "consistent-hashing"
	DefaultFilterStrategy                              = "relabel-config"
	DefaultCollectorNotReadyGracePeriod                = 0 * time.Second
)

Variables

By default, scrape protocols include PrometheusText1_0_0, which only Prometheus >=3.0 supports. Manually exclude this protocol until several versions of the Otel Collector support it.

logger which discards all messages written to it. Replace this with slog.DiscardHandler after we require Go 1.24.

Functions

func ApplyPromConfigDefaults added in v0.122.0

func ApplyPromConfigDefaults(promcCfgMap map[any]any) error

applyPromConfigDefaults applies our own defaults to the Prometheus configuration. The unmarshalling process for Prometheus config is quite involved, and as a result, we need to apply our own defaults before it happens.

func LoadFromCLI

func LoadFromCLI(target *Config, flagSet *pflag.FlagSet) error

func LoadFromEnv added in v0.121.0

func LoadFromEnv(target *Config) error

LoadFromEnv loads configuration from environment variables.

func LoadFromFile

func LoadFromFile(file string, target *Config) error

func MapToLabelSelector

func MapToLabelSelector() mapstructure.DecodeHookFuncType

MapToLabelSelector returns a DecodeHookFuncType that provides a mechanism for decoding both matchLabels and matchExpressions from camelcase to lowercase because we use yaml unmarshaling that supports lowercase field names if no `yaml` tag is defined and metav1.LabelSelector uses `json` tags. If both the camelcase and lowercase version is present, then the camelcase version takes precedence.

func MapToPromConfig

func MapToPromConfig() mapstructure.DecodeHookFuncType

MapToPromConfig returns a DecodeHookFuncType that provides a mechanism for decoding promconfig.Config involving its own unmarshal logic.

func StringToModelOrTimeDurationHookFunc added in v0.122.0

func StringToModelOrTimeDurationHookFunc() mapstructure.DecodeHookFuncType

StringToModelOrTimeDurationHookFunc returns a DecodeHookFuncType that converts string to time.Duration, which can also be used as model.Duration.

func ValidateConfig

func ValidateConfig(config *Config) error

ValidateConfig validates the cli and file configs together.

Types

type Config

type Config struct {
	ListenAddr                   string                `yaml:"listen_addr,omitempty"`
	KubeConfigFilePath           string                `yaml:"kube_config_file_path,omitempty"`
	ClusterConfig                *rest.Config          `yaml:"-"`
	RootLogger                   logr.Logger           `yaml:"-"`
	CollectorSelector            *metav1.LabelSelector `yaml:"collector_selector,omitempty"`
	CollectorNamespace           string                `yaml:"collector_namespace,omitempty"`
	PromConfig                   *promconfig.Config    `yaml:"config"`
	AllocationStrategy           string                `yaml:"allocation_strategy,omitempty"`
	AllocationFallbackStrategy   string                `yaml:"allocation_fallback_strategy,omitempty"`
	FilterStrategy               string                `yaml:"filter_strategy,omitempty"`
	PrometheusCR                 PrometheusCRConfig    `yaml:"prometheus_cr,omitempty"`
	HTTPS                        HTTPSServerConfig     `yaml:"https,omitempty"`
	CollectorNotReadyGracePeriod time.Duration         `yaml:"collector_not_ready_grace_period,omitempty"`
}

func CreateDefaultConfig

func CreateDefaultConfig() Config

func Load

func Load() (*Config, error)

type HTTPSServerConfig

type HTTPSServerConfig struct {
	Enabled         bool   `yaml:"enabled,omitempty"`
	ListenAddr      string `yaml:"listen_addr,omitempty"`
	CAFilePath      string `yaml:"ca_file_path,omitempty"`
	TLSCertFilePath string `yaml:"tls_cert_file_path,omitempty"`
	TLSKeyFilePath  string `yaml:"tls_key_file_path,omitempty"`
}

func (HTTPSServerConfig) NewTLSConfig

func (c HTTPSServerConfig) NewTLSConfig() (*tls.Config, error)

type PrometheusCRConfig

type PrometheusCRConfig struct {
	Enabled                         bool                  `yaml:"enabled,omitempty"`
	AllowNamespaces                 []string              `yaml:"allow_namespaces,omitempty"`
	DenyNamespaces                  []string              `yaml:"deny_namespaces,omitempty"`
	PodMonitorSelector              *metav1.LabelSelector `yaml:"pod_monitor_selector,omitempty"`
	PodMonitorNamespaceSelector     *metav1.LabelSelector `yaml:"pod_monitor_namespace_selector,omitempty"`
	ServiceMonitorSelector          *metav1.LabelSelector `yaml:"service_monitor_selector,omitempty"`
	ServiceMonitorNamespaceSelector *metav1.LabelSelector `yaml:"service_monitor_namespace_selector,omitempty"`
	ScrapeConfigSelector            *metav1.LabelSelector `yaml:"scrape_config_selector,omitempty"`
	ScrapeConfigNamespaceSelector   *metav1.LabelSelector `yaml:"scrape_config_namespace_selector,omitempty"`
	ProbeSelector                   *metav1.LabelSelector `yaml:"probe_selector,omitempty"`
	ProbeNamespaceSelector          *metav1.LabelSelector `yaml:"probe_namespace_selector,omitempty"`
	ScrapeInterval                  model.Duration        `yaml:"scrape_interval,omitempty"`
}

func (PrometheusCRConfig) GetAllowDenyLists added in v0.121.0

func (c PrometheusCRConfig) GetAllowDenyLists() (map[string]struct{}, map[string]struct{})

GetAllowDenyLists returns the allow and deny lists as maps. If the allow list is empty, it defaults to all namespaces. If the deny list is empty, it defaults to an empty map.

Jump to

Keyboard shortcuts

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