Allow floats in valuecounter aggregator (#5168)
This commit is contained in:
parent
c72d8a1663
commit
dbe6f594a9
|
@ -11,8 +11,9 @@ configuration directive. When no `fields` is provided the plugin will not count
|
|||
any fields. The results are emitted in fields in the format:
|
||||
`originalfieldname_fieldvalue = count`.
|
||||
|
||||
Valuecounter only works on fields of the type int, bool or string. Float fields
|
||||
are being dropped to prevent the creating of too many fields.
|
||||
Counting fields with a high number of potential values may produce significant
|
||||
amounts of new fields and memory usage, take care to only count fields with a
|
||||
limited set of values.
|
||||
|
||||
### Configuration:
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package valuecounter
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/plugins/aggregators"
|
||||
|
@ -68,14 +67,6 @@ func (vc *ValueCounter) Add(in telegraf.Metric) {
|
|||
for fk, fv := range in.Fields() {
|
||||
for _, cf := range vc.Fields {
|
||||
if fk == cf {
|
||||
// Do not process float types to prevent memory from blowing up
|
||||
switch fv.(type) {
|
||||
default:
|
||||
log.Printf("I! Valuecounter: Unsupported field type. " +
|
||||
"Must be an int, string or bool. Ignoring.")
|
||||
continue
|
||||
case uint64, int64, string, bool:
|
||||
}
|
||||
fn := fmt.Sprintf("%v_%v", fk, fv)
|
||||
vc.cache[id].fieldCount[fn]++
|
||||
}
|
||||
|
|
|
@ -22,9 +22,8 @@ func NewTestValueCounter(fields []string) telegraf.Aggregator {
|
|||
var m1, _ = metric.New("m1",
|
||||
map[string]string{"foo": "bar"},
|
||||
map[string]interface{}{
|
||||
"status": 200,
|
||||
"somefield": 20.1,
|
||||
"foobar": "bar",
|
||||
"status": 200,
|
||||
"foobar": "bar",
|
||||
},
|
||||
time.Now(),
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue