Convert boolean metric values to float in datadog output (#3804)
This commit is contained in:
parent
e988c83068
commit
b355536b20
|
@ -97,7 +97,7 @@ func (d *Datadog) Write(metrics []telegraf.Metric) error {
|
|||
metricCounter++
|
||||
}
|
||||
} else {
|
||||
log.Printf("I! unable to build Metric for %s, skipping\n", m.Name())
|
||||
log.Printf("I! unable to build Metric for %s due to error '%v', skipping\n", m.Name(), err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -150,7 +150,7 @@ func buildMetrics(m telegraf.Metric) (map[string]Point, error) {
|
|||
}
|
||||
var p Point
|
||||
if err := p.setValue(v); err != nil {
|
||||
return ms, fmt.Errorf("unable to extract value from Fields, %s", err.Error())
|
||||
return ms, fmt.Errorf("unable to extract value from Fields %v error %v", k, err.Error())
|
||||
}
|
||||
p[0] = float64(m.Time().Unix())
|
||||
ms[k] = p
|
||||
|
@ -189,6 +189,11 @@ func (p *Point) setValue(v interface{}) error {
|
|||
p[1] = float64(d)
|
||||
case float64:
|
||||
p[1] = float64(d)
|
||||
case bool:
|
||||
p[1] = float64(0)
|
||||
if d {
|
||||
p[1] = float64(1)
|
||||
}
|
||||
default:
|
||||
return fmt.Errorf("undeterminable type")
|
||||
}
|
||||
|
|
|
@ -152,6 +152,22 @@ func TestBuildPoint(t *testing.T) {
|
|||
},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
testutil.TestMetric(bool(true), "test7"),
|
||||
Point{
|
||||
float64(time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC).Unix()),
|
||||
1.0,
|
||||
},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
testutil.TestMetric(bool(false), "test8"),
|
||||
Point{
|
||||
float64(time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC).Unix()),
|
||||
0.0,
|
||||
},
|
||||
nil,
|
||||
},
|
||||
}
|
||||
for _, tt := range tagtests {
|
||||
pt, err := buildMetrics(tt.ptIn)
|
||||
|
|
Loading…
Reference in New Issue