Skip to content

Commit 8920a05

Browse files
[Chore][libbeat] Replace global logger with single logger instance (#43493)
* [Chore] Use single logger instance * Update x-pack/filebeat/fbreceiver/receiver_test.go Co-authored-by: Mauri de Souza Meneguzzo <[email protected]> * Update x-pack/filebeat/fbreceiver/receiver_test.go Co-authored-by: Mauri de Souza Meneguzzo <[email protected]> * libbeat/cmd is complete * keep only libbeat changes * keep only libbeat changes * add libbeat/monitoring/report package * add my fork * use beat.Info.Logger * remove cloudid * remove println * fix tests * add libbeat/idxmgmt * add libbeat/monitoring/report * go mod tidy * fix idxmgmt tests * fixing and finishing things * fix tests * fix tests * fix tests * debugging statement * stringify debug statement * fixing tests * fixing tests * add libbeat/instrumentation * update ea-libs * fix lint * fix tests and lint * golangci lint * initialize logger before using in instrumentation * address review comments * address review comments 2 * add libbeat/output & libbeat/template * fix tests * add libbeat/dashboards & libbeat/cfgfile * add libbeat/dashboards & libbeat/cfgfile * fix lint * add libbeat/persistentcache * mage check * mage check * merge and fix tests * fix test * add logger on metricbeat * fix lint * fix lint * fix tests * address review comments * lint check * fix lint * fix lint * fix lint * fix lint * fix lint * fix lint in redis files * lint fix * fix lint * fix lint and tests * fix logstash test * fix test reload functionality * add integration build tag * use t.TempDir and non-capitalize logged errors * add linter check * fix log discrepancy * add nolint for errors starting with capitalized letter * fix logger discrepancy * add linting fixes --------- Co-authored-by: Mauri de Souza Meneguzzo <[email protected]>
1 parent 70fdd8c commit 8920a05

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+444
-360
lines changed

filebeat/beater/crawler.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ func newCrawler(
4848
inputConfigs []*conf.C,
4949
beatDone chan struct{},
5050
once bool,
51+
logger *logp.Logger,
5152
) (*crawler, error) {
5253
return &crawler{
53-
log: logp.NewLogger("crawler"),
54+
log: logger.Named("crawler"),
5455
inputs: map[uint64]cfgfile.Runner{},
5556
inputsFactory: inputFactory,
5657
modulesFactory: module,
@@ -152,7 +153,7 @@ func (c *crawler) startInput(
152153
}
153154

154155
func (c *crawler) Stop() {
155-
logp.Info("Stopping Crawler")
156+
c.log.Info("Stopping Crawler")
156157

157158
asyncWaitStop := func(stop func()) {
158159
c.wg.Add(1)
@@ -162,7 +163,7 @@ func (c *crawler) Stop() {
162163
}()
163164
}
164165

165-
logp.Info("Stopping %d inputs", len(c.inputs))
166+
c.log.Infof("Stopping %d inputs", len(c.inputs))
166167
// Stop inputs in parallel
167168
for id, p := range c.inputs {
168169
id, p := id, p
@@ -182,7 +183,7 @@ func (c *crawler) Stop() {
182183

183184
c.WaitForCompletion()
184185

185-
logp.Info("Crawler stopped")
186+
c.log.Info("Crawler stopped")
186187
}
187188

188189
func (c *crawler) WaitForCompletion() {

filebeat/beater/filebeat.go

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ type Filebeat struct {
7373
done chan struct{}
7474
stopOnce sync.Once // wraps the Stop() method
7575
pipeline beat.PipelineConnector
76+
logger *logp.Logger
7677
}
7778

7879
type PluginFactory func(beat.Info, *logp.Logger, statestore.States) []v2.Plugin
@@ -87,7 +88,7 @@ func New(plugins PluginFactory) beat.Creator {
8788
func newBeater(b *beat.Beat, plugins PluginFactory, rawConfig *conf.C) (beat.Beater, error) {
8889
config := cfg.DefaultConfig
8990
if err := rawConfig.Unpack(&config); err != nil {
90-
return nil, fmt.Errorf("Error reading config file: %w", err)
91+
return nil, fmt.Errorf("Error reading config file: %w", err) //nolint:staticcheck //Keep old behavior
9192
}
9293

9394
if err := cfgwarn.CheckRemoved6xSettings(
@@ -132,7 +133,7 @@ func newBeater(b *beat.Beat, plugins PluginFactory, rawConfig *conf.C) (beat.Bea
132133
"input_metrics.json", "application/json", func() []byte {
133134
data, err := inputmon.MetricSnapshotJSON()
134135
if err != nil {
135-
logp.L().Warnw("Failed to collect input metric snapshot for Agent diagnostics.", "error", err)
136+
b.Info.Logger.Warnw("Failed to collect input metric snapshot for Agent diagnostics.", "error", err)
136137
return []byte(err.Error())
137138
}
138139
return data
@@ -161,7 +162,7 @@ func newBeater(b *beat.Beat, plugins PluginFactory, rawConfig *conf.C) (beat.Bea
161162
}
162163

163164
// in the `setup` command, log this only as a warning
164-
logp.Warn("Setup called, but no modules enabled.")
165+
b.Info.Logger.Warn("Setup called, but no modules enabled.")
165166
}
166167

167168
if *once && config.ConfigInput.Enabled() && config.ConfigModules.Enabled() {
@@ -177,6 +178,7 @@ func newBeater(b *beat.Beat, plugins PluginFactory, rawConfig *conf.C) (beat.Bea
177178
config: &config,
178179
moduleRegistry: moduleRegistry,
179180
pluginFactory: plugins,
181+
logger: b.Info.Logger,
180182
}
181183

182184
err = fb.setupPipelineLoaderCallback(b)
@@ -190,7 +192,7 @@ func newBeater(b *beat.Beat, plugins PluginFactory, rawConfig *conf.C) (beat.Bea
190192
// setupPipelineLoaderCallback sets the callback function for loading pipelines during setup.
191193
func (fb *Filebeat) setupPipelineLoaderCallback(b *beat.Beat) error {
192194
if b.Config.Output.Name() != "elasticsearch" && !b.Manager.Enabled() {
193-
logp.Warn(pipelinesWarning)
195+
fb.logger.Warn(pipelinesWarning)
194196
return nil
195197
}
196198

@@ -223,7 +225,7 @@ func (fb *Filebeat) setupPipelineLoaderCallback(b *beat.Beat) error {
223225
newPath := strings.TrimSuffix(origPath, ".yml")
224226
_ = fb.config.ConfigModules.SetString("path", -1, newPath)
225227
}
226-
modulesLoader := cfgfile.NewReloader(logp.L().Named("module.reloader"), fb.pipeline, fb.config.ConfigModules)
228+
modulesLoader := cfgfile.NewReloader(fb.logger.Named("module.reloader"), fb.pipeline, fb.config.ConfigModules)
227229
modulesLoader.Load(modulesFactory)
228230
}
229231

@@ -236,7 +238,7 @@ func (fb *Filebeat) setupPipelineLoaderCallback(b *beat.Beat) error {
236238
// setup.
237239
func (fb *Filebeat) loadModulesPipelines(b *beat.Beat) error {
238240
if b.Config.Output.Name() != "elasticsearch" {
239-
logp.Warn(pipelinesWarning)
241+
fb.logger.Warn(pipelinesWarning)
240242
return nil
241243
}
242244

@@ -288,7 +290,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
288290

289291
registryMigrator := registrar.NewMigrator(config.Registry)
290292
if err := registryMigrator.Run(); err != nil {
291-
logp.Err("Failed to migrate registry file: %+v", err)
293+
fb.logger.Errorf("Failed to migrate registry file: %+v", err)
292294
return err
293295
}
294296

@@ -299,9 +301,9 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
299301
cn()
300302
}()
301303

302-
stateStore, err := openStateStore(ctx, b.Info, logp.NewLogger("filebeat"), config.Registry)
304+
stateStore, err := openStateStore(ctx, b.Info, fb.logger.Named("filebeat"), config.Registry)
303305
if err != nil {
304-
logp.Err("Failed to open state store: %+v", err)
306+
fb.logger.Errorf("Failed to open state store: %+v", err)
305307
return err
306308
}
307309
defer stateStore.Close()
@@ -313,7 +315,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
313315
b.OutputConfigReloader = reload.ReloadableFunc(func(r *reload.ConfigWithMeta) error {
314316
outCfg := conf.Namespace{}
315317
if err := r.Config.Unpack(&outCfg); err != nil || outCfg.Name() != "elasticsearch" {
316-
logp.Err("Failed to unpack the output config: %v", err)
318+
fb.logger.Errorf("Failed to unpack the output config: %v", err)
317319
return nil
318320
}
319321

@@ -322,24 +324,24 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
322324
// See https://github.com/elastic/beats/issues/42815
323325
configCopy, err := conf.NewConfigFrom(outCfg.Config())
324326
if err != nil {
325-
logp.Err("Failed to create a new config from the output config: %v", err)
327+
fb.logger.Errorf("Failed to create a new config from the output config: %v", err)
326328
return nil
327329
}
328330
stateStore.notifier.Notify(configCopy)
329331
return nil
330332
})
331333
}
332334

333-
err = filestream.ValidateInputIDs(config.Inputs, logp.NewLogger("input.filestream"))
335+
err = filestream.ValidateInputIDs(config.Inputs, fb.logger.Named("input.filestream"))
334336
if err != nil {
335-
logp.Err("invalid filestream configuration: %+v", err)
337+
fb.logger.Errorf("invalid filestream configuration: %+v", err)
336338
return err
337339
}
338340

339341
// Setup registrar to persist state
340342
registrar, err := registrar.New(stateStore, finishedLogger, config.Registry.FlushTimeout)
341343
if err != nil {
342-
logp.Err("Could not init registrar: %v", err)
344+
fb.logger.Errorf("Could not init registrar: %v", err)
343345
return err
344346
}
345347

@@ -364,7 +366,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
364366
outDone := make(chan struct{}) // outDone closes down all active pipeline connections
365367
pipelineConnector := channel.NewOutletFactory(outDone).Create
366368

367-
inputsLogger := logp.NewLogger("input")
369+
inputsLogger := fb.logger.Named("input")
368370
v2Inputs := fb.pluginFactory(b.Info, inputsLogger, stateStore)
369371
v2InputLoader, err := v2.NewLoader(inputsLogger, v2Inputs, "type", cfg.DefaultType)
370372
if err != nil {
@@ -378,7 +380,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
378380

379381
// Store needs to be fully configured at this point
380382
if err := v2InputLoader.Init(&inputTaskGroup); err != nil {
381-
logp.Err("Failed to initialize the input managers: %v", err)
383+
fb.logger.Errorf("Failed to initialize the input managers: %v", err)
382384
return err
383385
}
384386

@@ -399,12 +401,12 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
399401
if b.Config.Output.Name() == "elasticsearch" {
400402
pipelineLoaderFactory = newPipelineLoaderFactory(pipelineFactoryCtx, b.Config.Output.Config())
401403
} else {
402-
logp.Warn(pipelinesWarning)
404+
fb.logger.Warn(pipelinesWarning)
403405
}
404406
moduleLoader := fileset.NewFactory(inputLoader, b.Info, pipelineLoaderFactory, config.OverwritePipelines)
405-
crawler, err := newCrawler(inputLoader, moduleLoader, config.Inputs, fb.done, *once)
407+
crawler, err := newCrawler(inputLoader, moduleLoader, config.Inputs, fb.done, *once, fb.logger)
406408
if err != nil {
407-
logp.Err("Could not init crawler: %v", err)
409+
fb.logger.Errorf("Could not init crawler: %v", err)
408410
return err
409411
}
410412

@@ -415,7 +417,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
415417
// Start the registrar
416418
err = registrar.Start()
417419
if err != nil {
418-
return fmt.Errorf("Could not start registrar: %w", err)
420+
return fmt.Errorf("Could not start registrar: %w", err) //nolint:staticcheck //Keep old behavior
419421
}
420422

421423
// Stopping registrar will write last state
@@ -433,31 +435,31 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
433435
defer waitEvents.Wait()
434436

435437
if config.OverwritePipelines {
436-
logp.Debug("modules", "Existing Ingest pipelines will be updated")
438+
fb.logger.Debug("modules", "Existing Ingest pipelines will be updated")
437439
}
438440

439441
err = crawler.Start(fb.pipeline, config.ConfigInput, config.ConfigModules)
440442
if err != nil {
441443
crawler.Stop()
442444
cancelPipelineFactoryCtx()
443-
return fmt.Errorf("Failed to start crawler: %w", err)
445+
return fmt.Errorf("Failed to start crawler: %w", err) //nolint:staticcheck //Keep old behavior
444446
}
445447

446448
// If run once, add crawler completion check as alternative to done signal
447449
if *once {
448450
runOnce := func() {
449-
logp.Info("Running filebeat once. Waiting for completion ...")
451+
fb.logger.Info("Running filebeat once. Waiting for completion ...")
450452
crawler.WaitForCompletion()
451-
logp.Info("All data collection completed. Shutting down.")
453+
fb.logger.Info("All data collection completed. Shutting down.")
452454
}
453455
waitFinished.Add(runOnce)
454456
}
455457

456458
// Register reloadable list of inputs and modules
457-
inputs := cfgfile.NewRunnerList(management.DebugK, inputLoader, fb.pipeline)
459+
inputs := cfgfile.NewRunnerList(management.DebugK, inputLoader, fb.pipeline, fb.logger)
458460
b.Registry.MustRegisterInput(inputs)
459461

460-
modules := cfgfile.NewRunnerList(management.DebugK, moduleLoader, fb.pipeline)
462+
modules := cfgfile.NewRunnerList(management.DebugK, moduleLoader, fb.pipeline, fb.logger)
461463

462464
var adiscover *autodiscover.Autodiscover
463465
if fb.config.Autodiscover != nil {
@@ -471,6 +473,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
471473
autodiscover.QueryConfig(),
472474
config.Autodiscover,
473475
b.Keystore,
476+
fb.logger,
474477
)
475478
if err != nil {
476479
return err
@@ -506,7 +509,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
506509
"Continue shutdown: All enqueued events being published."))
507510
// Wait for either timeout or all events having been ACKed by outputs.
508511
if fb.config.ShutdownTimeout > 0 {
509-
logp.Info("Shutdown output timer started. Waiting for max %v.", timeout)
512+
fb.logger.Info("Shutdown output timer started. Waiting for max %v.", timeout)
510513
waitEvents.Add(withLog(waitDuration(timeout),
511514
"Continue shutdown: Time out waiting for events being published."))
512515
} else {
@@ -532,7 +535,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error {
532535

533536
// Stop is called on exit to stop the crawling, spooling and registration processes.
534537
func (fb *Filebeat) Stop() {
535-
logp.Info("Stopping filebeat")
538+
fb.logger.Info("Stopping filebeat")
536539

537540
// Stop Filebeat
538541
fb.stopOnce.Do(func() { close(fb.done) })
@@ -543,7 +546,7 @@ func newPipelineLoaderFactory(ctx context.Context, esConfig *conf.C) fileset.Pip
543546
pipelineLoaderFactory := func() (fileset.PipelineLoader, error) {
544547
esClient, err := eslegclient.NewConnectedClient(ctx, esConfig, "Filebeat")
545548
if err != nil {
546-
return nil, fmt.Errorf("Error creating Elasticsearch client: %w", err)
549+
return nil, fmt.Errorf("Error creating Elasticsearch client: %w", err) //nolint:staticcheck //Keep old behavior
547550
}
548551
return esClient, nil
549552
}

filebeat/cmd/modules.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func buildModulesManager(beat *beat.Beat) (cmd.ModulesManager, error) {
3939
return nil, fmt.Errorf("wrong settings for config.modules.path, it is expected to end with *.yml. Got: %s", glob)
4040
}
4141

42-
modulesManager, err := cfgfile.NewGlobManager(glob, ".yml", ".disabled")
42+
modulesManager, err := cfgfile.NewGlobManager(glob, ".yml", ".disabled", beat.Info.Logger)
4343
if err != nil {
4444
return nil, fmt.Errorf("initialization error: %w", err)
4545
}

heartbeat/beater/heartbeat.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func (bt *Heartbeat) Run(b *beat.Beat) error {
184184
}
185185

186186
if bt.config.ConfigMonitors.Enabled() {
187-
bt.monitorReloader = cfgfile.NewReloader(logp.L().Named("module.reload"), b.Publisher, bt.config.ConfigMonitors)
187+
bt.monitorReloader = cfgfile.NewReloader(b.Info.Logger.Named("module.reload"), b.Publisher, bt.config.ConfigMonitors)
188188
defer bt.monitorReloader.Stop()
189189

190190
err := bt.RunReloadableMonitors()
@@ -285,7 +285,7 @@ func (bt *Heartbeat) RunCentralMgmtMonitors(b *beat.Beat) {
285285
return nil
286286
})
287287

288-
inputs := cfgfile.NewRunnerList(management.DebugK, bt.monitorFactory, b.Publisher)
288+
inputs := cfgfile.NewRunnerList(management.DebugK, bt.monitorFactory, b.Publisher, b.Info.Logger)
289289
b.Registry.MustRegisterInput(inputs)
290290
}
291291

@@ -311,6 +311,7 @@ func (bt *Heartbeat) makeAutodiscover(b *beat.Beat) (*autodiscover.Autodiscover,
311311
autodiscover.QueryConfig(),
312312
bt.config.Autodiscover,
313313
b.Keystore,
314+
b.Info.Logger,
314315
)
315316
if err != nil {
316317
return nil, err

libbeat/autodiscover/autodiscover.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ func NewAutodiscover(
7575
configurer EventConfigurer,
7676
c *Config,
7777
keystore keystore.Keystore,
78+
logger *logp.Logger,
7879
) (*Autodiscover, error) {
79-
logger := logp.NewLogger("autodiscover")
80+
logger = logger.Named("autodiscover")
8081

8182
// Init Event bus
8283
bus := bus.New(logger, name)
@@ -98,7 +99,7 @@ func NewAutodiscover(
9899
factory: factory,
99100
configurer: configurer,
100101
configs: map[string]map[uint64]*reload.ConfigWithMeta{},
101-
runners: cfgfile.NewRunnerList("autodiscover.cfgfile", factory, pipeline),
102+
runners: cfgfile.NewRunnerList("autodiscover.cfgfile", factory, pipeline, logger),
102103
providers: providers,
103104
meta: meta.NewMap(),
104105
logger: logger,

0 commit comments

Comments
 (0)