diff --git a/pkg/util/converter/prom.go b/pkg/util/converter/prom.go index 640dd148eac..7c238425b92 100644 --- a/pkg/util/converter/prom.go +++ b/pkg/util/converter/prom.go @@ -19,6 +19,9 @@ func logf(format string, a ...interface{}) { func ReadPrometheusStyleResult(iter *jsoniter.Iterator) *backend.DataResponse { var rsp *backend.DataResponse status := "unknown" + errorType := "" + err := "" + warnings := []data.Notice{} for l1Field := iter.ReadObject(); l1Field != ""; l1Field = iter.ReadObject() { switch l1Field { @@ -28,22 +31,58 @@ func ReadPrometheusStyleResult(iter *jsoniter.Iterator) *backend.DataResponse { case "data": rsp = readPrometheusData(iter) - // case "error": - // case "errorType": - // case "warnings": + case "error": + err = iter.ReadString() + + case "errorType": + errorType = iter.ReadString() + + case "warnings": + warnings = readWarnings(iter) + default: v := iter.Read() logf("[ROOT] TODO, support key: %s / %v\n", l1Field, v) } } - if status != "success" { - logf("ERROR: %s\n", status) + if status == "error" { + return &backend.DataResponse{ + Error: fmt.Errorf("%s: %s", errorType, err), + } + } + + if len(warnings) > 0 { + for _, frame := range rsp.Frames { + if frame.Meta == nil { + frame.Meta = &data.FrameMeta{} + } + frame.Meta.Notices = warnings + } } return rsp } +func readWarnings(iter *jsoniter.Iterator) []data.Notice { + warnings := []data.Notice{} + if iter.WhatIsNext() != jsoniter.ArrayValue { + return warnings + } + + for iter.ReadArray() { + if iter.WhatIsNext() == jsoniter.StringValue { + notice := data.Notice{ + Severity: data.NoticeSeverityWarning, + Text: iter.ReadString(), + } + warnings = append(warnings, notice) + } + } + + return warnings +} + func readPrometheusData(iter *jsoniter.Iterator) *backend.DataResponse { t := iter.WhatIsNext() if t == jsoniter.ArrayValue { diff --git a/pkg/util/converter/prom_test.go b/pkg/util/converter/prom_test.go index 04b71545364..10719e8f551 100644 --- a/pkg/util/converter/prom_test.go +++ b/pkg/util/converter/prom_test.go @@ -20,6 +20,8 @@ func TestReadPromFrames(t *testing.T) { "prom-matrix-with-nans", "prom-vector", "prom-series", + "prom-warnings", + "prom-error", "prom-exemplars", "loki-streams-a", "loki-streams-b", @@ -59,6 +61,11 @@ func TestReadPromFrames(t *testing.T) { require.NoError(t, err) } + // skip checking golden file for error response. it's not currently supported + if name == "prom-error" { + return + } + fpath = path.Join("testdata", name+"-golden.txt") err = experimental.CheckGoldenDataResponse(fpath, rsp, true) assert.NoError(t, err) diff --git a/pkg/util/converter/testdata/prom-error-frame.json b/pkg/util/converter/testdata/prom-error-frame.json new file mode 100644 index 00000000000..9fa71e9db64 --- /dev/null +++ b/pkg/util/converter/testdata/prom-error-frame.json @@ -0,0 +1,3 @@ +{ + "error": "bad_data: invalid parameter \"start\": cannot parse \"\" to a valid timestamp" +} \ No newline at end of file diff --git a/pkg/util/converter/testdata/prom-error-golden.txt b/pkg/util/converter/testdata/prom-error-golden.txt new file mode 100644 index 00000000000..c078e905cdf --- /dev/null +++ b/pkg/util/converter/testdata/prom-error-golden.txt @@ -0,0 +1,3 @@ + +ERROR: bad_data: invalid parameter "start": cannot parse "" to a valid timestamp====== TEST DATA RESPONSE (arrow base64) ====== +ERROR=bad_data: invalid parameter "start": cannot parse "" to a valid timestamp diff --git a/pkg/util/converter/testdata/prom-error.json b/pkg/util/converter/testdata/prom-error.json new file mode 100644 index 00000000000..ba451dc1b4e --- /dev/null +++ b/pkg/util/converter/testdata/prom-error.json @@ -0,0 +1,5 @@ +{ + "status": "error", + "errorType": "bad_data", + "error": "invalid parameter \"start\": cannot parse \"\" to a valid timestamp" +} \ No newline at end of file diff --git a/pkg/util/converter/testdata/prom-warnings-frame.json b/pkg/util/converter/testdata/prom-warnings-frame.json new file mode 100644 index 00000000000..6d28c2f2c85 --- /dev/null +++ b/pkg/util/converter/testdata/prom-warnings-frame.json @@ -0,0 +1,263 @@ +{ + "frames": [ + { + "schema": { + "meta": { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [ + { + "name": "Time", + "type": "time", + "typeInfo": { + "frame": "time.Time" + } + }, + { + "name": "up", + "type": "number", + "typeInfo": { + "frame": "float64" + }, + "labels": { + "instance": "localhost:9090", + "job": "prometheus" + } + } + ] + }, + "data": { + "values": [ + [ + 1435781451781 + ], + [ + 1 + ] + ] + } + }, + { + "schema": { + "meta": { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [ + { + "name": "Time", + "type": "time", + "typeInfo": { + "frame": "time.Time" + } + }, + { + "name": "up", + "type": "number", + "typeInfo": { + "frame": "float64" + }, + "labels": { + "instance": "localhost:9100", + "job": "node" + } + } + ] + }, + "data": { + "values": [ + [ + 1435781451781 + ], + [ + 0 + ] + ] + } + }, + { + "schema": { + "meta": { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [ + { + "name": "Time", + "type": "time", + "typeInfo": { + "frame": "time.Time" + } + }, + { + "name": "Value", + "type": "number", + "typeInfo": { + "frame": "float64" + }, + "labels": { + "level": "error", + "location": "moon" + } + } + ] + }, + "data": { + "values": [ + [ + 1645029699000 + ], + [ + null + ] + ], + "entities": [ + null, + { + "Inf": [ + 0 + ] + } + ] + } + }, + { + "schema": { + "meta": { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [ + { + "name": "Time", + "type": "time", + "typeInfo": { + "frame": "time.Time" + } + }, + { + "name": "Value", + "type": "number", + "typeInfo": { + "frame": "float64" + }, + "labels": { + "level": "info", + "location": "moon" + } + } + ] + }, + "data": { + "values": [ + [ + 1645029699000 + ], + [ + null + ] + ], + "entities": [ + null, + { + "NegInf": [ + 0 + ] + } + ] + } + }, + { + "schema": { + "meta": { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] + }, + "fields": [ + { + "name": "Time", + "type": "time", + "typeInfo": { + "frame": "time.Time" + } + }, + { + "name": "Value", + "type": "number", + "typeInfo": { + "frame": "float64" + }, + "labels": { + "level": "debug", + "location": "moon" + } + } + ] + }, + "data": { + "values": [ + [ + 1645029699000 + ], + [ + null + ] + ], + "entities": [ + null, + { + "NaN": [ + 0 + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/pkg/util/converter/testdata/prom-warnings-golden.txt b/pkg/util/converter/testdata/prom-warnings-golden.txt new file mode 100644 index 00000000000..83c40ec9fcd --- /dev/null +++ b/pkg/util/converter/testdata/prom-warnings-golden.txt @@ -0,0 +1,132 @@ +🌟 This was machine generated. Do not edit. 🌟 + +Frame[0] { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] +} +Name: +Dimensions: 2 Fields by 1 Rows ++-----------------------------------+-------------------------------------------------+ +| Name: Time | Name: up | +| Labels: | Labels: instance=localhost:9090, job=prometheus | +| Type: []time.Time | Type: []float64 | ++-----------------------------------+-------------------------------------------------+ +| 2015-07-01 20:10:51.781 +0000 UTC | 1 | ++-----------------------------------+-------------------------------------------------+ + + + +Frame[1] { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] +} +Name: +Dimensions: 2 Fields by 1 Rows ++-----------------------------------+-------------------------------------------+ +| Name: Time | Name: up | +| Labels: | Labels: instance=localhost:9100, job=node | +| Type: []time.Time | Type: []float64 | ++-----------------------------------+-------------------------------------------+ +| 2015-07-01 20:10:51.781 +0000 UTC | 0 | ++-----------------------------------+-------------------------------------------+ + + + +Frame[2] { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] +} +Name: +Dimensions: 2 Fields by 1 Rows ++-------------------------------+------------------------------------+ +| Name: Time | Name: Value | +| Labels: | Labels: level=error, location=moon | +| Type: []time.Time | Type: []float64 | ++-------------------------------+------------------------------------+ +| 2022-02-16 16:41:39 +0000 UTC | +Inf | ++-------------------------------+------------------------------------+ + + + +Frame[3] { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] +} +Name: +Dimensions: 2 Fields by 1 Rows ++-------------------------------+-----------------------------------+ +| Name: Time | Name: Value | +| Labels: | Labels: level=info, location=moon | +| Type: []time.Time | Type: []float64 | ++-------------------------------+-----------------------------------+ +| 2022-02-16 16:41:39 +0000 UTC | -Inf | ++-------------------------------+-----------------------------------+ + + + +Frame[4] { + "type": "timeseries-many", + "notices": [ + { + "severity": "warning", + "text": "warning 1" + }, + { + "severity": "warning", + "text": "warning 2" + } + ] +} +Name: +Dimensions: 2 Fields by 1 Rows ++-------------------------------+------------------------------------+ +| Name: Time | Name: Value | +| Labels: | Labels: level=debug, location=moon | +| Type: []time.Time | Type: []float64 | ++-------------------------------+------------------------------------+ +| 2022-02-16 16:41:39 +0000 UTC | NaN | ++-------------------------------+------------------------------------+ + + +====== TEST DATA RESPONSE (arrow base64) ====== +FRAME=QVJST1cxAAD/////UAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAAQP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABg/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAID+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAAMQAAAAEAAAAVv///xQAAACMAAAAjAAAAAAAAAOMAAAAAgAAACgAAAAEAAAASP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABo////CAAAADwAAAAwAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkwIiwiam9iIjoicHJvbWV0aGV1cyJ9AAAAAAYAAABsYWJlbHMAAAAAAACK////AAACAAIAAAB1cAAAAAASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMEAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABAS4CQn+vsEwAAAAAAAPA/EAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAQAAQAAAGACAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAA7AAAAAMAAABMAAAAKAAAAAQAAABA/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAGD+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAAgP7//wgAAACEAAAAegAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSIsIm5vdGljZXMiOlt7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDEifSx7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDIifV19AAAEAAAAbWV0YQAAAAACAAAAxAAAAAQAAABW////FAAAAIwAAACMAAAAAAAAA4wAAAACAAAAKAAAAAQAAABI////CAAAAAwAAAACAAAAdXAAAAQAAABuYW1lAAAAAGj///8IAAAAPAAAADAAAAB7Imluc3RhbmNlIjoibG9jYWxob3N0OjkwOTAiLCJqb2IiOiJwcm9tZXRoZXVzIn0AAAAABgAAAGxhYmVscwAAAAAAAIr///8AAAIAAgAAAHVwAAAAABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAIACAABBUlJPVzE= +FRAME=QVJST1cxAAD/////SAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAASP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABo/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAIj+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAALwAAAAEAAAAXv///xQAAACEAAAAhAAAAAAAAAOEAAAAAgAAACgAAAAEAAAAUP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABw////CAAAADQAAAAqAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MTAwIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAQEuAkJ/r7BMAAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA8AAAAAAAEAAEAAABYAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAASP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABo/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAIj+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAALwAAAAEAAAAXv///xQAAACEAAAAhAAAAAAAAAOEAAAAAgAAACgAAAAEAAAAUP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABw////CAAAADQAAAAqAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MTAwIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAAeAIAAEFSUk9XMQ== +FRAME=QVJST1cxAAD/////SAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAATP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAIz+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIwAAAHsibGV2ZWwiOiJlcnJvciIsImxvY2F0aW9uIjoibW9vbiJ9AAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYAAAAAAADwfxAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAABYAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAA7AAAAAMAAABMAAAAKAAAAAQAAABM/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAGz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAAjP7//wgAAACEAAAAegAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSIsIm5vdGljZXMiOlt7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDEifSx7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDIifV19AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAjAAAAeyJsZXZlbCI6ImVycm9yIiwibG9jYXRpb24iOiJtb29uIn0ABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAHACAABBUlJPVzE= +FRAME=QVJST1cxAAD/////SAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAATP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAIz+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIgAAAHsibGV2ZWwiOiJpbmZvIiwibG9jYXRpb24iOiJtb29uIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYAAAAAAADw/xAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAABYAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAA7AAAAAMAAABMAAAAKAAAAAQAAABM/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAGz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAAjP7//wgAAACEAAAAegAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSIsIm5vdGljZXMiOlt7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDEifSx7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDIifV19AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAiAAAAeyJsZXZlbCI6ImluZm8iLCJsb2NhdGlvbiI6Im1vb24ifQAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAHACAABBUlJPVzE= +FRAME=QVJST1cxAAD/////SAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAATP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAIz+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIwAAAHsibGV2ZWwiOiJkZWJ1ZyIsImxvY2F0aW9uIjoibW9vbiJ9AAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYBAAAAAAD4fxAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAABYAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAA7AAAAAMAAABMAAAAKAAAAAQAAABM/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAGz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAAjP7//wgAAACEAAAAegAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSIsIm5vdGljZXMiOlt7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDEifSx7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDIifV19AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAjAAAAeyJsZXZlbCI6ImRlYnVnIiwibG9jYXRpb24iOiJtb29uIn0ABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAHACAABBUlJPVzE= diff --git a/pkg/util/converter/testdata/prom-warnings.json b/pkg/util/converter/testdata/prom-warnings.json new file mode 100644 index 00000000000..28c9128b588 --- /dev/null +++ b/pkg/util/converter/testdata/prom-warnings.json @@ -0,0 +1,37 @@ +{ + "status" : "success", + "data" : { + "resultType" : "vector", + "result" : [ + { + "metric" : { + "__name__" : "up", + "job" : "prometheus", + "instance" : "localhost:9090" + }, + "value": [ 1435781451.781, "1" ] + }, + { + "metric" : { + "__name__" : "up", + "job" : "node", + "instance" : "localhost:9100" + }, + "value" : [ 1435781451.781, "0" ] + }, + { + "metric": { "level": "error", "location": "moon"}, + "value": [1645029699, "+Inf"] + }, + { + "metric": { "level": "info", "location": "moon" }, + "value": [1645029699, "-Inf"] + }, + { + "metric": { "level": "debug", "location": "moon" }, + "value": [1645029699, "NaN"] + } + ] + }, + "warnings" : ["warning 1", "warning 2"] + }