使用github上的一個庫
1.安裝庫
go get github.com/prometheus/client_golang
2.導入
在import中導入,記得要在go.mod中更新一下
Address: "http://xx.xx.xx:9090", 用你的prometheus的地址
result, warnings, err := v1api.Query(ctx, "node_cpu_info{instance=\"computer1\"}", time.Now(), proV1.WithTimeout(15*time.Second)) 這邊的用你的PROMQL查詢語句
可以參考https://prometheus.io/docs/prometheus/latest/querying/api/
Go
package main
import (
"context"
"fmt"
"time"
"github.com/prometheus/client_golang/api"
proV1 "github.com/prometheus/client_golang/api/prometheus/v1"
"github.com/prometheus/common/model"
)
var Client api.Client
func init() {
Client, _ = CreatClient()
}
func CreatClient() (client api.Client, err error) {
client, err = api.NewClient(api.Config{
Address: "http://xx.xx.xx:9090",
})
if err != nil {
fmt.Printf("Error creating client: %v\n", err)
return nil, err
}
return client, nil
}
func Query() (result model.Value, err error) {
v1api := proV1.NewAPI(Client)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
result, warnings, err := v1api.Query(ctx, "node_cpu_info{instance=\"computer1\"}", time.Now(), proV1.WithTimeout(15*time.Second))
if err != nil {
return nil, err
}
if len(warnings) > 0 {
fmt.Printf("Warnings: %v\n", warnings)
}
return result, nil
}
func main() {
result, err := Label()
if err != nil {
fmt.Errorf("%q", err)
}
fmt.Printf("Result:\n%v\n", result)
}