Redis plugin, add key metrics and simplify parsing
This commit is contained in:
parent
e0372358df
commit
b92a0d5126
|
@ -6,7 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
// "strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
@ -140,69 +140,81 @@ func (r *Redis) gatherServer(addr *url.URL, acc plugins.Accumulator) error {
|
||||||
c.Write([]byte("info\r\n"))
|
c.Write([]byte("info\r\n"))
|
||||||
|
|
||||||
rdr := bufio.NewReader(c)
|
rdr := bufio.NewReader(c)
|
||||||
|
scanner := bufio.NewScanner(rdr)
|
||||||
line, err := rdr.ReadString('\n')
|
for scanner.Scan() {
|
||||||
if err != nil {
|
fmt.Println(scanner.Text())
|
||||||
return err
|
}
|
||||||
|
if err := scanner.Err(); err != nil {
|
||||||
|
fmt.Println("reading standard input:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if line[0] != '$' {
|
// line, err := rdr.ReadString('\n')
|
||||||
return fmt.Errorf("bad line start: %s", ErrProtocolError)
|
// if err != nil {
|
||||||
}
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
line = strings.TrimSpace(line)
|
// if line[0] != '$' {
|
||||||
|
// return fmt.Errorf("bad line start: %s", ErrProtocolError)
|
||||||
|
// }
|
||||||
|
|
||||||
szStr := line[1:]
|
// line = strings.TrimSpace(line)
|
||||||
|
|
||||||
sz, err := strconv.Atoi(szStr)
|
// szStr := line[0:]
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("bad size string <<%s>>: %s", szStr, ErrProtocolError)
|
|
||||||
}
|
|
||||||
|
|
||||||
var read int
|
// sz, err := strconv.Atoi(szStr)
|
||||||
|
// if err != nil {
|
||||||
|
// return fmt.Errorf("bad size string <<%s>>: %s", szStr, ErrProtocolError)
|
||||||
|
// }
|
||||||
|
|
||||||
for read < sz {
|
// var read int
|
||||||
line, err := rdr.ReadString('\n')
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
read += len(line)
|
// for read < sz {
|
||||||
|
// line, err := rdr.ReadString('\n')
|
||||||
|
// fmt.Printf(line)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
|
||||||
if len(line) == 1 || line[0] == '#' {
|
// read += len(line)
|
||||||
continue
|
// if len(line) == 1 || line[0] == '#' {
|
||||||
}
|
// continue
|
||||||
|
// }
|
||||||
|
|
||||||
parts := strings.SplitN(line, ":", 2)
|
// _, rPort, err := net.SplitHostPort(addr.Host)
|
||||||
|
// if err != nil {
|
||||||
|
// rPort = defaultPort
|
||||||
|
// }
|
||||||
|
// tags := map[string]string{"host": addr.String(), "port": rPort}
|
||||||
|
|
||||||
name := string(parts[0])
|
// parts := strings.SplitN(line, ":", 2)
|
||||||
|
// if len(parts) < 2 {
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
// name := string(parts[0])
|
||||||
|
// metric, ok := Tracking[name]
|
||||||
|
// if !ok {
|
||||||
|
// // See if this is the keyspace line
|
||||||
|
// if strings.Contains(string(parts[1]), "keys=") {
|
||||||
|
// tags["database"] = name
|
||||||
|
// acc.Add("foo", 999, tags)
|
||||||
|
// }
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
|
||||||
metric, ok := Tracking[name]
|
// val := strings.TrimSpace(parts[1])
|
||||||
if !ok {
|
// ival, err := strconv.ParseUint(val, 10, 64)
|
||||||
continue
|
// if err == nil {
|
||||||
}
|
// acc.Add(metric, ival, tags)
|
||||||
|
// continue
|
||||||
|
// }
|
||||||
|
|
||||||
_, rPort, err := net.SplitHostPort(addr.Host)
|
// fval, err := strconv.ParseFloat(val, 64)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
rPort = defaultPort
|
// return err
|
||||||
}
|
// }
|
||||||
tags := map[string]string{"host": addr.String(), "port": rPort}
|
|
||||||
|
|
||||||
val := strings.TrimSpace(parts[1])
|
// acc.Add(metric, fval, tags)
|
||||||
|
// }
|
||||||
ival, err := strconv.ParseUint(val, 10, 64)
|
|
||||||
if err == nil {
|
|
||||||
acc.Add(metric, ival, tags)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fval, err := strconv.ParseFloat(val, 64)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
acc.Add(metric, fval, tags)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue