// 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 (pb *Packetbeat) Run(b *beat.Beat) error { // run the sniffer in background go func() { err := pb.Sniff.Run() if err != nil { logp.Critical("Sniffer main loop failed: %v", err) os.Exit(1) } pb.over <- true }() // Startup successful, disable stderr logging if requested by // cmdline flag logp.SetStderr() logp.Debug("main", "Waiting for the sniffer to finish") // Wait for the goroutines to finish for range pb.over { if !pb.Sniff.IsAlive() { break } } waitShutdown := pb.CmdLineArgs.WaitShutdown if waitShutdown != nil && *waitShutdown > 0 { time.Sleep(time.Duration(*waitShutdown) * time.Second) } 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 }
// config reads the configuration file from disk, parses the common options // defined in BeatConfig, initializes logging, and set GOMAXPROCS if defined // in the config. Lastly it invokes the Config method implemented by the beat. func (bc *instance) config() error { var err error bc.data.RawConfig, err = cfgfile.Load("") if err != nil { return fmt.Errorf("error loading config file: %v", err) } err = bc.data.RawConfig.Unpack(&bc.data.Config) if err != nil { return fmt.Errorf("error unpacking config data: %v", err) } err = paths.InitPaths(&bc.data.Config.Path) if err != nil { return fmt.Errorf("error setting default paths: %v", err) } err = logp.Init(bc.data.Name, &bc.data.Config.Logging) if err != nil { return fmt.Errorf("error initializing logging: %v", err) } // Disable stderr logging if requested by cmdline flag logp.SetStderr() // log paths values to help with troubleshooting logp.Info(paths.Paths.String()) bc.data.filters, err = filter.New(bc.data.Config.Filters) if err != nil { return fmt.Errorf("error initializing filters: %v", err) } debugf("Filters: %+v", bc.data.filters) if bc.data.Config.Shipper.MaxProcs != nil { maxProcs := *bc.data.Config.Shipper.MaxProcs if maxProcs > 0 { runtime.GOMAXPROCS(maxProcs) } } return bc.beater.Config(bc.data) // TODO: If -configtest is set it should exit at this point. But changing // this now would mean a change in behavior. Some Beats may depend on the // Setup() method being invoked in order to do configuration validation. // If we do not change this, it means -configtest requires the outputs to // be available because the publisher is being started (this is not // desirable - elastic/beats#1213). It (may?) also cause the index template // to be loaded. }
// config reads the configuration file from disk, parses the common options // defined in BeatConfig, initializes logging, and set GOMAXPROCS if defined // in the config. Lastly it invokes the Config method implemented by the beat. func (bc *instance) config() error { var err error bc.data.RawConfig, err = cfgfile.Load("") if err != nil { return fmt.Errorf("error loading config file: %v", err) } err = bc.data.RawConfig.Unpack(&bc.data.Config) if err != nil { return fmt.Errorf("error unpacking config data: %v", err) } err = paths.InitPaths(&bc.data.Config.Path) if err != nil { return fmt.Errorf("error setting default paths: %v", err) } err = logp.Init(bc.data.Name, &bc.data.Config.Logging) if err != nil { return fmt.Errorf("error initializing logging: %v", err) } // Disable stderr logging if requested by cmdline flag logp.SetStderr() // log paths values to help with troubleshooting logp.Info(paths.Paths.String()) bc.data.filters, err = filter.New(bc.data.Config.Filters) if err != nil { return fmt.Errorf("error initializing filters: %v", err) } debugf("Filters: %+v", bc.data.filters) if bc.data.Config.Shipper.MaxProcs != nil { maxProcs := *bc.data.Config.Shipper.MaxProcs if maxProcs > 0 { runtime.GOMAXPROCS(maxProcs) } } return bc.beater.Config(bc.data) }
// config reads the configuration file from disk, parses the common options // defined in BeatConfig, initializes logging, and set GOMAXPROCS if defined // in the config. Lastly it invokes the Config method implemented by the beat. func (b *Beat) configure() error { var err error cfg, err := cfgfile.Load("") if err != nil { return fmt.Errorf("error loading config file: %v", err) } b.RawConfig = cfg err = cfg.Unpack(&b.Config) if err != nil { return fmt.Errorf("error unpacking config data: %v", err) } err = paths.InitPaths(&b.Config.Path) if err != nil { return fmt.Errorf("error setting default paths: %v", err) } err = logp.Init(b.Name, &b.Config.Logging) if err != nil { return fmt.Errorf("error initializing logging: %v", err) } // Disable stderr logging if requested by cmdline flag logp.SetStderr() // log paths values to help with troubleshooting logp.Info(paths.Paths.String()) if b.Config.Shipper.MaxProcs != nil { maxProcs := *b.Config.Shipper.MaxProcs if maxProcs > 0 { runtime.GOMAXPROCS(maxProcs) } } return nil }