Loki: backend: use streaming JSON parser, try2 (#48752)

* converter: remove __name__ customization because Loki does not do that

Loki does not handle __name__ in a special way.
for Prometheus, the caller can implement the formatting
by themselves

* converter: change labels-formatting

the labels.String() method does not handle strange values well

* loki: backend: use streaming-json parser

* more idiomatic code

Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>

* simpler row-length check

* simpler code

* fixed converter/prom tests

Co-authored-by: Todd Treece <360020+toddtreece@users.noreply.github.com>
This commit is contained in:
Gábor Farkas 2022-05-05 13:09:01 +02:00 committed by GitHub
parent 8ed3fb1f2d
commit da74dba7c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 368 additions and 570 deletions

View File

@ -10,8 +10,9 @@ import (
"net/url"
"strconv"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/loki/pkg/loghttp"
"github.com/grafana/grafana/pkg/util/converter"
jsoniter "github.com/json-iterator/go"
)
@ -137,7 +138,7 @@ func makeLokiError(body io.ReadCloser) error {
return fmt.Errorf("%v", errorMessage)
}
func (api *LokiAPI) DataQuery(ctx context.Context, query lokiQuery) (*loghttp.QueryResponse, error) {
func (api *LokiAPI) DataQuery(ctx context.Context, query lokiQuery) (data.Frames, error) {
req, err := makeDataRequest(ctx, api.url, query, api.oauthToken)
if err != nil {
return nil, err
@ -158,13 +159,14 @@ func (api *LokiAPI) DataQuery(ctx context.Context, query lokiQuery) (*loghttp.Qu
return nil, makeLokiError(resp.Body)
}
var response loghttp.QueryResponse
err = jsoniter.NewDecoder(resp.Body).Decode(&response)
if err != nil {
return nil, err
iter := jsoniter.Parse(jsoniter.ConfigDefault, resp.Body, 1024)
res := converter.ReadPrometheusStyleResult(iter)
if res.Error != nil {
return nil, res.Error
}
return &response, nil
return res.Frames, nil
}
func makeRawRequest(ctx context.Context, lokiDsUrl string, resourceURL string, oauthToken string) (*http.Request, error) {

View File

@ -6,7 +6,6 @@ import (
"hash/fnv"
"sort"
"strings"
"time"
"github.com/grafana/grafana-plugin-sdk-go/data"
)
@ -57,6 +56,9 @@ func adjustMetricFrame(frame *data.Frame, query *lokiQuery) error {
frame.Meta = &data.FrameMeta{}
}
frame.Meta.Stats = parseStats(frame.Meta.Custom)
frame.Meta.Custom = nil
if isMetricRange {
frame.Meta.ExecutedQueryString = "Expr: " + query.Expr + "\n" + "Step: " + query.Step.String()
} else {
@ -81,53 +83,55 @@ func adjustMetricFrame(frame *data.Frame, query *lokiQuery) error {
func adjustLogsFrame(frame *data.Frame, query *lokiQuery) error {
// we check if the fields are of correct type and length
fields := frame.Fields
if len(fields) != 3 {
if len(fields) != 4 {
return fmt.Errorf("invalid fields in logs frame")
}
labelsField := fields[0]
timeField := fields[1]
lineField := fields[2]
stringTimeField := fields[3]
if (timeField.Type() != data.FieldTypeTime) || (lineField.Type() != data.FieldTypeString) || (labelsField.Type() != data.FieldTypeJSON) {
if (timeField.Type() != data.FieldTypeTime) || (lineField.Type() != data.FieldTypeString) || (labelsField.Type() != data.FieldTypeJSON) || (stringTimeField.Type() != data.FieldTypeString) {
return fmt.Errorf("invalid fields in logs frame")
}
if (timeField.Len() != lineField.Len()) || (timeField.Len() != labelsField.Len()) {
if (timeField.Len() != lineField.Len()) || (timeField.Len() != labelsField.Len()) || (timeField.Len() != stringTimeField.Len()) {
return fmt.Errorf("invalid fields in logs frame")
}
// this returns an error when the length of fields do not match
_, err := frame.RowLen()
if err != nil {
return err
}
labelsField.Name = "labels"
stringTimeField.Name = "tsNs"
if frame.Meta == nil {
frame.Meta = &data.FrameMeta{}
}
frame.Meta.Stats = parseStats(frame.Meta.Custom)
frame.Meta.Custom = nil
frame.Meta.ExecutedQueryString = "Expr: " + query.Expr
// we need to send to the browser the nanosecond-precision timestamp too.
// usually timestamps become javascript-date-objects in the browser automatically, which only
// have millisecond-precision.
// so we send a separate timestamp-as-string field too.
stringTimeField := makeStringTimeField(timeField)
// so we send a separate timestamp-as-string field too. it is provided by the
// loki-json-parser-code
idField, err := makeIdField(stringTimeField, lineField, labelsField, frame.RefID)
if err != nil {
return err
}
frame.Fields = append(frame.Fields, stringTimeField, idField)
frame.Fields = append(frame.Fields, idField)
return nil
}
func makeStringTimeField(timeField *data.Field) *data.Field {
length := timeField.Len()
stringTimestamps := make([]string, length)
for i := 0; i < length; i++ {
nsNumber := timeField.At(i).(time.Time).UnixNano()
stringTimestamps[i] = fmt.Sprintf("%d", nsNumber)
}
return data.NewField("tsNs", timeField.Labels.Copy(), stringTimestamps)
}
func calculateCheckSum(time string, line string, labels []byte) (string, error) {
input := []byte(line + "_")
input = append(input, labels...)
@ -211,3 +215,75 @@ func getFrameLabels(frame *data.Frame) map[string]string {
return labels
}
func parseStats(frameMetaCustom interface{}) []data.QueryStat {
customMap, ok := frameMetaCustom.(map[string]interface{})
if !ok {
return nil
}
rawStats, ok := customMap["stats"].(map[string]interface{})
if !ok {
return nil
}
var stats []data.QueryStat
summary, ok := rawStats["summary"].(map[string]interface{})
if ok {
stats = append(stats,
makeStat("Summary: bytes processed per second", summary["bytesProcessedPerSecond"], "Bps"),
makeStat("Summary: lines processed per second", summary["linesProcessedPerSecond"], ""),
makeStat("Summary: total bytes processed", summary["totalBytesProcessed"], "decbytes"),
makeStat("Summary: total lines processed", summary["totalLinesProcessed"], ""),
makeStat("Summary: exec time", summary["execTime"], "s"))
}
store, ok := rawStats["store"].(map[string]interface{})
if ok {
stats = append(stats,
makeStat("Store: total chunks ref", store["totalChunksRef"], ""),
makeStat("Store: total chunks downloaded", store["totalChunksDownloaded"], ""),
makeStat("Store: chunks download time", store["chunksDownloadTime"], "s"),
makeStat("Store: head chunk bytes", store["headChunkBytes"], "decbytes"),
makeStat("Store: head chunk lines", store["headChunkLines"], ""),
makeStat("Store: decompressed bytes", store["decompressedBytes"], "decbytes"),
makeStat("Store: decompressed lines", store["decompressedLines"], ""),
makeStat("Store: compressed bytes", store["compressedBytes"], "decbytes"),
makeStat("Store: total duplicates", store["totalDuplicates"], ""))
}
ingester, ok := rawStats["ingester"].(map[string]interface{})
if ok {
stats = append(stats,
makeStat("Ingester: total reached", ingester["totalReached"], ""),
makeStat("Ingester: total chunks matched", ingester["totalChunksMatched"], ""),
makeStat("Ingester: total batches", ingester["totalBatches"], ""),
makeStat("Ingester: total lines sent", ingester["totalLinesSent"], ""),
makeStat("Ingester: head chunk bytes", ingester["headChunkBytes"], "decbytes"),
makeStat("Ingester: head chunk lines", ingester["headChunkLines"], ""),
makeStat("Ingester: decompressed bytes", ingester["decompressedBytes"], "decbytes"),
makeStat("Ingester: decompressed lines", ingester["decompressedLines"], ""),
makeStat("Ingester: compressed bytes", ingester["compressedBytes"], "decbytes"),
makeStat("Ingester: total duplicates", ingester["totalDuplicates"], ""))
}
return stats
}
func makeStat(name string, interfaceValue interface{}, unit string) data.QueryStat {
var value float64
switch v := interfaceValue.(type) {
case float64:
value = v
case int:
value = float64(v)
}
return data.QueryStat{
FieldConfig: data.FieldConfig{
DisplayName: name,
Unit: unit,
},
Value: value,
}
}

View File

@ -2,6 +2,7 @@ package loki
import (
"encoding/json"
"strconv"
"testing"
"time"
@ -39,20 +40,30 @@ func TestFormatName(t *testing.T) {
func TestAdjustFrame(t *testing.T) {
t.Run("logs-frame metadata should be set correctly", func(t *testing.T) {
time1 := time.Date(2022, 1, 2, 3, 4, 5, 6, time.UTC)
time2 := time.Date(2022, 1, 2, 3, 5, 5, 6, time.UTC)
time3 := time.Date(2022, 1, 2, 3, 5, 5, 6, time.UTC)
time4 := time.Date(2022, 1, 2, 3, 6, 5, 6, time.UTC)
timeNs1 := strconv.FormatInt(time1.UnixNano(), 10)
timeNs2 := strconv.FormatInt(time2.UnixNano(), 10)
timeNs3 := strconv.FormatInt(time3.UnixNano(), 10)
timeNs4 := strconv.FormatInt(time4.UnixNano(), 10)
frame := data.NewFrame("",
data.NewField("labels", nil, []json.RawMessage{
data.NewField("__labels", nil, []json.RawMessage{
json.RawMessage(`{"level":"info"}`),
json.RawMessage(`{"level":"error"}`),
json.RawMessage(`{"level":"error"}`),
json.RawMessage(`{"level":"info"}`),
}),
data.NewField("time", nil, []time.Time{
time.Date(2022, 1, 2, 3, 4, 5, 6, time.UTC),
time.Date(2022, 1, 2, 3, 5, 5, 6, time.UTC),
time.Date(2022, 1, 2, 3, 5, 5, 6, time.UTC),
time.Date(2022, 1, 2, 3, 6, 5, 6, time.UTC),
data.NewField("Time", nil, []time.Time{
time1, time2, time3, time4,
}),
data.NewField("Line", nil, []string{"line1", "line2", "line2", "line3"}),
data.NewField("TS", nil, []string{
timeNs1, timeNs2, timeNs3, timeNs4,
}),
data.NewField("line", nil, []string{"line1", "line2", "line2", "line3"}),
)
frame.RefID = "A"
@ -68,14 +79,6 @@ func TestAdjustFrame(t *testing.T) {
fields := frame.Fields
require.Equal(t, 5, len(fields))
tsNsField := fields[3]
require.Equal(t, "tsNs", tsNsField.Name)
require.Equal(t, data.FieldTypeString, tsNsField.Type())
require.Equal(t, 4, tsNsField.Len())
require.Equal(t, "1641092645000000006", tsNsField.At(0))
require.Equal(t, "1641092705000000006", tsNsField.At(1))
require.Equal(t, "1641092705000000006", tsNsField.At(2))
require.Equal(t, "1641092765000000006", tsNsField.At(3))
idField := fields[4]
require.Equal(t, "id", idField.Name)
@ -136,4 +139,85 @@ func TestAdjustFrame(t *testing.T) {
require.NotNil(t, timeFieldConfig)
require.Equal(t, float64(42000), timeFieldConfig.Interval)
})
t.Run("should parse response stats", func(t *testing.T) {
stats := map[string]interface{}{
"summary": map[string]interface{}{
"bytesProcessedPerSecond": 1,
"linesProcessedPerSecond": 2,
"totalBytesProcessed": 3,
"totalLinesProcessed": 4,
"execTime": 5.5,
},
"store": map[string]interface{}{
"totalChunksRef": 6,
"totalChunksDownloaded": 7,
"chunksDownloadTime": 8.8,
"headChunkBytes": 9,
"headChunkLines": 10,
"decompressedBytes": 11,
"decompressedLines": 12,
"compressedBytes": 13,
"totalDuplicates": 14,
},
"ingester": map[string]interface{}{
"totalReached": 15,
"totalChunksMatched": 16,
"totalBatches": 17,
"totalLinesSent": 18,
"headChunkBytes": 19,
"headChunkLines": 20,
"decompressedBytes": 21,
"decompressedLines": 22,
"compressedBytes": 23,
"totalDuplicates": 24,
},
}
meta := data.FrameMeta{
Custom: map[string]interface{}{
"stats": stats,
},
}
expected := []data.QueryStat{
{FieldConfig: data.FieldConfig{DisplayName: "Summary: bytes processed per second", Unit: "Bps"}, Value: 1},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: lines processed per second", Unit: ""}, Value: 2},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: total bytes processed", Unit: "decbytes"}, Value: 3},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: total lines processed", Unit: ""}, Value: 4},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: exec time", Unit: "s"}, Value: 5.5},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total chunks ref", Unit: ""}, Value: 6},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total chunks downloaded", Unit: ""}, Value: 7},
{FieldConfig: data.FieldConfig{DisplayName: "Store: chunks download time", Unit: "s"}, Value: 8.8},
{FieldConfig: data.FieldConfig{DisplayName: "Store: head chunk bytes", Unit: "decbytes"}, Value: 9},
{FieldConfig: data.FieldConfig{DisplayName: "Store: head chunk lines", Unit: ""}, Value: 10},
{FieldConfig: data.FieldConfig{DisplayName: "Store: decompressed bytes", Unit: "decbytes"}, Value: 11},
{FieldConfig: data.FieldConfig{DisplayName: "Store: decompressed lines", Unit: ""}, Value: 12},
{FieldConfig: data.FieldConfig{DisplayName: "Store: compressed bytes", Unit: "decbytes"}, Value: 13},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total duplicates", Unit: ""}, Value: 14},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total reached", Unit: ""}, Value: 15},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total chunks matched", Unit: ""}, Value: 16},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total batches", Unit: ""}, Value: 17},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total lines sent", Unit: ""}, Value: 18},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: head chunk bytes", Unit: "decbytes"}, Value: 19},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: head chunk lines", Unit: ""}, Value: 20},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: decompressed bytes", Unit: "decbytes"}, Value: 21},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: decompressed lines", Unit: ""}, Value: 22},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: compressed bytes", Unit: "decbytes"}, Value: 23},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total duplicates", Unit: ""}, Value: 24},
}
result := parseStats(meta.Custom)
// NOTE: i compare it item-by-item otherwise the test-fail-error-message is very hard to read
require.Len(t, result, len(expected))
for i := 0; i < len(result); i++ {
require.Equal(t, expected[i], result[i])
}
})
}

View File

@ -209,12 +209,21 @@ func queryData(ctx context.Context, req *backend.QueryDataRequest, dsInfo *datas
// we extracted this part of the functionality to make it easy to unit-test it
func runQuery(ctx context.Context, api *LokiAPI, query *lokiQuery) (data.Frames, error) {
value, err := api.DataQuery(ctx, *query)
frames, err := api.DataQuery(ctx, *query)
if err != nil {
return data.Frames{}, err
}
return parseResponse(value, query)
for _, frame := range frames {
if err = adjustFrame(frame, query); err != nil {
return data.Frames{}, err
}
if err != nil {
return data.Frames{}, err
}
}
return frames, nil
}
func (s *Service) getDSInfo(pluginCtx backend.PluginContext) (*datasourceInfo, error) {

View File

@ -1,206 +0,0 @@
package loki
import (
"encoding/json"
"fmt"
"time"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/loki/pkg/loghttp"
"github.com/grafana/loki/pkg/logqlmodel/stats"
jsoniter "github.com/json-iterator/go"
)
func parseResponse(value *loghttp.QueryResponse, query *lokiQuery) (data.Frames, error) {
frames, err := lokiResponseToDataFrames(value, query)
if err != nil {
return nil, err
}
for _, frame := range frames {
err = adjustFrame(frame, query)
if err != nil {
return nil, err
}
}
return frames, nil
}
func lokiResponseToDataFrames(value *loghttp.QueryResponse, query *lokiQuery) (data.Frames, error) {
stats := parseStats(value.Data.Statistics)
switch res := value.Data.Result.(type) {
case loghttp.Matrix:
return lokiMatrixToDataFrames(res, query, stats), nil
case loghttp.Vector:
return lokiVectorToDataFrames(res, query, stats), nil
case loghttp.Streams:
return lokiStreamsToDataFrames(res, query, stats)
default:
return nil, fmt.Errorf("resultType %T not supported{", res)
}
}
func lokiMatrixToDataFrames(matrix loghttp.Matrix, query *lokiQuery, stats []data.QueryStat) data.Frames {
frames := data.Frames{}
for i, v := range matrix {
tags := make(map[string]string, len(v.Metric))
timeVector := make([]time.Time, 0, len(v.Values))
values := make([]float64, 0, len(v.Values))
for k, v := range v.Metric {
tags[string(k)] = string(v)
}
for _, k := range v.Values {
timeVector = append(timeVector, k.Timestamp.Time().UTC())
values = append(values, float64(k.Value))
}
timeField := data.NewField(data.TimeSeriesTimeFieldName, nil, timeVector)
valueField := data.NewField(data.TimeSeriesValueFieldName, tags, values)
frame := data.NewFrame("", timeField, valueField)
frame.SetMeta(&data.FrameMeta{
Type: data.FrameTypeTimeSeriesMany,
})
// only add the stats to the first dataframe
if i == 0 {
frame.Meta.Stats = stats
}
frames = append(frames, frame)
}
return frames
}
func lokiVectorToDataFrames(vector loghttp.Vector, query *lokiQuery, stats []data.QueryStat) data.Frames {
frames := data.Frames{}
for i, v := range vector {
tags := make(map[string]string, len(v.Metric))
timeVector := []time.Time{v.Timestamp.Time().UTC()}
values := []float64{float64(v.Value)}
for k, v := range v.Metric {
tags[string(k)] = string(v)
}
timeField := data.NewField(data.TimeSeriesTimeFieldName, nil, timeVector)
valueField := data.NewField(data.TimeSeriesValueFieldName, tags, values)
frame := data.NewFrame("", timeField, valueField)
frame.SetMeta(&data.FrameMeta{
Type: data.FrameTypeTimeSeriesMany,
})
// only add the stats to the first dataframe
if i == 0 {
frame.Meta.Stats = stats
}
frames = append(frames, frame)
}
return frames
}
// we serialize the labels as an ordered list of pairs
func labelsToRawJson(labels data.Labels) (json.RawMessage, error) {
// data.Labels when converted to JSON keep the fields sorted
bytes, err := jsoniter.Marshal(labels)
if err != nil {
return nil, err
}
return json.RawMessage(bytes), nil
}
func lokiStreamsToDataFrames(streams loghttp.Streams, query *lokiQuery, stats []data.QueryStat) (data.Frames, error) {
var timeVector []time.Time
var values []string
var labelsVector []json.RawMessage
for _, v := range streams {
labelsJson, err := labelsToRawJson(v.Labels.Map())
if err != nil {
return nil, err
}
for _, k := range v.Entries {
timeVector = append(timeVector, k.Timestamp.UTC())
values = append(values, k.Line)
labelsVector = append(labelsVector, labelsJson)
}
}
timeField := data.NewField(data.TimeSeriesTimeFieldName, nil, timeVector)
valueField := data.NewField("Line", nil, values)
labelsField := data.NewField("labels", nil, labelsVector)
frame := data.NewFrame("", labelsField, timeField, valueField)
frame.SetMeta(&data.FrameMeta{
Stats: stats,
})
return data.Frames{frame}, nil
}
func parseStats(result stats.Result) []data.QueryStat {
data := []data.QueryStat{
makeStat("Summary: bytes processed per second", float64(result.Summary.BytesProcessedPerSecond), "Bps"),
makeStat("Summary: lines processed per second", float64(result.Summary.LinesProcessedPerSecond), ""),
makeStat("Summary: total bytes processed", float64(result.Summary.TotalBytesProcessed), "decbytes"),
makeStat("Summary: total lines processed", float64(result.Summary.TotalLinesProcessed), ""),
makeStat("Summary: exec time", result.Summary.ExecTime, "s"),
makeStat("Store: total chunks ref", float64(result.Store.TotalChunksRef), ""),
makeStat("Store: total chunks downloaded", float64(result.Store.TotalChunksDownloaded), ""),
makeStat("Store: chunks download time", result.Store.ChunksDownloadTime, "s"),
makeStat("Store: head chunk bytes", float64(result.Store.HeadChunkBytes), "decbytes"),
makeStat("Store: head chunk lines", float64(result.Store.HeadChunkLines), ""),
makeStat("Store: decompressed bytes", float64(result.Store.DecompressedBytes), "decbytes"),
makeStat("Store: decompressed lines", float64(result.Store.DecompressedLines), ""),
makeStat("Store: compressed bytes", float64(result.Store.CompressedBytes), "decbytes"),
makeStat("Store: total duplicates", float64(result.Store.TotalDuplicates), ""),
makeStat("Ingester: total reached", float64(result.Ingester.TotalReached), ""),
makeStat("Ingester: total chunks matched", float64(result.Ingester.TotalChunksMatched), ""),
makeStat("Ingester: total batches", float64(result.Ingester.TotalBatches), ""),
makeStat("Ingester: total lines sent", float64(result.Ingester.TotalLinesSent), ""),
makeStat("Ingester: head chunk bytes", float64(result.Ingester.HeadChunkBytes), "decbytes"),
makeStat("Ingester: head chunk lines", float64(result.Ingester.HeadChunkLines), ""),
makeStat("Ingester: decompressed bytes", float64(result.Ingester.DecompressedBytes), "decbytes"),
makeStat("Ingester: decompressed lines", float64(result.Ingester.DecompressedLines), ""),
makeStat("Ingester: compressed bytes", float64(result.Ingester.CompressedBytes), "decbytes"),
makeStat("Ingester: total duplicates", float64(result.Ingester.TotalDuplicates), ""),
}
// it is not possible to know whether the given statistics was missing, or
// it's value was zero.
// we do a heuristic here, if every stat-value is zero, we assume we got no stats-data
allStatsZero := true
for _, stat := range data {
if stat.Value > 0 {
allStatsZero = false
break
}
}
if allStatsZero {
return nil
}
return data
}
func makeStat(name string, value float64, unit string) data.QueryStat {
return data.QueryStat{
FieldConfig: data.FieldConfig{
DisplayName: name,
Unit: unit,
},
Value: value,
}
}

View File

@ -1,183 +0,0 @@
package loki
import (
"testing"
"time"
"github.com/google/go-cmp/cmp"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/loki/pkg/loghttp"
"github.com/grafana/loki/pkg/logqlmodel/stats"
p "github.com/prometheus/common/model"
"github.com/stretchr/testify/require"
)
func TestParseResponse(t *testing.T) {
t.Run("value is not of supported type", func(t *testing.T) {
value := loghttp.QueryResponse{
Data: loghttp.QueryResponseData{
Result: loghttp.Scalar{},
},
}
res, err := parseResponse(&value, nil)
require.Equal(t, len(res), 0)
require.Error(t, err)
})
t.Run("response should be parsed normally", func(t *testing.T) {
values := []p.SamplePair{
{Value: 1, Timestamp: 1000},
{Value: 2, Timestamp: 2000},
{Value: 3, Timestamp: 3000},
{Value: 4, Timestamp: 4000},
{Value: 5, Timestamp: 5000},
}
value := loghttp.QueryResponse{
Data: loghttp.QueryResponseData{
Result: loghttp.Matrix{
p.SampleStream{
Metric: p.Metric{"app": "Application", "tag2": "tag2"},
Values: values,
},
},
},
}
query := &lokiQuery{
Expr: "up(ALERTS)",
QueryType: QueryTypeRange,
LegendFormat: "legend {{app}}",
Step: time.Second * 42,
}
frame, err := parseResponse(&value, query)
require.NoError(t, err)
labels, err := data.LabelsFromString("app=Application, tag2=tag2")
require.NoError(t, err)
field1 := data.NewField("Time", nil, []time.Time{
time.Date(1970, 1, 1, 0, 0, 1, 0, time.UTC),
time.Date(1970, 1, 1, 0, 0, 2, 0, time.UTC),
time.Date(1970, 1, 1, 0, 0, 3, 0, time.UTC),
time.Date(1970, 1, 1, 0, 0, 4, 0, time.UTC),
time.Date(1970, 1, 1, 0, 0, 5, 0, time.UTC),
})
field1.Config = &data.FieldConfig{Interval: float64(42000)}
field2 := data.NewField("Value", labels, []float64{1, 2, 3, 4, 5})
field2.SetConfig(&data.FieldConfig{DisplayNameFromDS: "legend Application"})
testFrame := data.NewFrame("legend Application", field1, field2)
testFrame.SetMeta(&data.FrameMeta{
ExecutedQueryString: "Expr: up(ALERTS)\nStep: 42s",
Type: data.FrameTypeTimeSeriesMany,
})
if diff := cmp.Diff(testFrame, frame[0], data.FrameTestCompareOptions()...); diff != "" {
t.Errorf("Result mismatch (-want +got):\n%s", diff)
}
})
t.Run("should set interval-attribute in response", func(t *testing.T) {
values := []p.SamplePair{
{Value: 1, Timestamp: 1000},
}
value := loghttp.QueryResponse{
Data: loghttp.QueryResponseData{
Result: loghttp.Matrix{
p.SampleStream{
Values: values,
},
},
},
}
query := &lokiQuery{
Step: time.Second * 42,
QueryType: QueryTypeRange,
}
frames, err := parseResponse(&value, query)
require.NoError(t, err)
// to keep the test simple, we assume the
// first field is the time-field
timeField := frames[0].Fields[0]
require.NotNil(t, timeField)
require.Equal(t, data.FieldTypeTime, timeField.Type())
timeFieldConfig := timeField.Config
require.NotNil(t, timeFieldConfig)
require.Equal(t, float64(42000), timeFieldConfig.Interval)
})
t.Run("should parse response stats", func(t *testing.T) {
stats := stats.Result{
Summary: stats.Summary{
BytesProcessedPerSecond: 1,
LinesProcessedPerSecond: 2,
TotalBytesProcessed: 3,
TotalLinesProcessed: 4,
ExecTime: 5.5,
},
Store: stats.Store{
TotalChunksRef: 6,
TotalChunksDownloaded: 7,
ChunksDownloadTime: 8.8,
HeadChunkBytes: 9,
HeadChunkLines: 10,
DecompressedBytes: 11,
DecompressedLines: 12,
CompressedBytes: 13,
TotalDuplicates: 14,
},
Ingester: stats.Ingester{
TotalReached: 15,
TotalChunksMatched: 16,
TotalBatches: 17,
TotalLinesSent: 18,
HeadChunkBytes: 19,
HeadChunkLines: 20,
DecompressedBytes: 21,
DecompressedLines: 22,
CompressedBytes: 23,
TotalDuplicates: 24,
},
}
expected := []data.QueryStat{
{FieldConfig: data.FieldConfig{DisplayName: "Summary: bytes processed per second", Unit: "Bps"}, Value: 1},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: lines processed per second", Unit: ""}, Value: 2},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: total bytes processed", Unit: "decbytes"}, Value: 3},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: total lines processed", Unit: ""}, Value: 4},
{FieldConfig: data.FieldConfig{DisplayName: "Summary: exec time", Unit: "s"}, Value: 5.5},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total chunks ref", Unit: ""}, Value: 6},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total chunks downloaded", Unit: ""}, Value: 7},
{FieldConfig: data.FieldConfig{DisplayName: "Store: chunks download time", Unit: "s"}, Value: 8.8},
{FieldConfig: data.FieldConfig{DisplayName: "Store: head chunk bytes", Unit: "decbytes"}, Value: 9},
{FieldConfig: data.FieldConfig{DisplayName: "Store: head chunk lines", Unit: ""}, Value: 10},
{FieldConfig: data.FieldConfig{DisplayName: "Store: decompressed bytes", Unit: "decbytes"}, Value: 11},
{FieldConfig: data.FieldConfig{DisplayName: "Store: decompressed lines", Unit: ""}, Value: 12},
{FieldConfig: data.FieldConfig{DisplayName: "Store: compressed bytes", Unit: "decbytes"}, Value: 13},
{FieldConfig: data.FieldConfig{DisplayName: "Store: total duplicates", Unit: ""}, Value: 14},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total reached", Unit: ""}, Value: 15},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total chunks matched", Unit: ""}, Value: 16},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total batches", Unit: ""}, Value: 17},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total lines sent", Unit: ""}, Value: 18},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: head chunk bytes", Unit: "decbytes"}, Value: 19},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: head chunk lines", Unit: ""}, Value: 20},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: decompressed bytes", Unit: "decbytes"}, Value: 21},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: decompressed lines", Unit: ""}, Value: 22},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: compressed bytes", Unit: "decbytes"}, Value: 23},
{FieldConfig: data.FieldConfig{DisplayName: "Ingester: total duplicates", Unit: ""}, Value: 24},
}
result := parseStats((stats))
// NOTE: i compare it item-by-item otherwise the test-fail-error-message is very hard to read
require.Len(t, result, len(expected))
for i := 0; i < len(result); i++ {
require.Equal(t, expected[i], result[i])
}
})
}

