// Setup uses the loaded config and creates necessary markers and environment // settings to allow the beat to be used. func (eb *Winlogbeat) setup(b *beat.Beat) error { config := &eb.config.Winlogbeat eb.client = b.Publisher.Connect() var err error eb.checkpoint, err = checkpoint.NewCheckpoint(config.RegistryFile, 10, 5*time.Second) if err != nil { return err } if config.Metrics.BindAddress != "" { bindAddress := config.Metrics.BindAddress sock, err := net.Listen("tcp", bindAddress) if err != nil { return err } go func() { logp.Info("Metrics hosted at http://%s/debug/vars", bindAddress) err := http.Serve(sock, nil) if err != nil { logp.Warn("Unable to launch HTTP service for metrics. %v", err) } }() } return nil }
func (eb *Winlogbeat) Setup(b *beat.Beat) error { eb.beat = b eb.client = b.Events eb.done = make(chan struct{}) var err error eb.checkpoint, err = checkpoint.NewCheckpoint( eb.config.Winlogbeat.RegistryFile, 10, 5*time.Second) if err != nil { return err } if eb.config.Winlogbeat.Metrics.BindAddress != "" { bindAddress := eb.config.Winlogbeat.Metrics.BindAddress sock, err := net.Listen("tcp", bindAddress) if err != nil { return err } go func() { logp.Info("Metrics hosted at http://%s/debug/vars", bindAddress) err := http.Serve(sock, nil) if err != nil { logp.Warn("Unable to launch HTTP service for metrics. %v", err) return } }() } return nil }
// Test that a write is triggered when the maximum number of updates is reached. func TestWriteMaxUpdates(t *testing.T) { dir, err := ioutil.TempDir("", "winlogbeat-test") if err != nil { t.Fatal(err) } defer func() { err := os.RemoveAll(dir) if err != nil { t.Fatal(err) } }() file := filepath.Join(dir, "winlogbeat-test") cp, err := checkpoint.NewCheckpoint(file, 2, time.Hour) if err != nil { t.Fatal(err) } defer cp.Shutdown() assert.False(t, fileExists(file)) cp.Persist("App", 1, time.Now()) time.Sleep(time.Second) assert.False(t, fileExists(file)) cp.Persist("App", 2, time.Now()) time.Sleep(time.Second) assert.True(t, fileExists(file)) }
// Setup uses the loaded config and creates necessary markers and environment // settings to allow the beat to be used. func (eb *Winlogbeat) Setup(b *beat.Beat) error { eb.beat = b eb.client = b.Publisher.Connect() eb.done = make(chan struct{}) var err error eb.checkpoint, err = checkpoint.NewCheckpoint( eb.config.Winlogbeat.RegistryFile, 10, 5*time.Second) if err != nil { return err } if eb.config.Winlogbeat.Metrics.BindAddress != "" { bindAddress := eb.config.Winlogbeat.Metrics.BindAddress sock, err := net.Listen("tcp", bindAddress) if err != nil { return err } go func() { logp.Info("Metrics hosted at http://%s/debug/vars", bindAddress) err := http.Serve(sock, nil) if err != nil { logp.Warn("Unable to launch HTTP service for metrics. %v", err) } }() } // Create the event logs. This will validate the event log specific // configuration. eb.eventLogs = make([]eventlog.EventLog, 0, len(eb.config.Winlogbeat.EventLogs)) for _, config := range eb.config.Winlogbeat.EventLogs { eventLog, err := eventlog.New(config) if err != nil { return fmt.Errorf("Failed to create new event log. %v", err) } debugf("Initialized EventLog[%s]", eventLog.Name()) eb.eventLogs = append(eb.eventLogs, eventLog) } return nil }