3 回答
TA贡献1856条经验 获得超11个赞
来自的结果QueryRange有类型model.Matrix。
这将包含一个类型的指针*SampleStream。由于您的示例仅包含一个 SampleStream,因此我们可以直接访问第一个。
SampleStream 然后有一个MetricandValues类型[]SamplePair。您的目标是样本对的切片。在此之上,我们可以迭代并构建例如地图。
mapData := make(map[model.Time]model.SampleValue)
for _, val := range result.(model.Matrix)[0].Values {
mapData[val.Timestamp] = val.Value
}
fmt.Println(mapData)
TA贡献1921条经验 获得超9个赞
也许你可以在这个问题中找到你的答案
https://github.com/prometheus/client_golang/issues/194
switch {
case val.Type() == model.ValScalar:
scalarVal := val.(*model.Scalar)
// handle scalar stuff
case val.Type() == model.ValVector:
vectorVal := val.(model.Vector)
for _, elem := range vectorVal {
// do something with each element in the vector
// etc
TA贡献1786条经验 获得超12个赞
您必须知道要返回的结果类型。例如,model.Value 可以是 Scalar、Vector、Matrix 或 String 类型。这些类型中的每一种都有自己获取数据和时间戳的方式。例如,一个 Vector 有一个 Sample 类型的数组,其中包含您要查找的数据。如果您想更深入地研究,godocs 和 prom/go 客户端的 github repo 有非常好的文档。
- 3 回答
- 0 关注
- 447 浏览
添加回答
举报