mirror of https://github.com/grafana/grafana
Prometheus: Add Exemplar sampling for streaming parser (#56049)
parent
4eea5d5190
commit
152c7f149a
@ -0,0 +1,42 @@ |
||||
GO = go
|
||||
SHELL = /bin/zsh
|
||||
|
||||
ITERATIONS=10
|
||||
BENCH=repeat $(ITERATIONS) $(LEFT_BRACKET) $(GO) test -benchmem -run=^$$ -bench
|
||||
PROFILE=$(GO) test -benchmem -run=^$$ -benchtime 1x -memprofile memprofile.out -memprofilerate 1 -cpuprofile cpuprofile.out -bench
|
||||
|
||||
LEFT_BRACKET = {
|
||||
RIGHT_BRACKET = }
|
||||
|
||||
memprofile-exemplar memprofile-range: %: --% |
||||
$(GO) tool pprof -http=localhost:6061 memprofile.out
|
||||
|
||||
cpuprofile-exemplar cpuprofile-range: %: --% |
||||
$(GO) tool pprof -http=localhost:6061 cpuprofile.out
|
||||
|
||||
benchmark-exemplar benchmark-range: %: --% |
||||
sed -i 's/buffered/querydata/g' old.txt
|
||||
benchstat old.txt new.txt
|
||||
rm old.txt new.txt
|
||||
|
||||
--benchmark-range: |
||||
$(BENCH) ^BenchmarkRangeJson ./buffered >> old.txt $(RIGHT_BRACKET)
|
||||
$(BENCH) ^BenchmarkRangeJson ./querydata >> new.txt $(RIGHT_BRACKET)
|
||||
|
||||
--memprofile-range: |
||||
$(PROFILE) ^BenchmarkRangeJson ./querydata
|
||||
|
||||
--cpuprofile-range: |
||||
$(PROFILE) ^BenchmarkRangeJson ./querydata
|
||||
|
||||
--benchmark-exemplar: |
||||
$(BENCH) ^BenchmarkExemplarJson ./buffered >> old.txt $(RIGHT_BRACKET)
|
||||
$(BENCH) ^BenchmarkExemplarJson ./querydata >> new.txt $(RIGHT_BRACKET)
|
||||
|
||||
--memprofile-exemplar: |
||||
$(PROFILE) ^BenchmarkExemplarJson ./querydata
|
||||
|
||||
--cpuprofile-exemplar: |
||||
$(PROFILE) ^BenchmarkExemplarJson ./querydata
|
||||
|
||||
.PHONY: benchmark-range benchmark-exemplar memprofile-range memprofile-exemplar cpuprofile-range cpuprofile-exemplar |
@ -0,0 +1,42 @@ |
||||
package models |
||||
|
||||
import "github.com/grafana/grafana-plugin-sdk-go/data" |
||||
|
||||
type ResultType string |
||||
|
||||
const ( |
||||
ResultTypeMatrix ResultType = "matrix" |
||||
ResultTypeExemplar ResultType = "exemplar" |
||||
ResultTypeVector ResultType = "vector" |
||||
ResultTypeUnknown ResultType = "" |
||||
) |
||||
|
||||
func ResultTypeFromFrame(frame *data.Frame) ResultType { |
||||
if frame.Meta.Custom == nil { |
||||
return ResultTypeUnknown |
||||
} |
||||
custom, ok := frame.Meta.Custom.(map[string]string) |
||||
if !ok { |
||||
return ResultTypeUnknown |
||||
} |
||||
|
||||
rt, ok := custom["resultType"] |
||||
if !ok { |
||||
return ResultTypeUnknown |
||||
} |
||||
|
||||
switch rt { |
||||
case ResultTypeMatrix.String(): |
||||
return ResultTypeMatrix |
||||
case ResultTypeExemplar.String(): |
||||
return ResultTypeExemplar |
||||
case ResultTypeVector.String(): |
||||
return ResultTypeVector |
||||
} |
||||
|
||||
return ResultTypeUnknown |
||||
} |
||||
|
||||
func (r ResultType) String() string { |
||||
return string(r) |
||||
} |
@ -0,0 +1,125 @@ |
||||
package querydata |
||||
|
||||
import ( |
||||
"math" |
||||
"sort" |
||||
"time" |
||||
|
||||
"github.com/grafana/grafana/pkg/tsdb/prometheus/models" |
||||
) |
||||
|
||||
type exemplar struct { |
||||
seriesLabels map[string]string |
||||
labels map[string]string |
||||
val float64 |
||||
ts time.Time |
||||
} |
||||
|
||||
type exemplarSampler struct { |
||||
buckets map[time.Time][]exemplar |
||||
labelSet map[string]struct{} |
||||
count int |
||||
mean float64 |
||||
m2 float64 |
||||
} |
||||
|
||||
func newExemplarSampler() *exemplarSampler { |
||||
return &exemplarSampler{ |
||||
buckets: map[time.Time][]exemplar{}, |
||||
labelSet: map[string]struct{}{}, |
||||
} |
||||
} |
||||
|
||||
func (e *exemplarSampler) update(step time.Duration, ts time.Time, val float64, seriesLabels, labels map[string]string) { |
||||
bucketTs := models.AlignTimeRange(ts, step, 0) |
||||
e.trackNewLabels(seriesLabels, labels) |
||||
e.updateAggregations(val) |
||||
|
||||
ex := exemplar{ |
||||
val: val, |
||||
ts: ts, |
||||
labels: labels, |
||||
seriesLabels: seriesLabels, |
||||
} |
||||
|
||||
if _, exists := e.buckets[bucketTs]; !exists { |
||||
e.buckets[bucketTs] = []exemplar{ex} |
||||
return |
||||
} |
||||
|
||||
e.buckets[bucketTs] = append(e.buckets[bucketTs], ex) |
||||
} |
||||
|
||||
// updateAggregations uses Welford's online algorithm for calculating the mean and variance
|
||||
// https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Welford's_online_algorithm
|
||||
func (e *exemplarSampler) updateAggregations(val float64) { |
||||
e.count++ |
||||
delta := val - e.mean |
||||
e.mean += delta / float64(e.count) |
||||
delta2 := val - e.mean |
||||
e.m2 += delta * delta2 |
||||
} |
||||
|
||||
// standardDeviation calculates the amount of varation in the data
|
||||
// https://en.wikipedia.org/wiki/Standard_deviation
|
||||
func (e *exemplarSampler) standardDeviation() float64 { |
||||
if e.count < 2 { |
||||
return 0 |
||||
} |
||||
return math.Sqrt(e.m2 / float64(e.count-1)) |
||||
} |
||||
|
||||
// trackNewLabels saves label names that haven't been seen before
|
||||
// so that they can be used to build the label fields in the exemplar frame
|
||||
func (e *exemplarSampler) trackNewLabels(seriesLabels, labels map[string]string) { |
||||
for k := range labels { |
||||
if _, ok := e.labelSet[k]; !ok { |
||||
e.labelSet[k] = struct{}{} |
||||
} |
||||
} |
||||
for k := range seriesLabels { |
||||
if _, ok := e.labelSet[k]; !ok { |
||||
e.labelSet[k] = struct{}{} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// getLabelNames returns sorted unique label names
|
||||
func (e *exemplarSampler) getLabelNames() []string { |
||||
labelNames := make([]string, 0, len(e.labelSet)) |
||||
for k := range e.labelSet { |
||||
labelNames = append(labelNames, k) |
||||
} |
||||
sort.SliceStable(labelNames, func(i, j int) bool { |
||||
return labelNames[i] < labelNames[j] |
||||
}) |
||||
return labelNames |
||||
} |
||||
|
||||
// getSampledExemplars returns the exemplars sorted by timestamp
|
||||
func (e *exemplarSampler) getSampledExemplars() []exemplar { |
||||
exemplars := make([]exemplar, 0, len(e.buckets)) |
||||
for _, b := range e.buckets { |
||||
// sort by value in descending order
|
||||
sort.SliceStable(b, func(i, j int) bool { |
||||
return b[i].val > b[j].val |
||||
}) |
||||
sampled := []exemplar{} |
||||
for _, ex := range b { |
||||
if len(sampled) == 0 { |
||||
sampled = append(sampled, ex) |
||||
continue |
||||
} |
||||
// only sample values at least 2 standard deviation distance to previously taken value
|
||||
prev := sampled[len(sampled)-1] |
||||
if e.standardDeviation() != 0.0 && prev.val-ex.val > e.standardDeviation()*2.0 { |
||||
sampled = append(sampled, ex) |
||||
} |
||||
} |
||||
exemplars = append(exemplars, sampled...) |
||||
} |
||||
sort.SliceStable(exemplars, func(i, j int) bool { |
||||
return exemplars[i].ts.Before(exemplars[j].ts) |
||||
}) |
||||
return exemplars |
||||
} |
@ -0,0 +1,8 @@ |
||||
{ |
||||
"RefId": "A", |
||||
"ExemplarQuery": true, |
||||
"Start": 1654086510, |
||||
"End": 1654086810, |
||||
"Step": 15, |
||||
"Expr": "histogram_quantile(0.99, sum(rate(traces_spanmetrics_duration_seconds_bucket[15s])) by (le))" |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,116 @@ |
||||
{ |
||||
"frames": [ |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "bar" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "a", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096945479 |
||||
], |
||||
[ |
||||
6 |
||||
], |
||||
[ |
||||
"EpTxMJ40fUus7aGY" |
||||
], |
||||
[ |
||||
"not in next" |
||||
] |
||||
] |
||||
} |
||||
}, |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "foo" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096955479,1600096965489 |
||||
], |
||||
[ |
||||
19,20 |
||||
], |
||||
[ |
||||
"Olp9XHlq763ccsfa","hCtjygkIHwAN9vs4" |
||||
] |
||||
] |
||||
} |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,156 @@ |
||||
// 🌟 This was machine generated. Do not edit. 🌟 |
||||
// |
||||
// Frame[0] { |
||||
// "custom": { |
||||
// "resultType": "exemplar" |
||||
// } |
||||
// } |
||||
// Name: |
||||
// Dimensions: 4 Fields by 1 Rows |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// | Name: Time | Name: Value | Name: traceID | Name: a | |
||||
// | Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=bar | Labels: | Labels: | |
||||
// | Type: []time.Time | Type: []float64 | Type: []string | Type: []string | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// | 2020-09-14 15:22:25.479 +0000 UTC | 6 | EpTxMJ40fUus7aGY | not in next | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// |
||||
// |
||||
// |
||||
// Frame[1] { |
||||
// "custom": { |
||||
// "resultType": "exemplar" |
||||
// } |
||||
// } |
||||
// Name: |
||||
// Dimensions: 3 Fields by 2 Rows |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// | Name: Time | Name: Value | Name: traceID | |
||||
// | Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=foo | Labels: | |
||||
// | Type: []time.Time | Type: []float64 | Type: []string | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// | 2020-09-14 15:22:35.479 +0000 UTC | 19 | Olp9XHlq763ccsfa | |
||||
// | 2020-09-14 15:22:45.489 +0000 UTC | 20 | hCtjygkIHwAN9vs4 | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// |
||||
// |
||||
// 🌟 This was machine generated. Do not edit. 🌟 |
||||
{ |
||||
"frames": [ |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "bar" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "a", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096945479 |
||||
], |
||||
[ |
||||
6 |
||||
], |
||||
[ |
||||
"EpTxMJ40fUus7aGY" |
||||
], |
||||
[ |
||||
"not in next" |
||||
] |
||||
] |
||||
} |
||||
}, |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "foo" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096955479, |
||||
1600096965489 |
||||
], |
||||
[ |
||||
19, |
||||
20 |
||||
], |
||||
[ |
||||
"Olp9XHlq763ccsfa", |
||||
"hCtjygkIHwAN9vs4" |
||||
] |
||||
] |
||||
} |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,39 @@ |
||||
🌟 This was machine generated. Do not edit. 🌟 |
||||
|
||||
Frame[0] { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
} |
||||
Name: |
||||
Dimensions: 4 Fields by 1 Rows |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
| Name: Time | Name: Value | Name: traceID | Name: a | |
||||
| Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=bar | Labels: | Labels: | |
||||
| Type: []time.Time | Type: []float64 | Type: []string | Type: []string | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
| 2020-09-14 15:22:25.479 +0000 UTC | 6 | EpTxMJ40fUus7aGY | not in next | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
|
||||
|
||||
|
||||
Frame[1] { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
} |
||||
Name: |
||||
Dimensions: 3 Fields by 2 Rows |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
| Name: Time | Name: Value | Name: traceID | |
||||
| Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=foo | Labels: | |
||||
| Type: []time.Time | Type: []float64 | Type: []string | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
| 2020-09-14 15:22:35.479 +0000 UTC | 19 | Olp9XHlq763ccsfa | |
||||
| 2020-09-14 15:22:45.489 +0000 UTC | 20 | hCtjygkIHwAN9vs4 | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
|
||||
|
||||
====== TEST DATA RESPONSE (arrow base64) ====== |
||||
FRAME=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 |
||||
FRAME=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 |
@ -0,0 +1,116 @@ |
||||
{ |
||||
"frames": [ |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "bar" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "a", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096945479 |
||||
], |
||||
[ |
||||
6 |
||||
], |
||||
[ |
||||
"EpTxMJ40fUus7aGY" |
||||
], |
||||
[ |
||||
"not in next" |
||||
] |
||||
] |
||||
} |
||||
}, |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "foo" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096955479,1600096965489 |
||||
], |
||||
[ |
||||
19,20 |
||||
], |
||||
[ |
||||
"Olp9XHlq763ccsfa","hCtjygkIHwAN9vs4" |
||||
] |
||||
] |
||||
} |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,156 @@ |
||||
// 🌟 This was machine generated. Do not edit. 🌟 |
||||
// |
||||
// Frame[0] { |
||||
// "custom": { |
||||
// "resultType": "exemplar" |
||||
// } |
||||
// } |
||||
// Name: |
||||
// Dimensions: 4 Fields by 1 Rows |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// | Name: Time | Name: Value | Name: traceID | Name: a | |
||||
// | Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=bar | Labels: | Labels: | |
||||
// | Type: []time.Time | Type: []float64 | Type: []string | Type: []string | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// | 2020-09-14 15:22:25.479 +0000 UTC | 6 | EpTxMJ40fUus7aGY | not in next | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
// |
||||
// |
||||
// |
||||
// Frame[1] { |
||||
// "custom": { |
||||
// "resultType": "exemplar" |
||||
// } |
||||
// } |
||||
// Name: |
||||
// Dimensions: 3 Fields by 2 Rows |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// | Name: Time | Name: Value | Name: traceID | |
||||
// | Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=foo | Labels: | |
||||
// | Type: []time.Time | Type: []float64 | Type: []string | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// | 2020-09-14 15:22:35.479 +0000 UTC | 19 | Olp9XHlq763ccsfa | |
||||
// | 2020-09-14 15:22:45.489 +0000 UTC | 20 | hCtjygkIHwAN9vs4 | |
||||
// +-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
// |
||||
// |
||||
// 🌟 This was machine generated. Do not edit. 🌟 |
||||
{ |
||||
"frames": [ |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "bar" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "a", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096945479 |
||||
], |
||||
[ |
||||
6 |
||||
], |
||||
[ |
||||
"EpTxMJ40fUus7aGY" |
||||
], |
||||
[ |
||||
"not in next" |
||||
] |
||||
] |
||||
} |
||||
}, |
||||
{ |
||||
"schema": { |
||||
"meta": { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
}, |
||||
"fields": [ |
||||
{ |
||||
"name": "Time", |
||||
"type": "time", |
||||
"typeInfo": { |
||||
"frame": "time.Time" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "Value", |
||||
"type": "number", |
||||
"typeInfo": { |
||||
"frame": "float64" |
||||
}, |
||||
"labels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "foo" |
||||
} |
||||
}, |
||||
{ |
||||
"name": "traceID", |
||||
"type": "string", |
||||
"typeInfo": { |
||||
"frame": "string" |
||||
} |
||||
} |
||||
] |
||||
}, |
||||
"data": { |
||||
"values": [ |
||||
[ |
||||
1600096955479, |
||||
1600096965489 |
||||
], |
||||
[ |
||||
19, |
||||
20 |
||||
], |
||||
[ |
||||
"Olp9XHlq763ccsfa", |
||||
"hCtjygkIHwAN9vs4" |
||||
] |
||||
] |
||||
} |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,39 @@ |
||||
🌟 This was machine generated. Do not edit. 🌟 |
||||
|
||||
Frame[0] { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
} |
||||
Name: |
||||
Dimensions: 4 Fields by 1 Rows |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
| Name: Time | Name: Value | Name: traceID | Name: a | |
||||
| Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=bar | Labels: | Labels: | |
||||
| Type: []time.Time | Type: []float64 | Type: []string | Type: []string | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
| 2020-09-14 15:22:25.479 +0000 UTC | 6 | EpTxMJ40fUus7aGY | not in next | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+----------------+ |
||||
|
||||
|
||||
|
||||
Frame[1] { |
||||
"custom": { |
||||
"resultType": "exemplar" |
||||
} |
||||
} |
||||
Name: |
||||
Dimensions: 3 Fields by 2 Rows |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
| Name: Time | Name: Value | Name: traceID | |
||||
| Labels: | Labels: __name__=test_exemplar_metric_total, instance=localhost:8090, job=prometheus, service=foo | Labels: | |
||||
| Type: []time.Time | Type: []float64 | Type: []string | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
| 2020-09-14 15:22:35.479 +0000 UTC | 19 | Olp9XHlq763ccsfa | |
||||
| 2020-09-14 15:22:45.489 +0000 UTC | 20 | hCtjygkIHwAN9vs4 | |
||||
+-----------------------------------+---------------------------------------------------------------------------------------------------+------------------+ |
||||
|
||||
|
||||
====== TEST DATA RESPONSE (arrow base64) ====== |
||||
FRAME=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 |
||||
FRAME=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 |
@ -0,0 +1,47 @@ |
||||
{ |
||||
"status": "success", |
||||
"data": [ |
||||
{ |
||||
"seriesLabels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "bar" |
||||
}, |
||||
"exemplars": [ |
||||
{ |
||||
"labels": { |
||||
"traceID": "EpTxMJ40fUus7aGY", |
||||
"a": "not in next" |
||||
}, |
||||
"value": "6", |
||||
"timestamp": 1600096945.479 |
||||
} |
||||
] |
||||
}, |
||||
{ |
||||
"seriesLabels": { |
||||
"__name__": "test_exemplar_metric_total", |
||||
"instance": "localhost:8090", |
||||
"job": "prometheus", |
||||
"service": "foo" |
||||
}, |
||||
"exemplars": [ |
||||
{ |
||||
"labels": { |
||||
"traceID": "Olp9XHlq763ccsfa" |
||||
}, |
||||
"value": "19", |
||||
"timestamp": 1600096955.479 |
||||
}, |
||||
{ |
||||
"labels": { |
||||
"traceID": "hCtjygkIHwAN9vs4" |
||||
}, |
||||
"value": "20", |
||||
"timestamp": 1600096965.489 |
||||
} |
||||
] |
||||
} |
||||
] |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue