You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- `PowerReading`struct contains `[]Chassis` slice, each with `ID` and `[]Reading` for individual PowerControl entries
233
-
- Iterates through all available chassis on the BMC and their PowerControl arrays
234
-
- Filters and returns only PowerControl entries with valid power readings
235
-
- Each reading includes `ControlID`, `Name`, and `Power` for granular power domain monitoring
236
-
- Exposes individual PowerControl entries as separate metrics (e.g., Server Power Control, CPU Sub-system Power, Memory Power)
235
+
- `Power()`method returns `*PowerReading` (single reading containing multiple chassis with detailed power supply data via PowerSubsystem)
236
+
- `PowerReading`struct contains `[]Chassis` slice, each with `ID` and `[]Reading` for individual power supply entries
237
+
- Iterates through all available chassis on the BMC and their PowerSubsystem → PowerSupplies arrays
238
+
- Filters and returns only power supply entries with valid power output readings
239
+
- Each reading includes `SourceID`, `SourceName`, and `Power` for granular power supply monitoring
240
+
- Exposes individual power supply entries as separate metrics (e.g., Power Supply 1, Power Supply 2, Power Supply Bay 1)
237
241
238
242
## Metrics
239
243
@@ -243,17 +247,17 @@ to workloads running on a node, platform metrics represent individual power doma
243
247
the underlying bare metal server (via BMC), regardless of whether Kepler runs on bare
244
248
metal or within a VM.
245
249
246
-
**PowerControl Granularity**: Each PowerControl entry from the BMC's PowerControl array is
247
-
exposed as an individual metric with detailed labels. This approach avoids making assumptions
248
-
about power topology (whether PowerControl entries should be summed or represent independent
249
-
power domains) and allows users to understand their specific hardware's power structure.
250
+
**PowerSupply Granularity**: Each power supply from the BMC's PowerSubsystem → PowerSupplies collection is
251
+
exposed as an individual metric with detailed labels. This approach provides direct visibility into
252
+
individual power supply output and allows users to understand their hardware's power supply topology
253
+
and redundancy configuration.
250
254
251
255
This separation enables:
252
256
253
257
- Multiple VMs on the same bare metal to report the same platform power
254
-
- Clear distinction between attributed workload power and platform power domains
255
-
- Granular monitoring of power subsystems (CPU, memory, storage, etc.)
256
-
- Flexible aggregation based on understanding of specific hardware topology
258
+
- Clear distinction between attributed workload power and platform power supplies
259
+
- Granular monitoring of individual power supplies and their redundancy status
260
+
- Direct visibility into power supply efficiency and utilization
257
261
258
262
**Important**: This implementation uses a **power-only (Watts) approach**.
259
263
Energy counters (`kepler_platform_joules_total`) are not supported because:
@@ -262,10 +266,14 @@ Energy counters (`kepler_platform_joules_total`) are not supported because:
262
266
- Collection frequency varies based on demand and configuration
263
267
264
268
```prometheus
265
-
# Platform power metrics (bare metal power consumption) - individual PowerControl entries exposed
266
-
kepler_platform_watts{source="redfish",node_name="worker-1",bmc_id="bmc-1",chassis_id="System.Embedded.1",power_control_id="PC1",power_control_name="Server Power Control"} 450.5
kepler_platform_watts{source="redfish",node_name="worker-1",bmc_id="bmc-1",chassis_id="Enclosure.Internal.0-1",power_control_id="PC1",power_control_name="Enclosure Power Control"} 125.3
269
+
# Platform power metrics (bare metal power consumption) - hybrid API approach with source_type differentiation
# Fallback Power API (PowerControl) when PowerSubsystem unavailable
276
+
kepler_platform_watts{source="redfish",node_name="worker-1",bmc_id="bmc-1",chassis_id="System.Embedded.1",source_id="0",source_name="System Power Control",source_type="PowerControl"} 189.5
0 commit comments