使用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/
- 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)
- }