فهرست منبع

fix prometheus endpoint

Alexander Belanger 4 سال پیش
والد
کامیت
bb18d7a299
2فایلهای تغییر یافته به همراه9 افزوده شده و 9 حذف شده
  1. 1 5
      api/server/handlers/cluster/get_pod_metrics.go
  2. 8 4
      internal/kubernetes/prometheus/metrics.go

+ 1 - 5
api/server/handlers/cluster/get_pod_metrics.go

@@ -61,9 +61,5 @@ func (c *GetPodMetricsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 		return
 	}
 
-	s := string(rawQuery)
-
-	var res types.GetPodMetricsResponse = &s
-
-	c.WriteResult(w, r, res)
+	c.WriteResult(w, r, rawQuery)
 }

+ 8 - 4
internal/kubernetes/prometheus/metrics.go

@@ -93,7 +93,7 @@ func QueryPrometheus(
 	clientset kubernetes.Interface,
 	service *v1.Service,
 	opts *QueryOpts,
-) ([]byte, error) {
+) ([]*promParsedSingletonQuery, error) {
 	if len(service.Spec.Ports) == 0 {
 		return nil, fmt.Errorf("prometheus service has no exposed ports to query")
 	}
@@ -221,10 +221,14 @@ type promParsedSingletonQuery struct {
 	Results []promParsedSingletonQueryResult `json:"results"`
 }
 
-func parseQuery(rawQuery []byte, metric string) ([]byte, error) {
+func parseQuery(rawQuery []byte, metric string) ([]*promParsedSingletonQuery, error) {
 	rawQueryObj := &promRawQuery{}
 
-	json.Unmarshal(rawQuery, rawQueryObj)
+	err := json.Unmarshal(rawQuery, rawQueryObj)
+
+	if err != nil {
+		return nil, err
+	}
 
 	res := make([]*promParsedSingletonQuery, 0)
 
@@ -266,7 +270,7 @@ func parseQuery(rawQuery []byte, metric string) ([]byte, error) {
 		res = append(res, singleton)
 	}
 
-	return json.Marshal(res)
+	return res, nil
 }
 
 func getSelectionRegex(kind, name string) (string, error) {