Jelajahi Sumber

Profile query results

Matt Bolt 6 tahun lalu
induk
melakukan
0b18b4f8c4
1 mengubah file dengan 67 tambahan dan 16 penghapusan
  1. 67 16
      costmodel/costmodel.go

+ 67 - 16
costmodel/costmodel.go

@@ -1335,83 +1335,127 @@ func (cm *CostModel) ComputeCostDataRange(cli prometheusClient.Client, clientset
 	var promErr error
 	var resultRAMRequests interface{}
 	go func() {
-		resultRAMRequests, promErr = QueryRange(cli, queryRAMRequests, start, end, window)
+		defer measureTime(time.Now(), queryRAMRequests)
 		defer wg.Done()
+
+		resultRAMRequests, promErr = QueryRange(cli, queryRAMRequests, start, end, window)
 	}()
 	var resultRAMUsage interface{}
 	go func() {
-		resultRAMUsage, promErr = QueryRange(cli, queryRAMUsage, start, end, window)
+		defer measureTime(time.Now(), queryRAMUsage)
 		defer wg.Done()
+
+		resultRAMUsage, promErr = QueryRange(cli, queryRAMUsage, start, end, window)
 	}()
 	var resultCPURequests interface{}
 	go func() {
-		resultCPURequests, promErr = QueryRange(cli, queryCPURequests, start, end, window)
+		defer measureTime(time.Now(), queryCPURequests)
 		defer wg.Done()
+
+		resultCPURequests, promErr = QueryRange(cli, queryCPURequests, start, end, window)
 	}()
 	var resultCPUUsage interface{}
 	go func() {
-		resultCPUUsage, promErr = QueryRange(cli, queryCPUUsage, start, end, window)
+		defer measureTime(time.Now(), queryCPUUsage)
 		defer wg.Done()
+
+		resultCPUUsage, promErr = QueryRange(cli, queryCPUUsage, start, end, window)
 	}()
 	var resultGPURequests interface{}
 	go func() {
-		resultGPURequests, promErr = QueryRange(cli, queryGPURequests, start, end, window)
+		defer measureTime(time.Now(), queryGPURequests)
 		defer wg.Done()
+
+		resultGPURequests, promErr = QueryRange(cli, queryGPURequests, start, end, window)
 	}()
 	var resultPVRequests interface{}
 	go func() {
-		resultPVRequests, promErr = QueryRange(cli, queryPVRequests, start, end, window)
+		defer measureTime(time.Now(), queryPVRequests)
 		defer wg.Done()
+
+		resultPVRequests, promErr = QueryRange(cli, queryPVRequests, start, end, window)
 	}()
 	var resultNetZoneRequests interface{}
 	go func() {
-		resultNetZoneRequests, promErr = QueryRange(cli, queryNetZoneRequests, start, end, window)
+		defer measureTime(time.Now(), queryNetZoneRequests)
 		defer wg.Done()
+
+		resultNetZoneRequests, promErr = QueryRange(cli, queryNetZoneRequests, start, end, window)
 	}()
 	var resultNetRegionRequests interface{}
 	go func() {
-		resultNetRegionRequests, promErr = QueryRange(cli, queryNetRegionRequests, start, end, window)
+		defer measureTime(time.Now(), queryNetRegionRequests)
 		defer wg.Done()
+
+		resultNetRegionRequests, promErr = QueryRange(cli, queryNetRegionRequests, start, end, window)
 	}()
 	var resultNetInternetRequests interface{}
 	go func() {
-		resultNetInternetRequests, promErr = QueryRange(cli, queryNetInternetRequests, start, end, window)
+		defer measureTime(time.Now(), queryNetInternetRequests)
 		defer wg.Done()
+
+		resultNetInternetRequests, promErr = QueryRange(cli, queryNetInternetRequests, start, end, window)
 	}()
 	var pvPodAllocationResults interface{}
 	go func() {
-		pvPodAllocationResults, promErr = QueryRange(cli, fmt.Sprintf(queryPVCAllocation, windowString), start, end, window)
+		pvAllocQuery := fmt.Sprintf(queryPVCAllocation, windowString)
+
+		defer measureTime(time.Now(), pvAllocQuery)
 		defer wg.Done()
+
+		pvPodAllocationResults, promErr = QueryRange(cli, pvAllocQuery, start, end, window)
 	}()
 	var pvCostResults interface{}
 	go func() {
-		pvCostResults, promErr = QueryRange(cli, fmt.Sprintf(queryPVHourlyCost, windowString), start, end, window)
+		pvHourlyCostQuery := fmt.Sprintf(queryPVHourlyCost, windowString)
+
+		defer measureTime(time.Now(), pvHourlyCostQuery)
 		defer wg.Done()
+
+		pvCostResults, promErr = QueryRange(cli, pvHourlyCostQuery, start, end, window)
 	}()
 	var nsLabelsResults interface{}
 	go func() {
-		nsLabelsResults, promErr = QueryRange(cli, fmt.Sprintf(queryNSLabels, windowString), start, end, window)
+		nsLabelQuery := fmt.Sprintf(queryNSLabels, windowString)
+
+		defer measureTime(time.Now(), nsLabelQuery)
 		defer wg.Done()
+
+		nsLabelsResults, promErr = QueryRange(cli, nsLabelQuery, start, end, window)
 	}()
 	var podLabelsResults interface{}
 	go func() {
-		podLabelsResults, promErr = QueryRange(cli, fmt.Sprintf(queryPodLabels, windowString), start, end, window)
+		podLabelQuery := fmt.Sprintf(queryPodLabels, windowString)
+
+		defer measureTime(time.Now(), podLabelQuery)
 		defer wg.Done()
+
+		podLabelsResults, promErr = QueryRange(cli, podLabelQuery, start, end, window)
 	}()
 	var serviceLabelsResults interface{}
 	go func() {
-		serviceLabelsResults, promErr = QueryRange(cli, fmt.Sprintf(queryServiceLabels, windowString), start, end, window)
+		serviceLabelQuery := fmt.Sprintf(queryServiceLabels, windowString)
+
+		defer measureTime(time.Now(), serviceLabelQuery)
 		defer wg.Done()
+
+		serviceLabelsResults, promErr = QueryRange(cli, serviceLabelQuery, start, end, window)
 	}()
 	var deploymentLabelsResults interface{}
 	go func() {
-		deploymentLabelsResults, promErr = QueryRange(cli, fmt.Sprintf(queryDeploymentLabels, windowString), start, end, window)
+		depLabelQuery := fmt.Sprintf(queryDeploymentLabels, windowString)
+
+		defer measureTime(time.Now(), depLabelQuery)
 		defer wg.Done()
+
+		deploymentLabelsResults, promErr = QueryRange(cli, depLabelQuery, start, end, window)
 	}()
 	var normalizationResults interface{}
 	go func() {
-		normalizationResults, promErr = QueryRange(cli, normalization, start, end, window)
+		defer measureTime(time.Now(), normalization)
 		defer wg.Done()
+
+		normalizationResults, promErr = QueryRange(cli, normalization, start, end, window)
 	}()
 
 	podDeploymentsMapping := make(map[string]map[string][]string)
@@ -1439,6 +1483,8 @@ func (cm *CostModel) ComputeCostDataRange(cli prometheusClient.Client, clientset
 
 	wg.Wait()
 
+	defer measureTime(time.Now(), "Processing Query Data")
+
 	if promErr != nil {
 		return nil, fmt.Errorf("Error querying prometheus: %s", promErr.Error())
 	}
@@ -2561,3 +2607,8 @@ func wrapPrometheusError(qr interface{}) (string, error) {
 	eStr, ok := e.(string)
 	return eStr, nil
 }
+
+func measureTime(start time.Time, name string) {
+	elapsed := time.Since(start)
+	klog.V(1).Infof("[Profile][%s] %s", elapsed, name)
+}