Fix conversion of unsigned ints in prometheus output (#3978)
This commit is contained in:
parent
cf49ed3b93
commit
7bfcd87e83
|
@ -352,6 +352,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||||
switch fv := fv.(type) {
|
switch fv := fv.(type) {
|
||||||
case int64:
|
case int64:
|
||||||
value = float64(fv)
|
value = float64(fv)
|
||||||
|
case uint64:
|
||||||
|
value = float64(fv)
|
||||||
case float64:
|
case float64:
|
||||||
value = fv
|
value = fv
|
||||||
default:
|
default:
|
||||||
|
@ -391,6 +393,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||||
switch fv := fv.(type) {
|
switch fv := fv.(type) {
|
||||||
case int64:
|
case int64:
|
||||||
value = float64(fv)
|
value = float64(fv)
|
||||||
|
case uint64:
|
||||||
|
value = float64(fv)
|
||||||
case float64:
|
case float64:
|
||||||
value = fv
|
value = fv
|
||||||
default:
|
default:
|
||||||
|
@ -427,6 +431,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||||
switch fv := fv.(type) {
|
switch fv := fv.(type) {
|
||||||
case int64:
|
case int64:
|
||||||
value = float64(fv)
|
value = float64(fv)
|
||||||
|
case uint64:
|
||||||
|
value = float64(fv)
|
||||||
case float64:
|
case float64:
|
||||||
value = fv
|
value = fv
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -151,6 +151,16 @@ func TestWrite_Counters(t *testing.T) {
|
||||||
metricName: "foo_other",
|
metricName: "foo_other",
|
||||||
valueType: telegraf.Counter,
|
valueType: telegraf.Counter,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "uint64 fields are output",
|
||||||
|
args: args{
|
||||||
|
measurement: "foo",
|
||||||
|
fields: map[string]interface{}{"value": uint64(42)},
|
||||||
|
valueType: telegraf.Counter,
|
||||||
|
},
|
||||||
|
metricName: "foo",
|
||||||
|
valueType: telegraf.Counter,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
@ -239,6 +249,16 @@ func TestWrite_Gauge(t *testing.T) {
|
||||||
metricName: "foo_other",
|
metricName: "foo_other",
|
||||||
valueType: telegraf.Gauge,
|
valueType: telegraf.Gauge,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "uint64 fields are output",
|
||||||
|
args: args{
|
||||||
|
measurement: "foo",
|
||||||
|
fields: map[string]interface{}{"value": uint64(42)},
|
||||||
|
valueType: telegraf.Counter,
|
||||||
|
},
|
||||||
|
metricName: "foo",
|
||||||
|
valueType: telegraf.Counter,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue