Prometheus plugin: Allow vector result (support for VictoriaMetrics) (#23437)

This commit is contained in:
Joachim Folz 2025-09-06 18:11:29 +02:00 • committed by GitHub
parent 3fe4943757
commit 4323d1b0c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -93,12 +93,24 @@ func (p *Prometheus) FloatGetter() (func() (float64, error), error) {
return 0, err
}
if res.Type() != model.ValScalar {
return 0, fmt.Errorf("query returned value of type %q, expected %q, consider wrapping query in scalar()", res.Type().String(), model.ValScalar.String())
if res.Type() == model.ValScalar {
scalarVal := res.(*model.Scalar)
return float64(scalarVal.Value), nil
}
scalarVal := res.(*model.Scalar)
return float64(scalarVal.Value), nil
if res.Type() == model.ValVector {
vectorVal := res.(model.Vector)
if vectorVal.Len() != 1 {
return 0, fmt.Errorf("query must return exactly 1 metric, got %d instead", vectorVal.Len())
}
metric := vectorVal[0]
if metric.Histogram != nil {
return 0, fmt.Errorf("query returned histogram, expected value")
}
return float64(metric.Value), nil
}
return 0, fmt.Errorf("query returned value of type %q, expected %q or %q", res.Type().String(), model.ValScalar.String(), model.ValVector.String())
}, nil
}