fix bugs rrd importer -> clients are no nodes :)

This commit is contained in:
Martin Geno 2016-10-04 15:00:54 +02:00
parent dfae737da3
commit 8c09687e86

View File

@ -13,12 +13,14 @@ import (
var linePattern = regexp.MustCompile("^<!-- ....-..-.. ..:..:.. [A-Z]+ / (\\d+) --> <row><v>([^<]+)</v><v>([^<]+)</v></row>") var linePattern = regexp.MustCompile("^<!-- ....-..-.. ..:..:.. [A-Z]+ / (\\d+) --> <row><v>([^<]+)</v><v>([^<]+)</v></row>")
// Dataset a timestemp with values (node and clients)
type Dataset struct { type Dataset struct {
Time time.Time Time time.Time
Nodes float64 Nodes float64
Clients float64 Clients float64
} }
// Read a rrdfile and return a chanel of datasets
func Read(rrdFile string) chan Dataset { func Read(rrdFile string) chan Dataset {
out := make(chan Dataset) out := make(chan Dataset)
cmd := exec.Command("rrdtool", "dump", rrdFile) cmd := exec.Command("rrdtool", "dump", rrdFile)
@ -48,10 +50,10 @@ func Read(rrdFile string) chan Dataset {
found = strings.Contains(str, "<!-- 86400 seconds -->") found = strings.Contains(str, "<!-- 86400 seconds -->")
continue continue
} }
if matches := linePattern.FindStringSubmatch(str); matches != nil && matches[2] != "NaN" { if matches := linePattern.FindStringSubmatch(str); matches != nil && matches[2] != "NaN" && matches[3] != "NaN" {
seconds, _ := strconv.Atoi(matches[1]) seconds, _ := strconv.Atoi(matches[1])
nodes, _ := strconv.ParseFloat(matches[2], 64) nodes, _ := strconv.ParseFloat(matches[2], 64)
clients, _ := strconv.ParseFloat(matches[2], 64) clients, _ := strconv.ParseFloat(matches[3], 64)
out <- Dataset{ out <- Dataset{
Time: time.Unix(int64(seconds), 0), Time: time.Unix(int64(seconds), 0),