func()

in internal/beater/config/rum.go [60:103]


func (c *RumConfig) setup(log *logp.Logger, outputESCfg *config.C) error {
	if !c.Enabled {
		return nil
	}

	if _, err := regexp.Compile(c.LibraryPattern); err != nil {
		return errors.Wrapf(err, "Invalid regex for `library_pattern`: ")
	}
	if _, err := regexp.Compile(c.ExcludeFromGrouping); err != nil {
		return errors.Wrapf(err, "Invalid regex for `exclude_from_grouping`: ")
	}

	if outputESCfg == nil {
		log.Info("Unable to determine sourcemap storage, sourcemaps will not be applied")
		return nil
	}

	// Unpack the output elasticsearch config first
	if err := outputESCfg.Unpack(c.SourceMapping.ESConfig); err != nil {
		return errors.Wrap(err, "unpacking Elasticsearch output config into Sourcemap config")
	}

	// SourceMapping ES config not configured, use the main one and return early
	if c.SourceMapping.es == nil {
		log.Info("Using default sourcemap Elasticsearch config")
		return nil
	}

	// Empty out credential fields before merging if credentials are provided in SourceMapping ES config
	if c.SourceMapping.es.HasField("api_key") || c.SourceMapping.es.HasField("username") || c.SourceMapping.es.HasField("password") {
		c.SourceMapping.ESConfig.APIKey = ""
		c.SourceMapping.ESConfig.Username = ""
		c.SourceMapping.ESConfig.Password = ""
	}

	// Unpack the SourceMapping ES config on top of the output elasticsearch config
	if err := c.SourceMapping.es.Unpack(c.SourceMapping.ESConfig); err != nil {
		return errors.Wrap(err, "unpacking Elasticsearch sourcemap config into Sourcemap config")
	}

	c.SourceMapping.es = nil

	return nil
}