调用thanos的/api/v1/rules接口,match[]这个参数到底怎么传?
我是一个JAVA coder不会go语言,但是我现在有一个需求就是调用这个thanos接口获取所有的rules拿到所有的关于alerts的报警规则,然后需要根据labels中的key为namespace,value为前端传进去的任意值做筛选条件,返回匹配所有属于该namespace下的所有告警规则。
于是我仿照kubesphere里面的代码,写了一个简单的go程序
func main() {
// 创建 Prometheus API 客户端
client, err := api.NewClient(api.Config{
Address: "http://thanos-ruler-operated.kubesphere-monitoring-system:10902",
})
u := client.URL("/api/v1/rules", nil)
q := u.Query()
q.Add("type", "alert")
if err != nil {
log.Fatalf("Error creating Prometheus client: %v", err)
}
matchers := []*promlabels.Matcher{{
Type: promlabels.MatchEqual,
Name: "rule_level",
Value: "namespace",
}, {
Type: promlabels.MatchEqual,
Name: "namespace",
Value: "dec",
}}
vs := parser.VectorSelector{
LabelMatchers: matchers,
}
q.Add("match[]", vs.String())
fmt.Printf("Result:\n%v\n", q.Encode())
u.RawQuery = q.Encode()
// 打印结果
fmt.Printf("Result:\n%v\n", u.String())
}
最终得到的了URL,但是这个URL生成之后,直接丢到浏览器上返回的结果是空的,求大神指导!