// podListMetrics returns a list of metric timeseries for each for the listed nodes func (a *HistoricalApi) podListMetrics(request *restful.Request, response *restful.Response) { start, end, err := getStartEndTimeHistorical(request) if err != nil { response.WriteError(http.StatusBadRequest, err) return } keys := []core.HistoricalKey{} if request.PathParameter("pod-id-list") != "" { for _, podId := range strings.Split(request.PathParameter("pod-id-list"), ",") { key := core.HistoricalKey{ ObjectType: core.MetricSetTypePod, PodId: podId, } keys = append(keys, key) } } else { for _, podName := range strings.Split(request.PathParameter("pod-list"), ",") { key := core.HistoricalKey{ ObjectType: core.MetricSetTypePod, NamespaceName: request.PathParameter("namespace-name"), PodName: podName, } keys = append(keys, key) } } labels, err := getLabels(request) if err != nil { response.WriteError(http.StatusBadRequest, err) return } metricName := request.PathParameter("metric-name") convertedMetricName := convertMetricName(metricName) var metrics map[core.HistoricalKey][]core.TimestampedMetricValue if labels != nil { metrics, err = a.historicalSource.GetLabeledMetric(convertedMetricName, labels, keys, start, end) } else { metrics, err = a.historicalSource.GetMetric(convertedMetricName, keys, start, end) } if err != nil { response.WriteError(http.StatusInternalServerError, err) return } result := types.MetricResultList{ Items: make([]types.MetricResult, 0, len(keys)), } for _, key := range keys { result.Items = append(result.Items, exportTimestampedMetricValue(metrics[key])) } response.PrettyPrint(false) response.WriteEntity(result) }
func (a *Api) podListMetrics(request *restful.Request, response *restful.Response) { start, end, err := getStartEndTime(request) if err != nil { response.WriteError(http.StatusBadRequest, err) return } ns := request.PathParameter("namespace-name") keys := []string{} metricName := request.PathParameter("metric-name") convertedMetricName := convertMetricName(metricName) for _, podName := range strings.Split(request.PathParameter("pod-list"), ",") { keys = append(keys, core.PodKey(ns, podName)) } metrics := a.metricSink.GetMetric(convertedMetricName, keys, start, end) result := types.MetricResultList{ Items: make([]types.MetricResult, 0, len(keys)), } for _, key := range keys { result.Items = append(result.Items, exportTimestampedMetricValue(metrics[key])) } response.PrettyPrint(false) response.WriteEntity(result) }
func (a *Api) exportMetrics(_ *restful.Request, response *restful.Response) { response.PrettyPrint(false) response.WriteEntity(a.processMetricsRequest(a.metricSink.GetShortStore())) }