mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2024-11-10 04:27:25 +01:00
Reformat. Cosmetic changes in structure
This commit is contained in:
parent
f32ff9d006
commit
e7d933e60f
@ -10,15 +10,11 @@ import "C"
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
// "io/ioutil"
|
|
||||||
// "log"
|
|
||||||
// "strconv"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
//protocol "github.com/influxdata/line-protocol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type LikwidCollector struct {
|
type LikwidCollector struct {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package collectors
|
package collectors
|
||||||
|
|
||||||
import (
|
import (
|
||||||
// "errors"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
//protocol "github.com/influxdata/line-protocol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const MEMSTATFILE = `/proc/meminfo`
|
const MEMSTATFILE = `/proc/meminfo`
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"sink": {
|
"sink": {
|
||||||
"user": "admin",
|
"user": "admin",
|
||||||
"password": "12345"
|
"password": "12345",
|
||||||
},
|
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": "8080",
|
"port": "8080"
|
||||||
|
},
|
||||||
"interval" : 3,
|
"interval" : 3,
|
||||||
"duration" : 1,
|
"duration" : 1,
|
||||||
"collectors": [
|
"collectors": [
|
||||||
@ -16,4 +16,3 @@
|
|||||||
"lustrestat"
|
"lustrestat"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,13 +3,14 @@ package main
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/ClusterCockpit/cc-metric-collector/collectors"
|
|
||||||
protocol "github.com/influxdata/line-protocol"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ClusterCockpit/cc-metric-collector/collectors"
|
||||||
|
protocol "github.com/influxdata/line-protocol"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Collectors = map[string]collectors.MetricGetter{
|
var Collectors = map[string]collectors.MetricGetter{
|
||||||
@ -21,6 +22,8 @@ var Collectors = map[string]collectors.MetricGetter{
|
|||||||
"lustrestat": &collectors.LustreCollector{},
|
"lustrestat": &collectors.LustreCollector{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var serializer *protocol.Encoder
|
||||||
|
|
||||||
type GlobalConfig struct {
|
type GlobalConfig struct {
|
||||||
Sink struct {
|
Sink struct {
|
||||||
User string `json:"user"`
|
User string `json:"user"`
|
||||||
@ -61,6 +64,17 @@ func shutdown(wg *sync.WaitGroup, config *GlobalConfig) {
|
|||||||
}(wg)
|
}(wg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setupProtocol(scope string, tags map[string]string, fields map[string]interface{}, t time.Time) {
|
||||||
|
cur, err := protocol.New(scope, tags, fields, t)
|
||||||
|
if err != nil {
|
||||||
|
log.Print(err)
|
||||||
|
}
|
||||||
|
_, err = serializer.Encode(cur)
|
||||||
|
if err != nil {
|
||||||
|
log.Print(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var config GlobalConfig
|
var config GlobalConfig
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
@ -70,7 +84,6 @@ func main() {
|
|||||||
log.Print(err)
|
log.Print(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var tags = map[string]string{"host": host}
|
|
||||||
|
|
||||||
LoadConfiguration("config.json", &config)
|
LoadConfiguration("config.json", &config)
|
||||||
if config.Interval <= 0 || time.Duration(config.Interval)*time.Second <= 0 {
|
if config.Interval <= 0 || time.Duration(config.Interval)*time.Second <= 0 {
|
||||||
@ -82,27 +95,33 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
shutdown(&wg, &config)
|
shutdown(&wg, &config)
|
||||||
serializer := protocol.NewEncoder(os.Stdout)
|
|
||||||
|
serializer = protocol.NewEncoder(os.Stdout)
|
||||||
serializer.SetPrecision(time.Second)
|
serializer.SetPrecision(time.Second)
|
||||||
serializer.SetMaxLineBytes(1024)
|
serializer.SetMaxLineBytes(1024)
|
||||||
|
|
||||||
for _, c := range config.Collectors {
|
for _, c := range config.Collectors {
|
||||||
col := Collectors[c]
|
col := Collectors[c]
|
||||||
col.Init()
|
col.Init()
|
||||||
log.Print("Start ", col.Name())
|
log.Print("Start ", col.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Print(config.Interval, time.Duration(config.Interval)*time.Second)
|
log.Print(config.Interval, time.Duration(config.Interval)*time.Second)
|
||||||
ticker := time.NewTicker(time.Duration(config.Interval) * time.Second)
|
ticker := time.NewTicker(time.Duration(config.Interval) * time.Second)
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
node_fields := make(map[string]interface{})
|
|
||||||
|
nodeFields := make(map[string]interface{})
|
||||||
|
|
||||||
slist := collectors.SocketList()
|
slist := collectors.SocketList()
|
||||||
sockets_fields := make(map[int]map[string]interface{}, len(slist))
|
socketsFields := make(map[int]map[string]interface{}, len(slist))
|
||||||
for _, s := range slist {
|
for _, s := range slist {
|
||||||
sockets_fields[s] = make(map[string]interface{})
|
socketsFields[s] = make(map[string]interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
clist := collectors.CpuList()
|
clist := collectors.CpuList()
|
||||||
cpu_fields := make(map[int]map[string]interface{}, len(clist))
|
cpuFields := make(map[int]map[string]interface{}, len(clist))
|
||||||
for _, s := range clist {
|
for _, s := range clist {
|
||||||
cpu_fields[s] = make(map[string]interface{})
|
cpuFields[s] = make(map[string]interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@ -111,63 +130,41 @@ func main() {
|
|||||||
case <-done:
|
case <-done:
|
||||||
return
|
return
|
||||||
case t := <-ticker.C:
|
case t := <-ticker.C:
|
||||||
|
|
||||||
scount := 0
|
scount := 0
|
||||||
ccount := 0
|
ccount := 0
|
||||||
|
|
||||||
for _, c := range config.Collectors {
|
for _, c := range config.Collectors {
|
||||||
col := Collectors[c]
|
col := Collectors[c]
|
||||||
col.Read(time.Duration(config.Duration))
|
col.Read(time.Duration(config.Duration))
|
||||||
|
|
||||||
for key, val := range col.GetNodeMetric() {
|
for key, val := range col.GetNodeMetric() {
|
||||||
node_fields[key] = val
|
nodeFields[key] = val
|
||||||
}
|
}
|
||||||
for sid, socket := range col.GetSocketMetrics() {
|
for sid, socket := range col.GetSocketMetrics() {
|
||||||
for key, val := range socket {
|
for key, val := range socket {
|
||||||
sockets_fields[sid][key] = val
|
socketsFields[sid][key] = val
|
||||||
scount++
|
scount++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for cid, cpu := range col.GetCpuMetrics() {
|
for cid, cpu := range col.GetCpuMetrics() {
|
||||||
for key, val := range cpu {
|
for key, val := range cpu {
|
||||||
cpu_fields[cid][key] = val
|
cpuFields[cid][key] = val
|
||||||
ccount++
|
ccount++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var CurrentNode protocol.MutableMetric
|
|
||||||
CurrentNode, err = protocol.New("node", tags, node_fields, t)
|
setupProtocol("node", map[string]string{"host": host}, nodeFields, t)
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
_, err := serializer.Encode(CurrentNode)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
if scount > 0 {
|
if scount > 0 {
|
||||||
for sid, socket := range sockets_fields {
|
for sid, socket := range socketsFields {
|
||||||
var CurrentSocket protocol.MutableMetric
|
setupProtocol("socket", map[string]string{"socket": fmt.Sprintf("%d", sid), "host": host}, socket, t)
|
||||||
var stags = map[string]string{"socket": fmt.Sprintf("%d", sid), "host": host}
|
|
||||||
CurrentSocket, err = protocol.New("socket", stags, socket, t)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
_, err := serializer.Encode(CurrentSocket)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ccount > 0 {
|
if ccount > 0 {
|
||||||
for cid, cpu := range cpu_fields {
|
for cid, cpu := range cpuFields {
|
||||||
var CurrentCpu protocol.MutableMetric
|
setupProtocol("cpu", map[string]string{"cpu": fmt.Sprintf("%d", cid), "host": host}, cpu, t)
|
||||||
var ctags = map[string]string{"host": host, "cpu": fmt.Sprintf("%d", cid)}
|
|
||||||
CurrentCpu, err = protocol.New("cpu", ctags, cpu, t)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
_, err := serializer.Encode(CurrentCpu)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user