Skip to content

Commit 101a55d

Browse files
authored
Merge pull request #2150 from vimalk78/fix-node-name
fix(exporter): move WithNodeName option to collector
2 parents 229c8c0 + 32a40b8 commit 101a55d

File tree

3 files changed

+98
-2
lines changed

3 files changed

+98
-2
lines changed

cmd/kepler/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ func createPrometheusExporter(logger *slog.Logger, cfg *config.Config, apiServer
197197
pm,
198198
prometheus.WithLogger(logger),
199199
prometheus.WithProcFSPath(cfg.Host.ProcFS),
200+
prometheus.WithNodeName(cfg.Kube.Node),
200201
)
201202
if err != nil {
202203
return nil, fmt.Errorf("failed to create Prometheus collectors: %w", err)
@@ -210,7 +211,6 @@ func createPrometheusExporter(logger *slog.Logger, cfg *config.Config, apiServer
210211
prometheus.WithLogger(logger),
211212
prometheus.WithCollectors(collectors),
212213
prometheus.WithDebugCollectors(debugCollectors),
213-
prometheus.WithNodeName(cfg.Kube.Node),
214214
)
215215

216216
return promExporter, nil

internal/exporter/prometheus/collector/power_collector_test.go

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,27 @@ func TestPowerCollector(t *testing.T) {
151151
},
152152
}
153153

154+
testPods := monitor.Pods{
155+
"test-pod": {
156+
Name: "test-pod",
157+
Namespace: "default",
158+
Zones: monitor.ZoneUsageMap{
159+
packageZone: {
160+
EnergyTotal: 100 * device.Joule,
161+
Power: 5 * device.Watt,
162+
},
163+
},
164+
},
165+
}
166+
154167
// Create test Snapshot
155168
testData := &monitor.Snapshot{
156169
Timestamp: time.Now(),
157170
Node: &testNodeData,
158171
Processes: testProcesses,
159172
Containers: testContainers,
160173
VirtualMachines: testVMs,
174+
Pods: testPods,
161175
}
162176

163177
// Mock Snapshot method
@@ -200,6 +214,9 @@ func TestPowerCollector(t *testing.T) {
200214

201215
"kepler_vm_cpu_joules_total",
202216
"kepler_vm_cpu_watts",
217+
218+
"kepler_pod_cpu_joules_total",
219+
"kepler_pod_cpu_watts",
203220
}
204221

205222
assert.ElementsMatch(t, expectedMetricNames, metricNames(metrics))
@@ -309,6 +326,86 @@ func TestPowerCollector(t *testing.T) {
309326
})
310327
})
311328

329+
t.Run("Process Metrics Node Name Label", func(t *testing.T) {
330+
metrics, err := registry.Gather()
331+
assert.NoError(t, err)
332+
333+
for _, metric := range metrics {
334+
if metric.GetName() == "kepler_process_cpu_joules_total" {
335+
for _, m := range metric.GetMetric() {
336+
nodeName := valueOfLabel(m, "node_name")
337+
assert.Equal(t, "test-node", nodeName, "Process metrics should have node_name label")
338+
}
339+
}
340+
if metric.GetName() == "kepler_process_cpu_watts" {
341+
for _, m := range metric.GetMetric() {
342+
nodeName := valueOfLabel(m, "node_name")
343+
assert.Equal(t, "test-node", nodeName, "Process metrics should have node_name label")
344+
}
345+
}
346+
}
347+
})
348+
349+
t.Run("Container Metrics Node Name Label", func(t *testing.T) {
350+
metrics, err := registry.Gather()
351+
assert.NoError(t, err)
352+
353+
for _, metric := range metrics {
354+
if metric.GetName() == "kepler_container_cpu_joules_total" {
355+
for _, m := range metric.GetMetric() {
356+
nodeName := valueOfLabel(m, "node_name")
357+
assert.Equal(t, "test-node", nodeName, "Container metrics should have node_name label")
358+
}
359+
}
360+
if metric.GetName() == "kepler_container_cpu_watts" {
361+
for _, m := range metric.GetMetric() {
362+
nodeName := valueOfLabel(m, "node_name")
363+
assert.Equal(t, "test-node", nodeName, "Container metrics should have node_name label")
364+
}
365+
}
366+
}
367+
})
368+
369+
t.Run("VM Metrics Node Name Label", func(t *testing.T) {
370+
metrics, err := registry.Gather()
371+
assert.NoError(t, err)
372+
373+
for _, metric := range metrics {
374+
if metric.GetName() == "kepler_vm_cpu_joules_total" {
375+
for _, m := range metric.GetMetric() {
376+
nodeName := valueOfLabel(m, "node_name")
377+
assert.Equal(t, "test-node", nodeName, "VM metrics should have node_name label")
378+
}
379+
}
380+
if metric.GetName() == "kepler_vm_cpu_watts" {
381+
for _, m := range metric.GetMetric() {
382+
nodeName := valueOfLabel(m, "node_name")
383+
assert.Equal(t, "test-node", nodeName, "VM metrics should have node_name label")
384+
}
385+
}
386+
}
387+
})
388+
389+
t.Run("Pod Metrics Node Name Label", func(t *testing.T) {
390+
metrics, err := registry.Gather()
391+
assert.NoError(t, err)
392+
393+
for _, metric := range metrics {
394+
if metric.GetName() == "kepler_pod_cpu_joules_total" {
395+
for _, m := range metric.GetMetric() {
396+
nodeName := valueOfLabel(m, "node_name")
397+
assert.Equal(t, "test-node", nodeName, "Pod metrics should have node_name label")
398+
}
399+
}
400+
if metric.GetName() == "kepler_pod_cpu_watts" {
401+
for _, m := range metric.GetMetric() {
402+
nodeName := valueOfLabel(m, "node_name")
403+
assert.Equal(t, "test-node", nodeName, "Pod metrics should have node_name label")
404+
}
405+
}
406+
}
407+
})
408+
312409
// Verify mock expectations
313410
mockMonitor.AssertExpectations(t)
314411
}

internal/resource/procfs_reader_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,6 @@ func TestRefresh_PodInformer(t *testing.T) {
466466
mockProc.On("Comm").Return("test-process", nil)
467467
mockProc.On("CmdLine").Return([]string{"/usr/bin/test", "--arg1"}, nil).Once()
468468
mockProc.On("Executable").Return("/usr/bin/test", nil)
469-
containerID := "container123"
470469
containerID, cgPath := mockContainerIDAndPath(DockerRuntime)
471470
mockProc.On("Cgroups").Return([]cGroup{{Path: cgPath}}, nil)
472471
mockProc.On("CPUTime").Return(10.0, nil).Once()

0 commit comments

Comments
 (0)