Merge pull request #1 from ClusterCockpit/dev-jan

Go Modules and further changes
This commit is contained in:
Thomas Gruber 2021-03-18 12:47:47 +01:00 committed by GitHub
commit 63cdc060c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 223 additions and 155 deletions

View File

@ -4,15 +4,15 @@ import (
"fmt"
"os"
"os/exec"
// "context"
"encoding/json"
"path/filepath"
"sort"
"strings"
"time"
"sort"
"path/filepath"
"encoding/json"
)
type GlobalConfig struct {
Sink struct {
User string `json:"user"`
@ -34,7 +34,7 @@ type GlobalConfig struct {
Duration int `json:"duration"`
} `json:"node"`
} `json:"schedule"`
Metrics string `json:"metrics"`
Metrics []string `json:"metrics"`
CollectorPath string `json:"collector_path"`
}
@ -102,7 +102,7 @@ func CreatePoint(metricname string, tags map[string]string, fields map[string]in
taglist := SortStringStringMap(tags)
fieldlist := SortStringInterfaceMap(fields)
if (len(taglist) > 0) {
if len(taglist) > 0 {
fmt.Fprintf(&s, "%s,%s %s %d", metricname, strings.Join(taglist, ","), strings.Join(fieldlist, ","), timestamp)
} else {
fmt.Fprintf(&s, "%s %s %d", metricname, strings.Join(fieldlist, ","), timestamp)
@ -137,7 +137,7 @@ func GetSingleCollector(folders *[]string) filepath.WalkFunc {
if err != nil {
panic(err)
}
if (info.IsDir()) {
if info.IsDir() {
configfile := filepath.Join(path, "config.json")
if _, err := os.Stat(configfile); err == nil {
*folders = append(*folders, path)
@ -171,16 +171,15 @@ func main() {
// fmt.Println(CreatePoint("flops_any", tags, fields, time.Now().UnixNano()))
var config GlobalConfig
LoadGlobalConfiguration("config.json", &config)
// fmt.Println(config)
var folders []string
GetCollectorFolders(config.CollectorPath, &folders)
// fmt.Println(folders)
for _, path := range folders {
var col_config CollectorConfig
configfile := filepath.Join(path, "config.json")
LoadCollectorConfiguration(configfile, &col_config)
cmd := filepath.Join(path, col_config.Command)
stdout := run_cmd(cmd, col_config.Args)
LoadCollectorConfiguration(filepath.Join(path, "config.json"), &col_config)
stdout := run_cmd(filepath.Join(path, col_config.Command), col_config.Args)
metrics := strings.Split(stdout, "\n")
for _, m := range metrics {
if len(m) > 0 {
@ -193,7 +192,5 @@ func main() {
fmt.Println("SEND", m)
}
}
}
}

64
collectors/likwid.go Normal file
View File

@ -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")
}

5
go.mod Normal file
View File

@ -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

2
go.sum Normal file
View File

@ -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=