in action/prometheus/metrics.go [94:120]
func queryPromMetric(prometheusURL, query string) (*PromResponse, error) {
queryURL := fmt.Sprintf("%s/api/v1/query?query=%s", prometheusURL, url.QueryEscape(query))
resp, err := http.Get(queryURL)
if err != nil {
return nil, fmt.Errorf("error querying Prometheus: %w", err)
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
tool.Logger.Errorf("failed to close response body: %v", err)
return
}
}(resp.Body)
// Read the response body
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("error reading response body: %w", err)
}
// Parse JSON response into the PrometheusResponse structure
var result PromResponse
if err := json.Unmarshal(body, &result); err != nil {
return nil, fmt.Errorf("error unmarshalling JSON: %w", err)
}
return &result, nil
}