pkg/exporter/cmd/config.go (42 lines of code) (raw):

package cmd import ( "fmt" "os" "gopkg.in/yaml.v3" ) type InspServerConfig struct { DebugMode bool `yaml:"debugMode" mapstructure:"debugMode" json:"debugMode"` // A better way to set listen port is a `address` field that can be used for bind interface ip, or even unix domain socket // Deprecated: use address instead Port uint16 `yaml:"port" mapstructure:"port" json:"port"` Address string `yaml:"address" mapstructure:"address" json:"address"` EnableController bool `yaml:"enableController" mapstructure:"enableController" json:"enableController"` ControllerAddr string `yaml:"controllerAddr" mapstructure:"controllerAddr" json:"controllerAddr"` MetricsConfig MetricsConfig `yaml:"metrics" mapstructure:"metrics" json:"metrics"` EventConfig EventConfig `yaml:"event" mapstructure:"event" json:"event"` } type MetricsConfig struct { Probes []ProbeConfig `yaml:"probes" mapstructure:"probes" json:"probes"` AdditionalLabels []string `yaml:"additionalLabels" mapstructure:"additionalLabels" json:"additionalLabels"` } type EventConfig struct { EventSinks []EventSinkConfig `yaml:"sinks" mapstructure:"sinks" json:"sinks"` Probes []ProbeConfig `yaml:"probes" mapstructure:"probes" json:"probes"` } type EventSinkConfig struct { Name string `yaml:"name" mapstructure:"name" json:"name"` Args interface{} `yaml:"args" mapstructure:"args" json:"args"` } type ProbeConfig struct { Name string `yaml:"name" mapstructure:"name" json:"name"` Args map[string]interface{} `yaml:"args" mapstructure:"args" json:"args"` } func loadConfig(path string) (*InspServerConfig, error) { cfg := InspServerConfig{} data, err := os.ReadFile(path) if err != nil { return nil, fmt.Errorf("failed read config file %s: %w", path, err) } if err = yaml.Unmarshal(data, &cfg); err != nil { return nil, fmt.Errorf("failed parse config file %s: %w", path, err) } return &cfg, nil }