72 lines
1.2 KiB
Cheetah
72 lines
1.2 KiB
Cheetah
package beater
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/elastic/beats/libbeat/beat"
|
|
"github.com/elastic/beats/libbeat/common"
|
|
"github.com/elastic/beats/libbeat/logp"
|
|
|
|
"{beat_path}/config"
|
|
)
|
|
|
|
// {Beat} configuration.
|
|
type {Beat} struct {
|
|
done chan struct{}
|
|
config config.Config
|
|
client beat.Client
|
|
}
|
|
|
|
// New creates an instance of {beat}.
|
|
func New(b *beat.Beat, cfg *common.Config) (beat.Beater, error) {
|
|
c := config.DefaultConfig
|
|
if err := cfg.Unpack(&c); err != nil {
|
|
return nil, fmt.Errorf("Error reading config file: %v", err)
|
|
}
|
|
|
|
bt := &{Beat}{
|
|
done: make(chan struct{}),
|
|
config: c,
|
|
}
|
|
return bt, nil
|
|
}
|
|
|
|
// Run starts {beat}.
|
|
func (bt *{Beat}) Run(b *beat.Beat) error {
|
|
logp.Info("{beat} is running! Hit CTRL-C to stop it.")
|
|
|
|
var err error
|
|
bt.client, err = b.Publisher.Connect()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ticker := time.NewTicker(bt.config.Period)
|
|
counter := 1
|
|
for {
|
|
select {
|
|
case <-bt.done:
|
|
return nil
|
|
case <-ticker.C:
|
|
}
|
|
|
|
event := beat.Event{
|
|
Timestamp: time.Now(),
|
|
Fields: common.MapStr{
|
|
"type": b.Info.Name,
|
|
"counter": counter,
|
|
},
|
|
}
|
|
bt.client.Publish(event)
|
|
logp.Info("Event sent")
|
|
counter++
|
|
}
|
|
}
|
|
|
|
// Stop stops {beat}.
|
|
func (bt *{Beat}) Stop() {
|
|
bt.client.Close()
|
|
close(bt.done)
|
|
}
|