diff --git a/collectors/likwid.go b/collectors/likwid.go new file mode 100644 index 0000000..829b5c3 --- /dev/null +++ b/collectors/likwid.go @@ -0,0 +1,64 @@ +package collectors + +import ( + "bytes" + "fmt" + "time" + + protocol "github.com/influxdata/line-protocol" +) + +type LikwidCollector struct { + name string + tags []*protocol.Tag + fields []*protocol.Field + t time.Time + encoder *protocol.Encoder +} + +func (c *LikwidCollector) Name() string { + return c.name +} +func (c *LikwidCollector) TagList() []*protocol.Tag { + return c.tags +} + +func (c *LikwidCollector) FieldList() []*protocol.Field { + return c.fields +} + +func (c *LikwidCollector) Time() time.Time { + return c.t +} + +func (c *LikwidCollector) New() { + buf := &bytes.Buffer{} + c.encoder = protocol.NewEncoder(buf) + c.encoder.SetMaxLineBytes(1024) +} + +func (c *LikwidCollector) Start( + level string, + frequency time.Duration, + duration int) { + ticker := time.NewTicker(frequency * time.Second) + done := make(chan bool) + + go func() { + for { + select { + case <-done: + return + case t := <-ticker.C: + fmt.Println("Tick at", t) + + c.encoder.Encode(c) + } + } + }() + + time.Sleep(1600 * time.Second) + ticker.Stop() + done <- true + fmt.Println("Ticker stopped") +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9771f8d --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/ClusterCockpit/cc-metric-collector + +go 1.16 + +require github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..3a13697 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 h1:vilfsDSy7TDxedi9gyBkMvAirat/oRcL0lFdJBf6tdM= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=