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條經驗 獲得超13個贊
您必須知道要返回的結果類型。例如,model.Value 可以是 Scalar、Vector、Matrix 或 String 類型。這些類型中的每一種都有自己獲取數據和時間戳的方式。例如,一個 Vector 有一個 Sample 類型的數組,其中包含您要查找的數據。如果您想更深入地研究,godocs 和 prom/go 客戶端的 github repo 有非常好的文檔。
- 3 回答
- 0 關注
- 522 瀏覽
添加回答
舉報