View File

@ -1,6 +1,7 @@
package converter
import (
"encoding/json"
"fmt"
"strconv"
"time"
@ -349,6 +350,7 @@ func readMatrixOrVector(iter *jsoniter.Iterator) *backend.DataResponse {
timeField := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
timeField.Name = data.TimeSeriesTimeFieldName
valueField := data.NewFieldFromFieldType(data.FieldTypeFloat64, 0)
valueField.Name = data.TimeSeriesValueFieldName
valueField.Labels = data.Labels{}
for l1Field := iter.ReadObject(); l1Field != ""; l1Field = iter.ReadObject() {
@ -375,14 +377,6 @@ func readMatrixOrVector(iter *jsoniter.Iterator) *backend.DataResponse {
}
}
name, ok := valueField.Labels["__name__"]
if ok {
valueField.Name = name
delete(valueField.Labels, "__name__")
} else {
valueField.Name = data.TimeSeriesValueFieldName
}
frame := data.NewFrame("", timeField, valueField)
frame.Meta = &data.FrameMeta{
Type: data.FrameTypeTimeSeriesMany,
@ -408,7 +402,7 @@ func readTimeValuePair(iter *jsoniter.Iterator) (time.Time, float64, error) {
func readStream(iter *jsoniter.Iterator) *backend.DataResponse {
rsp := &backend.DataResponse{}
labelsField := data.NewFieldFromFieldType(data.FieldTypeString, 0)
labelsField := data.NewFieldFromFieldType(data.FieldTypeJSON, 0)
labelsField.Name = "__labels" // avoid automatically spreading this by labels
timeField := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
@ -422,14 +416,20 @@ func readStream(iter *jsoniter.Iterator) *backend.DataResponse {
tsField.Name = "TS"
labels := data.Labels{}
labelString := labels.String()
labelJson, err := labelsToRawJson(labels)
if err != nil {
return &backend.DataResponse{Error: err}
}
for iter.ReadArray() {
for l1Field := iter.ReadObject(); l1Field != ""; l1Field = iter.ReadObject() {
switch l1Field {
case "stream":
iter.ReadVal(&labels)
labelString = labels.String()
labelJson, err = labelsToRawJson(labels)
if err != nil {
return &backend.DataResponse{Error: err}
}
case "values":
for iter.ReadArray() {
@ -441,7 +441,7 @@ func readStream(iter *jsoniter.Iterator) *backend.DataResponse {
t := timeFromLokiString(ts)
labelsField.Append(labelString)
labelsField.Append(labelJson)
timeField.Append(t)
lineField.Append(line)
tsField.Append(ts)
@ -477,3 +477,13 @@ func timeFromLokiString(str string) time.Time {
ns, _ := strconv.ParseInt(str[10:], 10, 64)
return time.Unix(ss, ns).UTC()
}
func labelsToRawJson(labels data.Labels) (json.RawMessage, error) {
// data.Labels when converted to JSON keep the fields sorted
bytes, err := jsoniter.Marshal(labels)
if err != nil {
return nil, err
}
return json.RawMessage(bytes), nil
}

View File

@ -5,17 +5,28 @@
"meta": {
"custom": {
"stats": {
"ingester": {
"totalChunksMatched": 0,
"totalBatches": 0,
"totalLinesSent": 0,
"store": {
"headChunkBytes": 0,
"headChunkLines": 0,
"compressedBytes": 31432,
"decompressedBytes": 7772,
"decompressedLines": 55,
"totalDuplicates": 0,
"totalChunksRef": 2,
"totalChunksDownloaded": 2,
"chunksDownloadTime": 0.000390958
},
"ingester": {
"totalReached": 0,
"headChunkBytes": 0,
"totalDuplicates": 0,
"headChunkLines": 0,
"decompressedBytes": 0,
"decompressedLines": 0,
"compressedBytes": 0,
"totalReached": 0,
"totalDuplicates": 0,
"decompressedBytes": 0
"totalChunksMatched": 0,
"totalBatches": 0,
"totalLinesSent": 0
},
"summary": {
"bytesProcessedPerSecond": 3507022,
@ -23,17 +34,6 @@
"totalBytesProcessed": 7772,
"totalLinesProcessed": 55,
"execTime": 0.002216125
},
"store": {
"totalChunksDownloaded": 2,
"headChunkBytes": 0,
"decompressedLines": 55,
"totalDuplicates": 0,
"totalChunksRef": 2,
"headChunkLines": 0,
"decompressedBytes": 7772,
"compressedBytes": 31432,
"chunksDownloadTime": 0.000390958
}
}
}
@ -41,9 +41,9 @@
"fields": [
{
"name": "__labels",
"type": "string",
"type": "other",
"typeInfo": {
"frame": "string"
"frame": "json.RawMessage"
}
},
{
@ -72,7 +72,7 @@
"data": {
"values": [
[
"level=error, location=moon🌙","level=info, location=moon🌙","level=info, location=moon🌙","level=info, location=moon🌙","level=info, location=moon🌙","level=info, location=moon🌙"
{"level":"error","location":"moon🌙"},{"level":"info","location":"moon🌙"},{"level":"info","location":"moon🌙"},{"level":"info","location":"moon🌙"},{"level":"info","location":"moon🌙"},{"level":"info","location":"moon🌙"}
],
[
1645030244810,1645030247027,1645030246277,1645030246277,1645030245539,1645030244091

View File

@ -38,19 +38,19 @@ Frame[0] {
}
Name:
Dimensions: 4 Fields by 6 Rows
+------------------------------+-----------------------------------------+------------------+---------------------+
| Name: __labels | Name: Time | Name: Line | Name: TS |
| Labels: | Labels: | Labels: | Labels: |
| Type: []string | Type: []time.Time | Type: []string | Type: []string |
+------------------------------+-----------------------------------------+------------------+---------------------+
| level=error, location=moon🌙 | 2022-02-16 16:50:44.81075712 +0000 UTC | log line error 1 | 1645030244810757120 |
| level=info, location=moon🌙 | 2022-02-16 16:50:47.02773504 +0000 UTC | log line info 1 | 1645030247027735040 |
| level=info, location=moon🌙 | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| level=info, location=moon🌙 | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| level=info, location=moon🌙 | 2022-02-16 16:50:45.539423744 +0000 UTC | log line info 3 | 1645030245539423744 |
| level=info, location=moon🌙 | 2022-02-16 16:50:44.091700992 +0000 UTC | log line info 4 | 1645030244091700992 |
+------------------------------+-----------------------------------------+------------------+---------------------+
+---------------------------------------+-----------------------------------------+------------------+---------------------+
| Name: __labels | Name: Time | Name: Line | Name: TS |
| Labels: | Labels: | Labels: | Labels: |
| Type: []json.RawMessage | Type: []time.Time | Type: []string | Type: []string |
+---------------------------------------+-----------------------------------------+------------------+---------------------+
| {"level":"error","location":"moon🌙"} | 2022-02-16 16:50:44.81075712 +0000 UTC | log line error 1 | 1645030244810757120 |
| {"level":"info","location":"moon🌙"} | 2022-02-16 16:50:47.02773504 +0000 UTC | log line info 1 | 1645030247027735040 |
| {"level":"info","location":"moon🌙"} | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| {"level":"info","location":"moon🌙"} | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| {"level":"info","location":"moon🌙"} | 2022-02-16 16:50:45.539423744 +0000 UTC | log line info 3 | 1645030245539423744 |
| {"level":"info","location":"moon🌙"} | 2022-02-16 16:50:44.091700992 +0000 UTC | log line info 4 | 1645030244091700992 |
+---------------------------------------+-----------------------------------------+------------------+---------------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=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
FRAME=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

View File

@ -6,34 +6,34 @@
"custom": {
"stats": {
"summary": {
"execTime": 0.002216125,
"bytesProcessedPerSecond": 3507022,
"linesProcessedPerSecond": 24818,
"totalBytesProcessed": 7772,
"totalLinesProcessed": 55
"totalLinesProcessed": 55,
"execTime": 0.002216125
},
"store": {
"headChunkBytes": 0,
"decompressedLines": 55,
"compressedBytes": 31432,
"totalDuplicates": 0,
"totalChunksDownloaded": 2,
"totalChunksRef": 2,
"chunksDownloadTime": 0.000390958,
"headChunkLines": 0,
"decompressedLines": 55,
"totalDuplicates": 0,
"totalChunksDownloaded": 2,
"headChunkBytes": 0,
"decompressedBytes": 7772,
"totalChunksRef": 2
"compressedBytes": 31432
},
"ingester": {
"headChunkBytes": 0,
"decompressedBytes": 0,
"totalBatches": 0,
"totalLinesSent": 0,
"headChunkLines": 0,
"decompressedLines": 0,
"compressedBytes": 0,
"totalDuplicates": 0,
"totalReached": 0,
"totalChunksMatched": 0
"totalChunksMatched": 0,
"totalLinesSent": 0,
"headChunkBytes": 0,
"decompressedLines": 0,
"totalBatches": 0,
"headChunkLines": 0,
"decompressedBytes": 0,
"compressedBytes": 0,
"totalDuplicates": 0
}
}
}
@ -41,9 +41,9 @@
"fields": [
{
"name": "__labels",
"type": "string",
"type": "other",
"typeInfo": {
"frame": "string"
"frame": "json.RawMessage"
}
},
{
@ -72,7 +72,7 @@
"data": {
"values": [
[
"level=error, location=moon","level=info, location=moon","level=info, location=moon","level=info, location=moon","level=info, location=moon"
{"level":"error","location":"moon"},{"level":"info","location":"moon"},{"level":"info","location":"moon"},{"level":"info","location":"moon"},{"level":"info","location":"moon"}
],
[
1645030244810,1645030247027,1645030246277,1645030245539,1645030244091

View File

@ -38,18 +38,18 @@ Frame[0] {
}
Name:
Dimensions: 4 Fields by 5 Rows
+----------------------------+-----------------------------------------+------------------+---------------------+
| Name: __labels | Name: Time | Name: Line | Name: TS |
| Labels: | Labels: | Labels: | Labels: |
| Type: []string | Type: []time.Time | Type: []string | Type: []string |
+----------------------------+-----------------------------------------+------------------+---------------------+
| level=error, location=moon | 2022-02-16 16:50:44.81075712 +0000 UTC | log line error 1 | 1645030244810757120 |
| level=info, location=moon | 2022-02-16 16:50:47.02773504 +0000 UTC | log line info 1 | 1645030247027735040 |
| level=info, location=moon | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| level=info, location=moon | 2022-02-16 16:50:45.539423744 +0000 UTC | log line info 3 | 1645030245539423744 |
| level=info, location=moon | 2022-02-16 16:50:44.091700992 +0000 UTC | log line info 4 | 1645030244091700992 |
+----------------------------+-----------------------------------------+------------------+---------------------+
+-------------------------------------+-----------------------------------------+------------------+---------------------+
| Name: __labels | Name: Time | Name: Line | Name: TS |
| Labels: | Labels: | Labels: | Labels: |
| Type: []json.RawMessage | Type: []time.Time | Type: []string | Type: []string |
+-------------------------------------+-----------------------------------------+------------------+---------------------+
| {"level":"error","location":"moon"} | 2022-02-16 16:50:44.81075712 +0000 UTC | log line error 1 | 1645030244810757120 |
| {"level":"info","location":"moon"} | 2022-02-16 16:50:47.02773504 +0000 UTC | log line info 1 | 1645030247027735040 |
| {"level":"info","location":"moon"} | 2022-02-16 16:50:46.277587968 +0000 UTC | log line info 2 | 1645030246277587968 |
| {"level":"info","location":"moon"} | 2022-02-16 16:50:45.539423744 +0000 UTC | log line info 3 | 1645030245539423744 |
| {"level":"info","location":"moon"} | 2022-02-16 16:50:44.091700992 +0000 UTC | log line info 4 | 1645030244091700992 |
+-------------------------------------+-----------------------------------------+------------------+---------------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=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
FRAME=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

View File

@ -14,14 +14,15 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"job": "prometheus",
"instance": "localhost:9090"
"instance": "localhost:9090",
"__name__": "up"
}
}
]
@ -51,12 +52,13 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"__name__": "up",
"job": "node",
"instance": "localhost:9091"
}

View File

@ -5,15 +5,15 @@ Frame[0] {
}
Name:
Dimensions: 2 Fields by 3 Rows
+-----------------------------------+-------------------------------------------------+
| Name: Time | Name: up |
| Labels: | Labels: instance=localhost:9090, job=prometheus |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+-------------------------------------------------+
| 2015-07-01 20:10:30.781 +0000 UTC | 1 |
| 2015-07-01 20:10:45.781 +0000 UTC | 1 |
| 2015-07-01 20:11:00.781 +0000 UTC | 1 |
+-----------------------------------+-------------------------------------------------+
+-----------------------------------+--------------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9090, job=prometheus |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------------+
| 2015-07-01 20:10:30.781 +0000 UTC | 1 |
| 2015-07-01 20:10:45.781 +0000 UTC | 1 |
| 2015-07-01 20:11:00.781 +0000 UTC | 1 |
+-----------------------------------+--------------------------------------------------------------+
@ -22,17 +22,17 @@ Frame[1] {
}
Name:
Dimensions: 2 Fields by 3 Rows
+-----------------------------------+-------------------------------------------+
| Name: Time | Name: up |
| Labels: | Labels: instance=localhost:9091, job=node |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+-------------------------------------------+
| 2015-07-01 20:10:30.781 +0000 UTC | 0 |
| 2015-07-01 20:10:45.781 +0000 UTC | 0 |
| 2015-07-01 20:11:00.781 +0000 UTC | 1 |
+-----------------------------------+-------------------------------------------+
+-----------------------------------+--------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9091, job=node |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------+
| 2015-07-01 20:10:30.781 +0000 UTC | 0 |
| 2015-07-01 20:10:45.781 +0000 UTC | 0 |
| 2015-07-01 20:11:00.781 +0000 UTC | 1 |
+-----------------------------------+--------------------------------------------------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=QVJST1cxAAD/////8AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAoP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADA/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOD+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAAMQAAAAEAAAAVv///xQAAACMAAAAjAAAAAAAAAOMAAAAAgAAACgAAAAEAAAASP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABo////CAAAADwAAAAwAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkwIiwiam9iIjoicHJvbWV0aGV1cyJ9AAAAAAYAAABsYWJlbHMAAAAAAACK////AAACAAIAAAB1cAAAAAASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAADAAAAAAAAAAFAAAAAAAAAMEAAoAGAAMAAgABAAKAAAAFAAAAFgAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAABAuc2smuvsE0CP3yqe6+wTQGXxqKHr7BMAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8QAAAADAAUABIADAAIAAQADAAAABAAAAAsAAAAPAAAAAAABAABAAAAAAIAAAAAAADAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAACMAAAAAwAAAEwAAAAoAAAABAAAAKD+//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAAwP7//wgAAAAMAAAAAAAAAAAAAAAEAAAAbmFtZQAAAADg/v//CAAAACQAAAAaAAAAeyJ0eXBlIjoidGltZXNlcmllcy1tYW55In0AAAQAAABtZXRhAAAAAAIAAADEAAAABAAAAFb///8UAAAAjAAAAIwAAAAAAAADjAAAAAIAAAAoAAAABAAAAEj///8IAAAADAAAAAIAAAB1cAAABAAAAG5hbWUAAAAAaP///wgAAAA8AAAAMAAAAHsiaW5zdGFuY2UiOiJsb2NhbGhvc3Q6OTA5MCIsImpvYiI6InByb21ldGhldXMifQAAAAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAAIAIAAEFSUk9XMQ==
FRAME=QVJST1cxAAD/////6AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAqP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADI/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOj+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALwAAAAEAAAAXv///xQAAACEAAAAhAAAAAAAAAOEAAAAAgAAACgAAAAEAAAAUP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABw////CAAAADQAAAAqAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkxIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAwAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAwAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAQLnNrJrr7BNAj98qnuvsE0Bl8aih6+wTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/EAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAQAAQAAAPgBAAAAAAAAwAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACo/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAMj+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA6P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAAvAAAAAQAAABe////FAAAAIQAAACEAAAAAAAAA4QAAAACAAAAKAAAAAQAAABQ////CAAAAAwAAAACAAAAdXAAAAQAAABuYW1lAAAAAHD///8IAAAANAAAACoAAAB7Imluc3RhbmNlIjoibG9jYWxob3N0OjkwOTEiLCJqb2IiOiJub2RlIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAIAAAB1cAAAAAASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAYAgAAQVJST1cx
FRAME=QVJST1cxAAD/////CAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAjP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAMz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAANgAAAAEAAAAQv///xQAAACgAAAAoAAAAAAAAAOgAAAAAgAAACwAAAAEAAAANP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAWP///wgAAABMAAAAQAAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkwOTAiLCJqb2IiOiJwcm9tZXRoZXVzIn0AAAAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAADAAAAAAAAAAFAAAAAAAAAMEAAoAGAAMAAgABAAKAAAAFAAAAFgAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAABAuc2smuvsE0CP3yqe6+wTQGXxqKHr7BMAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8QAAAADAAUABIADAAIAAQADAAAABAAAAAsAAAAOAAAAAAABAABAAAAGAIAAAAAAADAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAjP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAMz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAANgAAAAEAAAAQv///xQAAACgAAAAoAAAAAAAAAOgAAAAAgAAACwAAAAEAAAANP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAWP///wgAAABMAAAAQAAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkwOTAiLCJqb2IiOiJwcm9tZXRoZXVzIn0AAAAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAADACAABBUlJPVzE=
FRAME=QVJST1cxAAD/////AAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAlP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAC0/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAANT+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAANAAAAAEAAAASv///xQAAACYAAAAmAAAAAAAAAOYAAAAAgAAACwAAAAEAAAAPP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAYP///wgAAABEAAAAOgAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkwOTEiLCJqb2IiOiJub2RlIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAwAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAwAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAQLnNrJrr7BNAj98qnuvsE0Bl8aih6+wTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/EAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADgAAAAAAAQAAQAAABACAAAAAAAAwAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAACMAAAAAwAAAEwAAAAoAAAABAAAAJT+//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAAtP7//wgAAAAMAAAAAAAAAAAAAAAEAAAAbmFtZQAAAADU/v//CAAAACQAAAAaAAAAeyJ0eXBlIjoidGltZXNlcmllcy1tYW55In0AAAQAAABtZXRhAAAAAAIAAADQAAAABAAAAEr///8UAAAAmAAAAJgAAAAAAAADmAAAAAIAAAAsAAAABAAAADz///8IAAAAEAAAAAUAAABWYWx1ZQAAAAQAAABuYW1lAAAAAGD///8IAAAARAAAADoAAAB7Il9fbmFtZV9fIjoidXAiLCJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkxIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgAFAAAAVmFsdWUAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAAKAIAAEFSUk9XMQ==

View File

@ -14,12 +14,13 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"__name__": "up",
"job": "prometheus",
"instance": "localhost:9090"
}
@ -51,14 +52,15 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"job": "node",
"instance": "localhost:9100"
"instance": "localhost:9100",
"__name__": "up"
}
}
]

View File

@ -5,13 +5,13 @@ Frame[0] {
}
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 |
+-----------------------------------+-------------------------------------------------+
+-----------------------------------+--------------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9090, job=prometheus |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------------+
| 2015-07-01 20:10:51.781 +0000 UTC | 1 |
+-----------------------------------+--------------------------------------------------------------+
@ -20,13 +20,13 @@ Frame[1] {
}
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 |
+-----------------------------------+-------------------------------------------+
+-----------------------------------+--------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9100, job=node |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------+
| 2015-07-01 20:10:51.781 +0000 UTC | 0 |
+-----------------------------------+--------------------------------------------------------+
@ -75,8 +75,8 @@ Dimensions: 2 Fields by 1 Rows
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=QVJST1cxAAD/////8AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAoP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADA/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOD+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAAMQAAAAEAAAAVv///xQAAACMAAAAjAAAAAAAAAOMAAAAAgAAACgAAAAEAAAASP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABo////CAAAADwAAAAwAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkwIiwiam9iIjoicHJvbWV0aGV1cyJ9AAAAAAYAAABsYWJlbHMAAAAAAACK////AAACAAIAAAB1cAAAAAASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMEAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABAS4CQn+vsEwAAAAAAAPA/EAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAQAAQAAAAACAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACg/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAMD+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA4P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAAxAAAAAQAAABW////FAAAAIwAAACMAAAAAAAAA4wAAAACAAAAKAAAAAQAAABI////CAAAAAwAAAACAAAAdXAAAAQAAABuYW1lAAAAAGj///8IAAAAPAAAADAAAAB7Imluc3RhbmNlIjoibG9jYWxob3N0OjkwOTAiLCJqb2IiOiJwcm9tZXRoZXVzIn0AAAAABgAAAGxhYmVscwAAAAAAAIr///8AAAIAAgAAAHVwAAAAABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAACACAABBUlJPVzE=
FRAME=QVJST1cxAAD/////6AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAqP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADI/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOj+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALwAAAAEAAAAXv///xQAAACEAAAAhAAAAAAAAAOEAAAAAgAAACgAAAAEAAAAUP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABw////CAAAADQAAAAqAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MTAwIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAQEuAkJ/r7BMAAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA8AAAAAAAEAAEAAAD4AQAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAqP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADI/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOj+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALwAAAAEAAAAXv///xQAAACEAAAAhAAAAAAAAAOEAAAAAgAAACgAAAAEAAAAUP///wgAAAAMAAAAAgAAAHVwAAAEAAAAbmFtZQAAAABw////CAAAADQAAAAqAAAAeyJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MTAwIiwiam9iIjoibm9kZSJ9AAAGAAAAbGFiZWxzAAAAAAAAiv///wAAAgACAAAAdXAAAAAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAATAAAAAAAAApMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAQAAABUaW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAFRpbWUAAAAAGAIAAEFSUk9XMQ==
FRAME=QVJST1cxAAD/////CAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAjP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAMz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAANgAAAAEAAAAQv///xQAAACgAAAAoAAAAAAAAAOgAAAAAgAAACwAAAAEAAAANP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAWP///wgAAABMAAAAQAAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkwOTAiLCJqb2IiOiJwcm9tZXRoZXVzIn0AAAAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAAAAAAD/////uAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAABAAAAAAAAAAFAAAAAAAAAMEAAoAGAAMAAgABAAKAAAAFAAAAFgAAAABAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABAS4CQn+vsEwAAAAAAAPA/EAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADgAAAAAAAQAAQAAABgCAAAAAAAAwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAKAAwAAAAIAAQACgAAAAgAAACMAAAAAwAAAEwAAAAoAAAABAAAAIz+//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAArP7//wgAAAAMAAAAAAAAAAAAAAAEAAAAbmFtZQAAAADM/v//CAAAACQAAAAaAAAAeyJ0eXBlIjoidGltZXNlcmllcy1tYW55In0AAAQAAABtZXRhAAAAAAIAAADYAAAABAAAAEL///8UAAAAoAAAAKAAAAAAAAADoAAAAAIAAAAsAAAABAAAADT///8IAAAAEAAAAAUAAABWYWx1ZQAAAAQAAABuYW1lAAAAAFj///8IAAAATAAAAEAAAAB7Il9fbmFtZV9fIjoidXAiLCJpbnN0YW5jZSI6ImxvY2FsaG9zdDo5MDkwIiwiam9iIjoicHJvbWV0aGV1cyJ9AAAAAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAwAgAAQVJST1cx
FRAME=QVJST1cxAAD/////AAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAAlP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAC0/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAANT+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAANAAAAAEAAAASv///xQAAACYAAAAmAAAAAAAAAOYAAAAAgAAACwAAAAEAAAAPP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAYP///wgAAABEAAAAOgAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkxMDAiLCJqb2IiOiJub2RlIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAQEuAkJ/r7BMAAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAAAQAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACU/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAALT+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA1P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAA0AAAAAQAAABK////FAAAAJgAAACYAAAAAAAAA5gAAAACAAAALAAAAAQAAAA8////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAABg////CAAAAEQAAAA6AAAAeyJfX25hbWVfXyI6InVwIiwiaW5zdGFuY2UiOiJsb2NhbGhvc3Q6OTEwMCIsImpvYiI6Im5vZGUifQAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAACgCAABBUlJPVzE=
FRAME=QVJST1cxAAD/////6AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAArP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADM/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIwAAAHsibGV2ZWwiOiJlcnJvciIsImxvY2F0aW9uIjoibW9vbiJ9AAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYAAAAAAADwfxAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAAD4AQAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAMz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA7P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAjAAAAeyJsZXZlbCI6ImVycm9yIiwibG9jYXRpb24iOiJtb29uIn0ABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAABACAABBUlJPVzE=
FRAME=QVJST1cxAAD/////6AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAArP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADM/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIgAAAHsibGV2ZWwiOiJpbmZvIiwibG9jYXRpb24iOiJtb29uIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYAAAAAAADw/xAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAAD4AQAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAMz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA7P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAiAAAAeyJsZXZlbCI6ImluZm8iLCJsb2NhdGlvbiI6Im1vb24ifQAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAABACAABBUlJPVzE=
FRAME=QVJST1cxAAD/////6AEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAIwAAAADAAAATAAAACgAAAAEAAAArP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAADM/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAOz+//8IAAAAJAAAABoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkifQAABAAAAG1ldGEAAAAAAgAAALgAAAAEAAAAYv///xQAAACAAAAAgAAAAAAAAAOAAAAAAgAAACwAAAAEAAAAVP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAeP///wgAAAAsAAAAIwAAAHsibGV2ZWwiOiJkZWJ1ZyIsImxvY2F0aW9uIjoibW9vbiJ9AAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAN7cpctR1BYBAAAAAAD4fxAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAAD4AQAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAjAAAAAMAAABMAAAAKAAAAAQAAACs/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAMz+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAA7P7//wgAAAAkAAAAGgAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSJ9AAAEAAAAbWV0YQAAAAACAAAAuAAAAAQAAABi////FAAAAIAAAACAAAAAAAAAA4AAAAACAAAALAAAAAQAAABU////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAAB4////CAAAACwAAAAjAAAAeyJsZXZlbCI6ImRlYnVnIiwibG9jYXRpb24iOiJtb29uIn0ABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAABACAABBUlJPVzE=

View File

@ -24,12 +24,13 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"__name__": "up",
"instance": "localhost:9090",
"job": "prometheus"
}
@ -71,12 +72,13 @@
}
},
{
"name": "up",
"name": "Value",
"type": "number",
"typeInfo": {
"frame": "float64"
},
"labels": {
"__name__": "up",
"instance": "localhost:9100",
"job": "node"
}

View File

@ -15,13 +15,13 @@ Frame[0] {
}
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 |
+-----------------------------------+-------------------------------------------------+
+-----------------------------------+--------------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9090, job=prometheus |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------------+
| 2015-07-01 20:10:51.781 +0000 UTC | 1 |
+-----------------------------------+--------------------------------------------------------------+
@ -40,13 +40,13 @@ Frame[1] {
}
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 |
+-----------------------------------+-------------------------------------------+
+-----------------------------------+--------------------------------------------------------+
| Name: Time | Name: Value |
| Labels: | Labels: __name__=up, instance=localhost:9100, job=node |
| Type: []time.Time | Type: []float64 |
+-----------------------------------+--------------------------------------------------------+
| 2015-07-01 20:10:51.781 +0000 UTC | 0 |
+-----------------------------------+--------------------------------------------------------+
@ -125,8 +125,8 @@ Dimensions: 2 Fields by 1 Rows
====== 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=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
FRAME=QVJST1cxAAD/////YAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEEAAoADAAAAAgABAAKAAAACAAAAOwAAAADAAAATAAAACgAAAAEAAAANP7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAABU/v//CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAAHT+//8IAAAAhAAAAHoAAAB7InR5cGUiOiJ0aW1lc2VyaWVzLW1hbnkiLCJub3RpY2VzIjpbeyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAxIn0seyJzZXZlcml0eSI6Indhcm5pbmciLCJ0ZXh0Ijoid2FybmluZyAyIn1dfQAABAAAAG1ldGEAAAAAAgAAANAAAAAEAAAASv///xQAAACYAAAAmAAAAAAAAAOYAAAAAgAAACwAAAAEAAAAPP///wgAAAAQAAAABQAAAFZhbHVlAAAABAAAAG5hbWUAAAAAYP///wgAAABEAAAAOgAAAHsiX19uYW1lX18iOiJ1cCIsImluc3RhbmNlIjoibG9jYWxob3N0OjkxMDAiLCJqb2IiOiJub2RlIn0AAAYAAABsYWJlbHMAAAAAAACK////AAACAAUAAABWYWx1ZQASABgAFAAAABMADAAAAAgABAASAAAAFAAAAEQAAABMAAAAAAAACkwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAQAAAABAAAAFRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAVGltZQAAAAAAAAAA/////7gAAAAUAAAAAAAAAAwAFgAUABMADAAEAAwAAAAQAAAAAAAAABQAAAAAAAADBAAKABgADAAIAAQACgAAABQAAABYAAAAAQAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAQEuAkJ/r7BMAAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA4AAAAAAAEAAEAAABwAgAAAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAA7AAAAAMAAABMAAAAKAAAAAQAAAA0/v//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAFT+//8IAAAADAAAAAAAAAAAAAAABAAAAG5hbWUAAAAAdP7//wgAAACEAAAAegAAAHsidHlwZSI6InRpbWVzZXJpZXMtbWFueSIsIm5vdGljZXMiOlt7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDEifSx7InNldmVyaXR5Ijoid2FybmluZyIsInRleHQiOiJ3YXJuaW5nIDIifV19AAAEAAAAbWV0YQAAAAACAAAA0AAAAAQAAABK////FAAAAJgAAACYAAAAAAAAA5gAAAACAAAALAAAAAQAAAA8////CAAAABAAAAAFAAAAVmFsdWUAAAAEAAAAbmFtZQAAAABg////CAAAAEQAAAA6AAAAeyJfX25hbWVfXyI6InVwIiwiaW5zdGFuY2UiOiJsb2NhbGhvc3Q6OTEwMCIsImpvYiI6Im5vZGUifQAABgAAAGxhYmVscwAAAAAAAIr///8AAAIABQAAAFZhbHVlABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEwAAAAAAAAKTAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAEAAAAVGltZQAAAAAEAAAAbmFtZQAAAAAAAAAAAAAGAAgABgAGAAAAAAADAAQAAABUaW1lAAAAAIgCAABBUlJPVzE=
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=

View File

@ -31,7 +31,7 @@ const inputFrame: DataFrame = {
json: true,
},
},
values: new ArrayVector([`[["level", "info"],["code", "41🌙"]]`, `[["level", "error"],["code", "41🌙"]]`]),
values: new ArrayVector(['{ "level": "info", "code": "41🌙" }', '{ "level": "error", "code": "41🌙" }']),
},
{
name: 'tsNs',