diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d6551f638e8d..a152447f8dca 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -41,6 +41,7 @@ https://github.com/elastic/beats/compare/v6.0.0-beta2...master[Check the HEAD di *Filebeat* - Fix default paths for redis 4.0.1 logs on macOS {pull}5173[5173] +- Fix Filebeat not starting if command line and modules configs are used together. {issue}5376[5376] *Heartbeat* diff --git a/filebeat/beater/filebeat.go b/filebeat/beater/filebeat.go index dc67b059a349..bba19a3300d8 100644 --- a/filebeat/beater/filebeat.go +++ b/filebeat/beater/filebeat.go @@ -51,7 +51,7 @@ func New(b *beat.Beat, rawConfig *common.Config) (beat.Beater, error) { return nil, err } - moduleRegistry, err := fileset.NewModuleRegistry(config.Modules, b.Info.Version) + moduleRegistry, err := fileset.NewModuleRegistry(config.Modules, b.Info.Version, true) if err != nil { return nil, err } diff --git a/filebeat/fileset/factory.go b/filebeat/fileset/factory.go index d3350982f13e..23dd9c7a4b9c 100644 --- a/filebeat/fileset/factory.go +++ b/filebeat/fileset/factory.go @@ -44,7 +44,7 @@ func NewFactory(outlet channel.Factory, registrar *registrar.Registrar, beatVers // Create creates a module based on a config func (f *Factory) Create(c *common.Config) (cfgfile.Runner, error) { // Start a registry of one module: - m, err := NewModuleRegistry([]*common.Config{c}, f.beatVersion) + m, err := NewModuleRegistry([]*common.Config{c}, f.beatVersion, false) if err != nil { return nil, err } diff --git a/filebeat/fileset/modules.go b/filebeat/fileset/modules.go index 82dbb2987852..d97fd77f5480 100644 --- a/filebeat/fileset/modules.go +++ b/filebeat/fileset/modules.go @@ -87,7 +87,7 @@ func newModuleRegistry(modulesPath string, } // NewModuleRegistry reads and loads the configured module into the registry. -func NewModuleRegistry(moduleConfigs []*common.Config, beatVersion string) (*ModuleRegistry, error) { +func NewModuleRegistry(moduleConfigs []*common.Config, beatVersion string, init bool) (*ModuleRegistry, error) { modulesPath := paths.Resolve(paths.Home, "module") stat, err := os.Stat(modulesPath) @@ -96,9 +96,13 @@ func NewModuleRegistry(moduleConfigs []*common.Config, beatVersion string) (*Mod return &ModuleRegistry{}, nil // empty registry, no error } - modulesCLIList, modulesOverrides, err := getModulesCLIConfig() - if err != nil { - return nil, err + var modulesCLIList []string + var modulesOverrides *ModuleOverrides + if init { + modulesCLIList, modulesOverrides, err = getModulesCLIConfig() + if err != nil { + return nil, err + } } mcfgs := []*ModuleConfig{} for _, moduleConfig := range moduleConfigs { @@ -108,7 +112,9 @@ func NewModuleRegistry(moduleConfigs []*common.Config, beatVersion string) (*Mod } mcfgs = append(mcfgs, mcfg) } + mcfgs, err = appendWithoutDuplicates(mcfgs, modulesCLIList) + if err != nil { return nil, err } diff --git a/filebeat/fileset/modules_test.go b/filebeat/fileset/modules_test.go index da4e34ec3c03..feed6e6cb9f8 100644 --- a/filebeat/fileset/modules_test.go +++ b/filebeat/fileset/modules_test.go @@ -346,7 +346,7 @@ func TestMissingModuleFolder(t *testing.T) { load(t, map[string]interface{}{"module": "nginx"}), } - reg, err := NewModuleRegistry(configs, "5.2.0") + reg, err := NewModuleRegistry(configs, "5.2.0", true) assert.NoError(t, err) assert.NotNil(t, reg)