// setup initializes the Publisher and then invokes the Setup method of the // Beat. func (bc *instance) setup() error { logp.Info("Setup Beat: %s; Version: %s", bc.data.Name, bc.data.Version) debugf("Initializing output plugins") var err error bc.data.Publisher, err = publisher.New(bc.data.Name, bc.data.Config.Output, bc.data.Config.Shipper) if err != nil { return fmt.Errorf("error initializing publisher: %v", err) } bc.data.Publisher.RegisterFilter(bc.data.filters) err = bc.beater.Setup(bc.data) if err != nil { return err } // If -configtest was specified, exit now prior to run. if cfgfile.IsTestConfig() { fmt.Println("Config OK") return GracefulExit } return nil }
// LoadConfig inits the config file and reads the default config information // into Beat.Config. It exists the processes in case of errors. func (b *Beat) LoadConfig() error { err := cfgfile.Read(&b.Config, "") if err != nil { return fmt.Errorf("loading config file error: %v\n", err) } err = logp.Init(b.Name, &b.Config.Logging) if err != nil { return fmt.Errorf("error initializing logging: %v\n", err) } // Disable stderr logging if requested by cmdline flag logp.SetStderr() logp.Debug("beat", "Initializing output plugins") pub, err := publisher.New(b.Name, b.Config.Output, b.Config.Shipper) if err != nil { return fmt.Errorf("error Initialising publisher: %v\n", err) } b.Events = pub.Client() logp.Info("Init Beat: %s; Version: %s", b.Name, b.Version) return nil }
// LoadConfig inits the config file and reads the default config information // into Beat.Config. It exists the processes in case of errors. func (b *Beat) LoadConfig() { err := cfgfile.Read(&b.Config, "") if err != nil { // logging not yet initialized, so using fmt.Printf fmt.Printf("Loading config file error: %v\n", err) os.Exit(1) } err = logp.Init(b.Name, &b.Config.Logging) if err != nil { fmt.Printf("Error initializing logging: %v\n", err) os.Exit(1) } // Disable stderr logging if requested by cmdline flag logp.SetStderr() logp.Debug("beat", "Initializing output plugins") pub, err := publisher.New(b.Name, b.Config.Output, b.Config.Shipper) if err != nil { fmt.Printf("Error Initialising publisher: %v\n", err) logp.Critical(err.Error()) os.Exit(1) } b.Events = pub.Client() logp.Info("Init Beat: %s; Version: %s", b.Name, b.Version) }
func (b *Beat) launch(bt Creator) error { err := b.handleFlags() if err != nil { return err } svc.BeforeRun() defer svc.Cleanup() if err := b.configure(); err != nil { return err } // load the beats config section var sub *common.Config configName := strings.ToLower(b.Name) if b.RawConfig.HasField(configName) { sub, err = b.RawConfig.Child(configName, -1) if err != nil { return err } } else { sub = common.NewConfig() } logp.Info("Setup Beat: %s; Version: %s", b.Name, b.Version) processors, err := processors.New(b.Config.Processors) if err != nil { return fmt.Errorf("error initializing processors: %v", err) } debugf("Initializing output plugins") publisher, err := publisher.New(b.Name, b.Config.Output, b.Config.Shipper, processors) if err != nil { return fmt.Errorf("error initializing publisher: %v", err) } // TODO: some beats race on shutdown with publisher.Stop -> do not call Stop yet, // but refine publisher to disconnect clients on stop automatically // defer publisher.Stop() b.Publisher = publisher beater, err := bt(b, sub) if err != nil { return err } // If -configtest was specified, exit now prior to run. if cfgfile.IsTestConfig() { fmt.Println("Config OK") return GracefulExit } svc.HandleSignals(beater.Stop) logp.Info("%s start running.", b.Name) defer logp.Info("%s stopped.", b.Name) return beater.Run(b) }