parent
e097ae9632
commit
e2f9617228
|
@ -18,6 +18,7 @@
|
||||||
- [#1913](https://github.com/influxdata/telegraf/pull/1913): OpenTSDB basic auth support.
|
- [#1913](https://github.com/influxdata/telegraf/pull/1913): OpenTSDB basic auth support.
|
||||||
- [#1908](https://github.com/influxdata/telegraf/pull/1908): RabbitMQ Connection metrics.
|
- [#1908](https://github.com/influxdata/telegraf/pull/1908): RabbitMQ Connection metrics.
|
||||||
- [#1937](https://github.com/influxdata/telegraf/pull/1937): HAProxy session limit metric.
|
- [#1937](https://github.com/influxdata/telegraf/pull/1937): HAProxy session limit metric.
|
||||||
|
- [#2068](https://github.com/influxdata/telegraf/issues/2068): Accept strings for StatsD sets.
|
||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ type metric struct {
|
||||||
hash string
|
hash string
|
||||||
intvalue int64
|
intvalue int64
|
||||||
floatvalue float64
|
floatvalue float64
|
||||||
|
strvalue string
|
||||||
mtype string
|
mtype string
|
||||||
additive bool
|
additive bool
|
||||||
samplerate float64
|
samplerate float64
|
||||||
|
@ -106,7 +107,7 @@ type metric struct {
|
||||||
|
|
||||||
type cachedset struct {
|
type cachedset struct {
|
||||||
name string
|
name string
|
||||||
fields map[string]map[int64]bool
|
fields map[string]map[string]bool
|
||||||
tags map[string]string
|
tags map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,7 +436,7 @@ func (s *Statsd) parseStatsdLine(line string) error {
|
||||||
return errors.New("Error Parsing statsd line")
|
return errors.New("Error Parsing statsd line")
|
||||||
}
|
}
|
||||||
m.floatvalue = v
|
m.floatvalue = v
|
||||||
case "c", "s":
|
case "c":
|
||||||
var v int64
|
var v int64
|
||||||
v, err := strconv.ParseInt(pipesplit[0], 10, 64)
|
v, err := strconv.ParseInt(pipesplit[0], 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -451,6 +452,8 @@ func (s *Statsd) parseStatsdLine(line string) error {
|
||||||
v = int64(float64(v) / m.samplerate)
|
v = int64(float64(v) / m.samplerate)
|
||||||
}
|
}
|
||||||
m.intvalue = v
|
m.intvalue = v
|
||||||
|
case "s":
|
||||||
|
m.strvalue = pipesplit[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the name & tags from bucket
|
// Parse the name & tags from bucket
|
||||||
|
@ -625,16 +628,16 @@ func (s *Statsd) aggregate(m metric) {
|
||||||
if !ok {
|
if !ok {
|
||||||
s.sets[m.hash] = cachedset{
|
s.sets[m.hash] = cachedset{
|
||||||
name: m.name,
|
name: m.name,
|
||||||
fields: make(map[string]map[int64]bool),
|
fields: make(map[string]map[string]bool),
|
||||||
tags: m.tags,
|
tags: m.tags,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// check if the field exists
|
// check if the field exists
|
||||||
_, ok = s.sets[m.hash].fields[m.field]
|
_, ok = s.sets[m.hash].fields[m.field]
|
||||||
if !ok {
|
if !ok {
|
||||||
s.sets[m.hash].fields[m.field] = make(map[int64]bool)
|
s.sets[m.hash].fields[m.field] = make(map[string]bool)
|
||||||
}
|
}
|
||||||
s.sets[m.hash].fields[m.field][m.intvalue] = true
|
s.sets[m.hash].fields[m.field][m.strvalue] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,9 @@ func TestParse_Sets(t *testing.T) {
|
||||||
"scientific.notation.sets:4.696E+5|s",
|
"scientific.notation.sets:4.696E+5|s",
|
||||||
"scientific.notation.sets:4.696E+5|s",
|
"scientific.notation.sets:4.696E+5|s",
|
||||||
"scientific.notation.sets:4.697E+5|s",
|
"scientific.notation.sets:4.697E+5|s",
|
||||||
|
"string.sets:foobar|s",
|
||||||
|
"string.sets:foobar|s",
|
||||||
|
"string.sets:bar|s",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, line := range valid_lines {
|
for _, line := range valid_lines {
|
||||||
|
@ -164,6 +167,10 @@ func TestParse_Sets(t *testing.T) {
|
||||||
"oneuser_id",
|
"oneuser_id",
|
||||||
1,
|
1,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"string_sets",
|
||||||
|
2,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range validations {
|
for _, test := range validations {
|
||||||
|
|
Loading…
Reference in New Issue