diff --git a/pkg/services/live/telemetry/telegraf/convert.go b/pkg/services/live/telemetry/telegraf/convert.go index 399f62d8378..b445a444303 100644 --- a/pkg/services/live/telemetry/telegraf/convert.go +++ b/pkg/services/live/telemetry/telegraf/convert.go @@ -331,6 +331,15 @@ func (s *metricFrame) getFieldTypeAndValue(f *influx.Field) (data.FieldType, int if err != nil { return ft, nil, fmt.Errorf("value convert error: %v", err) } + if ft == data.FieldTypeNullableString { + // We observed commercial Telegraf extensions that send NaN values as strings. + // Native Telegraf influx serializer drops fields with NaN values. While this + // fixes an observed scenario we still need to think on a more generic approach + // how to handle occasionally missing fields (maybe on a UI, maybe on a backend side). + if stringVal, ok := v.(*string); ok && stringVal != nil && *stringVal == "NaN" { + return data.FieldTypeNullableFloat64, nil, nil + } + } return ft, v, nil } diff --git a/pkg/services/live/telemetry/telegraf/testdata/changing_types_NaN.golden.txt b/pkg/services/live/telemetry/telegraf/testdata/changing_types_NaN.golden.txt index 902f71bf9bf..d57055c92e7 100644 --- a/pkg/services/live/telemetry/telegraf/testdata/changing_types_NaN.golden.txt +++ b/pkg/services/live/telemetry/telegraf/testdata/changing_types_NaN.golden.txt @@ -1,19 +1,19 @@ 🌟 This was machine generated. Do not edit. 🌟 -Frame[0] +Frame[0] Name: system Dimensions: 5 Fields by 4 Rows -+----------------+-------------------------------+------------------+-----------------+-----------------+ -| Name: labels | Name: time | Name: sensor | Name: sensor2 | Name: state | -| Labels: | Labels: | Labels: | Labels: | Labels: | -| Type: []string | Type: []time.Time | Type: []*float64 | Type: []*string | Type: []*string | -+----------------+-------------------------------+------------------+-----------------+-----------------+ -| host=A | 2021-03-22 01:51:30 -0700 PDT | 0 | NaN | aaa | -| host=B | 2021-03-22 01:51:30 -0700 PDT | null | 0 | bbb | -| host=A | 2021-03-22 01:51:31 -0700 PDT | null | 0 | ccc | -| host=B | 2021-03-22 01:51:31 -0700 PDT | 0 | NaN | 1 | -+----------------+-------------------------------+------------------+-----------------+-----------------+ ++----------------+-------------------------------+------------------+------------------+-----------------+ +| Name: labels | Name: time | Name: sensor | Name: sensor2 | Name: state | +| Labels: | Labels: | Labels: | Labels: | Labels: | +| Type: []string | Type: []time.Time | Type: []*float64 | Type: []*float64 | Type: []*string | ++----------------+-------------------------------+------------------+------------------+-----------------+ +| host=A | 2021-03-22 11:51:30 +0300 MSK | 0 | null | aaa | +| host=B | 2021-03-22 11:51:30 +0300 MSK | null | 0 | bbb | +| host=A | 2021-03-22 11:51:31 +0300 MSK | null | 0 | ccc | +| host=B | 2021-03-22 11:51:31 +0300 MSK | 0 | null | 1 | ++----------------+-------------------------------+------------------+------------------+-----------------+ ====== TEST DATA RESPONSE (arrow base64) ====== -FRAME=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 +FRAME=QVJST1cxAAD/////mAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADs/f//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAAz+//8IAAAAEAAAAAYAAABzeXN0ZW0AAAQAAABuYW1lAAAAAAUAAACsAQAANAEAANQAAABgAAAABAAAAEr///8UAAAAPAAAADwAAAAAAAUBOAAAAAEAAAAEAAAAaP7//wgAAAAQAAAABQAAAHN0YXRlAAAABAAAAG5hbWUAAAAAAAAAAGD+//8FAAAAc3RhdGUAAACi////FAAAADwAAAA8AAAAAAADATwAAAABAAAABAAAAMD+//8IAAAAEAAAAAcAAABzZW5zb3IyAAQAAABuYW1lAAAAAAAAAAAy////AAACAAcAAABzZW5zb3IyAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAA8AAAAPAAAAAAAAwE8AAAAAQAAAAQAAAAw////CAAAABAAAAAGAAAAc2Vuc29yAAAEAAAAbmFtZQAAAAAAAAAAov///wAAAgAGAAAAc2Vuc29yAACe////FAAAADwAAABEAAAAAAAACkQAAAABAAAABAAAAIz///8IAAAAEAAAAAQAAAB0aW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAHRpbWUAABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEgAAAAAAAAFRAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAGAAAAbGFiZWxzAAAEAAAAbmFtZQAAAAAAAAAABAAEAAQAAAAGAAAAbGFiZWxzAAD/////aAEAABQAAAAAAAAADAAWABQAEwAMAAQADAAAAMgAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAANgAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAIAAAAAAAAABQAAAAAAAAAAgAAAAAAAAAWAAAAAAAAAAgAAAAAAAAAHgAAAAAAAAACAAAAAAAAACAAAAAAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAGAAAAAAAAAC4AAAAAAAAABAAAAAAAAAAAAAAAAUAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADAAAABIAAAAYAAAAAAAAAGhvc3Q9QWhvc3Q9Qmhvc3Q9QWhvc3Q9QgA0S9kLnm4WADRL2QuebhYA/uUUDJ5uFgD+5RQMnm4WCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAYAAAAJAAAACgAAAAAAAABhYWFiYmJjY2MxAAAAAAAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAMAAQAAAKgCAAAAAAAAcAEAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAVAAAAAIAAAAoAAAABAAAAOz9//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAADP7//wgAAAAQAAAABgAAAHN5c3RlbQAABAAAAG5hbWUAAAAABQAAAKwBAAA0AQAA1AAAAGAAAAAEAAAASv///xQAAAA8AAAAPAAAAAAABQE4AAAAAQAAAAQAAABo/v//CAAAABAAAAAFAAAAc3RhdGUAAAAEAAAAbmFtZQAAAAAAAAAAYP7//wUAAABzdGF0ZQAAAKL///8UAAAAPAAAADwAAAAAAAMBPAAAAAEAAAAEAAAAwP7//wgAAAAQAAAABwAAAHNlbnNvcjIABAAAAG5hbWUAAAAAAAAAADL///8AAAIABwAAAHNlbnNvcjIAAAASABgAFAATABIADAAAAAgABAASAAAAFAAAADwAAAA8AAAAAAADATwAAAABAAAABAAAADD///8IAAAAEAAAAAYAAABzZW5zb3IAAAQAAABuYW1lAAAAAAAAAACi////AAACAAYAAABzZW5zb3IAAJ7///8UAAAAPAAAAEQAAAAAAAAKRAAAAAEAAAAEAAAAjP///wgAAAAQAAAABAAAAHRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAdGltZQAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAASAAAAAAAAAVEAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAYAAABsYWJlbHMAAAQAAABuYW1lAAAAAAAAAAAEAAQABAAAAAYAAABsYWJlbHMAAMgCAABBUlJPVzE=