要在 Go 语言中获取不包含 metrics 和 timestamp 的 JSON 数据,您可以使用 Prometheus 的 API 查询端点来请求数据。具体步骤如下:
- 首先,在您的 Go 项目中导入必要的依赖项:
import ("encoding/json""fmt""io/ioutil""net/http")
- 然后,构造一个 HTTP 请求,查询 Prometheus API 并返回 JSON 数据:
url := "http://localhost:9090/api/v1/query?query=<your-query-here>"req, err := http.NewRequest("GET", url, nil)if err != nil {panic(err)}client := &http.Client{}resp, err := client.Do(req)if err != nil {panic(err)}defer resp.Body.Close()body, err := ioutil.ReadAll(resp.Body)if err != nil {panic(err)}var result interface{}err = json.Unmarshal(body, &result)if err != nil {panic(err)}
在此代码中,将 up 指标,请使用以下代码:
url := "http://localhost:9090/api/v1/query?query=up"
- 最后,您可以使用
json.Marshal()函数将结果转换为 JSON 字符串,然后对其进行处理。
jsonResult, err := json.Marshal(result)if err != nil {panic(err)}fmt.Println(string(jsonResult))
请注意,这样的结果仍然包含一些其他元数据(例如 status 和 data)。您可以根据需要从 JSON 对象中提取数据。例如,如果您只想获取查询结果的值,请使用以下代码:
values := result.(map[string]interface{})["data"].(map[string]interface{})["result"].([]interface{})for _, value := range values {fmt.Println(value.(map[string]interface{})["value"])}




