Parcourir la source

Fix LoadBalancer metric emission

Niko Kovacevic il y a 4 ans
Parent
commit
80416d8ea0
1 fichiers modifiés avec 12 ajouts et 2 suppressions
  1. 12 2
      pkg/costmodel/metrics.go

+ 12 - 2
pkg/costmodel/metrics.go

@@ -407,6 +407,9 @@ func (cmme *CostModelMetricsEmitter) Start() bool {
 
 
 			// TODO: Pass CloudProvider into CostModel on instantiation so this isn't so awkward
 			// TODO: Pass CloudProvider into CostModel on instantiation so this isn't so awkward
 			nodes, err := cmme.Model.GetNodeCost(cmme.CloudProvider)
 			nodes, err := cmme.Model.GetNodeCost(cmme.CloudProvider)
+			if err != nil {
+				log.Warningf("Metric emission: error getting Node cost: %s", err)
+			}
 			for nodeName, node := range nodes {
 			for nodeName, node := range nodes {
 				// Emit costs, guarding against NaN inputs for custom pricing.
 				// Emit costs, guarding against NaN inputs for custom pricing.
 				cpuCost, _ := strconv.ParseFloat(node.VCPUCost, 64)
 				cpuCost, _ := strconv.ParseFloat(node.VCPUCost, 64)
@@ -463,6 +466,9 @@ func (cmme *CostModelMetricsEmitter) Start() bool {
 
 
 			// TODO: Pass CloudProvider into CostModel on instantiation so this isn't so awkward
 			// TODO: Pass CloudProvider into CostModel on instantiation so this isn't so awkward
 			loadBalancers, err := cmme.Model.GetLBCost(cmme.CloudProvider)
 			loadBalancers, err := cmme.Model.GetLBCost(cmme.CloudProvider)
+			if err != nil {
+				log.Warningf("Metric emission: error getting LoadBalancer cost: %s", err)
+			}
 			for lbKey, lb := range loadBalancers {
 			for lbKey, lb := range loadBalancers {
 				// TODO: parse (if necessary) and calculate cost associated with loadBalancer based on dynamic cloud prices fetched into each lb struct on GetLBCost() call
 				// TODO: parse (if necessary) and calculate cost associated with loadBalancer based on dynamic cloud prices fetched into each lb struct on GetLBCost() call
 				keyParts := getLabelStringsFromKey(lbKey)
 				keyParts := getLabelStringsFromKey(lbKey)
@@ -474,7 +480,7 @@ func (cmme *CostModelMetricsEmitter) Start() bool {
 				}
 				}
 				cmme.LBCostRecorder.WithLabelValues(ingressIP, namespace, serviceName).Set(lb.Cost)
 				cmme.LBCostRecorder.WithLabelValues(ingressIP, namespace, serviceName).Set(lb.Cost)
 
 
-				labelKey := getKeyFromLabelStrings(namespace, serviceName)
+				labelKey := getKeyFromLabelStrings(ingressIP, namespace, serviceName)
 				loadBalancerSeen[labelKey] = true
 				loadBalancerSeen[labelKey] = true
 			}
 			}
 
 
@@ -607,7 +613,11 @@ func (cmme *CostModelMetricsEmitter) Start() bool {
 			for labelString, seen := range loadBalancerSeen {
 			for labelString, seen := range loadBalancerSeen {
 				if !seen {
 				if !seen {
 					labels := getLabelStringsFromKey(labelString)
 					labels := getLabelStringsFromKey(labelString)
-					cmme.LBCostRecorder.DeleteLabelValues(labels...)
+					ok := cmme.LBCostRecorder.DeleteLabelValues(labels...)
+					if !ok {
+						log.Warningf("Metric emission: failed to delete LoadBalancer with labels: %v", labels)
+					}
+					delete(loadBalancerSeen, labelString)
 				} else {
 				} else {
 					loadBalancerSeen[labelString] = false
 					loadBalancerSeen[labelString] = false
 				}
 				}