Skip to content

Commit d226f61

Browse files
david-gangclaude
andauthored
refactor(queue-controller): use prometheus.Labels map in queue metrics (#1752)
Signed-off-by: David Gang <dgang@lightricks.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 970ee4e commit d226f61

1 file changed

Lines changed: 23 additions & 23 deletions

File tree

pkg/queuecontroller/metrics/metrics.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ var (
4141
queueAllocatedMemory *prometheus.GaugeVec
4242

4343
additionalQueueLabelKeys []string
44+
additionalMetricLabelKeys []string
4445
queueLabelToDefaultMetricValue map[string]string
4546
)
4647

@@ -70,7 +71,7 @@ func InitMetrics(namespace string, queueLabelToMetricLabelMap, queueLabelToDefau
7071
}
7172
sort.Strings(sortedQueueLabelKeys)
7273

73-
additionalMetricLabelKeys := make([]string, 0, len(queueLabelToMetricLabelMap))
74+
additionalMetricLabelKeys = make([]string, 0, len(queueLabelToMetricLabelMap))
7475
for _, queueLabelKey := range sortedQueueLabelKeys {
7576
metricLabelKey := queueLabelToMetricLabelMap[queueLabelKey]
7677
additionalQueueLabelKeys = append(additionalQueueLabelKeys, queueLabelKey)
@@ -151,8 +152,6 @@ func SetQueueMetrics(queue *v2.Queue) {
151152

152153
ResetQueueMetrics(queue.Name)
153154

154-
additionalMetricLabelValues := getAdditionalMetricLabelValues(queue.Labels)
155-
156155
queueName := queue.Name
157156
queueDisplayName := queue.Spec.DisplayName
158157
gpuQuota := getGpuQuota(queue.Spec.Resources)
@@ -162,18 +161,22 @@ func SetQueueMetrics(queue *v2.Queue) {
162161
allocatedCpus := getAllocatedCpuCores(queue.Status)
163162
allocatedMemory := getAllocatedMemoryBytes(queue.Status)
164163

165-
queueQuotaMetricValues := append(
166-
[]string{queueName, queueName, queueDisplayName},
167-
additionalMetricLabelValues...,
168-
)
164+
queueLabels := prometheus.Labels{
165+
queueNameLabel: queueName,
166+
queueMetadataNameLabel: queueName,
167+
queueDisplayNameLabel: queueDisplayName,
168+
}
169+
for metricLabelKey, value := range getAdditionalMetricLabelValues(queue.Labels) {
170+
queueLabels[metricLabelKey] = value
171+
}
169172

170-
queueInfo.WithLabelValues(queueQuotaMetricValues...).Set(1)
171-
queueDeservedGPUs.WithLabelValues(queueQuotaMetricValues...).Set(gpuQuota)
172-
queueQuotaCPU.WithLabelValues(queueQuotaMetricValues...).Set(cpuQuota)
173-
queueQuotaMemory.WithLabelValues(queueQuotaMetricValues...).Set(memoryQuota)
174-
queueAllocatedGpus.WithLabelValues(queueQuotaMetricValues...).Set(allocatedGpus)
175-
queueAllocatedCpus.WithLabelValues(queueQuotaMetricValues...).Set(allocatedCpus)
176-
queueAllocatedMemory.WithLabelValues(queueQuotaMetricValues...).Set(allocatedMemory)
173+
queueInfo.With(queueLabels).Set(1)
174+
queueDeservedGPUs.With(queueLabels).Set(gpuQuota)
175+
queueQuotaCPU.With(queueLabels).Set(cpuQuota)
176+
queueQuotaMemory.With(queueLabels).Set(memoryQuota)
177+
queueAllocatedGpus.With(queueLabels).Set(allocatedGpus)
178+
queueAllocatedCpus.With(queueLabels).Set(allocatedCpus)
179+
queueAllocatedMemory.With(queueLabels).Set(allocatedMemory)
177180
}
178181

179182
func ResetQueueMetrics(queueName string) {
@@ -245,23 +248,20 @@ func roundResourceQuantity(quantity resource.Quantity) float64 {
245248
return math.Round(quantity.AsApproximateFloat64()*10000) / 10000
246249
}
247250

248-
func getAdditionalMetricLabelValues(queueLabels map[string]string) []string {
249-
labelValues := make([]string, len(additionalQueueLabelKeys))
250-
251-
// we already added the additional metric label keys to each metric using the original order,
252-
// so we can just iterate over the additionalQueueLabelKeys - they should have the same order.
251+
func getAdditionalMetricLabelValues(queueLabels map[string]string) prometheus.Labels {
252+
labelValues := make(prometheus.Labels, len(additionalQueueLabelKeys))
253253

254254
for i, queueLabelKey := range additionalQueueLabelKeys {
255+
metricLabelKey := additionalMetricLabelKeys[i]
255256
if value, exists := queueLabels[queueLabelKey]; exists {
256-
labelValues[i] = value
257+
labelValues[metricLabelKey] = value
257258
} else if defaultValue, defaultExists := queueLabelToDefaultMetricValue[queueLabelKey]; defaultExists {
258-
labelValues[i] = defaultValue
259+
labelValues[metricLabelKey] = defaultValue
259260
} else {
260-
labelValues[i] = "" // Default to empty string if no value exists
261+
labelValues[metricLabelKey] = "" // Default to empty string if no value exists
261262
}
262263
}
263264
return labelValues
264-
265265
}
266266

267267
func GetQueueInfoMetric() *prometheus.GaugeVec {

0 commit comments

Comments
 (0)