in exporter/collector/config.go [220:254]
func ValidateConfig(cfg Config) error {
seenKeys := make(map[string]struct{}, len(cfg.TraceConfig.AttributeMappings))
seenReplacements := make(map[string]struct{}, len(cfg.TraceConfig.AttributeMappings))
for _, mapping := range cfg.TraceConfig.AttributeMappings {
if _, ok := seenKeys[mapping.Key]; ok {
return fmt.Errorf("duplicate key in traces.attribute_mappings: %q", mapping.Key)
}
seenKeys[mapping.Key] = struct{}{}
if _, ok := seenReplacements[mapping.Replacement]; ok {
return fmt.Errorf("duplicate replacement in traces.attribute_mappings: %q", mapping.Replacement)
}
seenReplacements[mapping.Replacement] = struct{}{}
}
for _, resourceFilter := range cfg.MetricConfig.ResourceFilters {
if len(resourceFilter.Regex) == 0 {
continue
}
if _, err := regexp.Compile(resourceFilter.Regex); err != nil {
return fmt.Errorf("unable to parse resource filter regex: %s", err.Error())
}
}
if len(cfg.LogConfig.ClientConfig.Compression) > 0 && cfg.LogConfig.ClientConfig.Compression != gzip.Name {
return fmt.Errorf("unknown compression option '%s', allowed values: '', 'gzip'", cfg.LogConfig.ClientConfig.Compression)
}
if len(cfg.MetricConfig.ClientConfig.Compression) > 0 && cfg.MetricConfig.ClientConfig.Compression != gzip.Name {
return fmt.Errorf("unknown compression option '%s', allowed values: '', 'gzip'", cfg.MetricConfig.ClientConfig.Compression)
}
if len(cfg.TraceConfig.ClientConfig.Compression) > 0 {
return fmt.Errorf("traces.compression invalid: compression is only available for logs and metrics")
}
return nil
}