8.6 KiB
Redfish hardware metrics
The redfish
hardware type supports sending hardware
metrics via the notification system </admin/notifications>
. The
event_type
field of a notification will be set to
hardware.redfish.metrics
(where redfish
may be
replaced by a different driver name for hardware types derived from
it).
Enabling redfish hardware metrics requires some ironic.conf configuration file updates:
[oslo_messaging_notifications]
# The Drivers(s) to handle sending notifications. Possible
# values are messaging, messagingv2, routing, log, test, noop,
# prometheus_exporter (multi valued)
# Example using the messagingv2 driver:
driver = messagingv2
[sensor_data]
send_sensor_data = true
[metrics]
backend = collector
A full list of [oslo_messaging_notifications]
configuration options can be found in the oslo.messaging
documentation
The payload of each notification is a mapping where keys are sensor
types (Fan
, Temperature
, Power
or
Drive
) and values are also mappings from sensor identifiers
to the sensor data.
Each Fan
payload contains the following fields:
max_reading_range
,min_reading_range
- the range of reading values.reading
,reading_units
- the current reading and its units.serial_number
- the serial number of the fan sensor.physical_context
- the context of the sensor, such asSystemBoard
. Can also benull
or justFan
.
Each Temperature
payload contains the following
fields:
max_reading_range_temp
,min_reading_range_temp
- the range of reading values.reading_celsius
- the current reading in degrees Celsius.sensor_number
- the number of the temperature sensor.physical_context
- the context of the sensor, usually reflecting its location, such asCPU
,Memory
,Intake
,PowerSupply
orSystemBoard
. Can also benull
.
Each Power
payload contains the following fields:
power_capacity_watts
,line_input_voltage
,last_power_output_watts
serial_number
- the serial number of the power source.state
- the power source state:enabled
,absent
(null
if unknown).health
- the power source health status:ok
,warning
,critical
(null
if unknown).
Each Drive
payload contains the following fields:
name
- the drive name in the BMC (this is not a Linux device name like/dev/sda
).model
- the drive model (if known).capacity_bytes
- the drive capacity in bytes.state
- the drive state:enabled
,absent
(null
if unknown).health
- the drive health status:ok
,warning
,critical
(null
if unknown).
Note
Drive payloads are often not available on real hardware.
Warning
Metrics collection works by polling several Redfish endpoints on the target BMC. Some older BMC implementations may have hard rate limits or misbehave under load. If this is the case for you, you need to reduce the metrics collection frequency or completely disable it.
Example (Dell)
{
"message_id": "578628d2-9967-4d33-97ca-7e7c27a76abc",
"publisher_id": "conductor-1.example.com",
"event_type": "hardware.redfish.metrics",
"priority": "INFO",
"payload": {
"message_id": "60653d54-87aa-43b8-a4ed-96d568dd4e96",
"instance_uuid": null,
"node_uuid": "aea161dc-2e96-4535-b003-ca70a4a7bb6d",
"timestamp": "2023-10-22T15:50:26.841964",
"node_name": "dell-430",
"event_type": "hardware.redfish.metrics.update",
"payload": {
"Fan": {
"0x17||Fan.Embedded.1A@System.Embedded.1": {
"identity": "0x17||Fan.Embedded.1A",
"max_reading_range": null,
"min_reading_range": 720,
"reading": 1680,
"reading_units": "RPM",
"serial_number": null,
"physical_context": "SystemBoard",
"state": "enabled",
"health": "ok"
},
"0x17||Fan.Embedded.2A@System.Embedded.1": {
"identity": "0x17||Fan.Embedded.2A",
"max_reading_range": null,
"min_reading_range": 720,
"reading": 3120,
"reading_units": "RPM",
"serial_number": null,
"physical_context": "SystemBoard",
"state": "enabled",
"health": "ok"
},
"0x17||Fan.Embedded.2B@System.Embedded.1": {
"identity": "0x17||Fan.Embedded.2B",
"max_reading_range": null,
"min_reading_range": 720,
"reading": 3000,
"reading_units": "RPM",
"serial_number": null,
"physical_context": "SystemBoard",
"state": "enabled",
"health": "ok"
}
},
"Temperature": {
"iDRAC.Embedded.1#SystemBoardInletTemp@System.Embedded.1": {
"identity": "iDRAC.Embedded.1#SystemBoardInletTemp",
"max_reading_range_temp": 47,
"min_reading_range_temp": -7,
"reading_celsius": 28,
"physical_context": "SystemBoard",
"sensor_number": 4,
"state": "enabled",
"health": "ok"
},
"iDRAC.Embedded.1#CPU1Temp@System.Embedded.1": {
"identity": "iDRAC.Embedded.1#CPU1Temp",
"max_reading_range_temp": 90,
"min_reading_range_temp": 3,
"reading_celsius": 63,
"physical_context": "CPU",
"sensor_number": 14,
"state": "enabled",
"health": "ok"
}
},
"Power": {
"PSU.Slot.1:Power@System.Embedded.1": {
"power_capacity_watts": null,
"line_input_voltage": 206,
"last_power_output_watts": null,
"serial_number": "CNLOD0075324D7",
"state": "enabled",
"health": "ok"
},
"PSU.Slot.2:Power@System.Embedded.1": {
"power_capacity_watts": null,
"line_input_voltage": null,
"last_power_output_watts": null,
"serial_number": "CNLOD0075324E5",
"state": null,
"health": "critical"
}
},
"Drive": {
"Solid State Disk 0:1:0:RAID.Integrated.1-1@System.Embedded.1": {
"name": "Solid State Disk 0:1:0",
"capacity_bytes": 479559942144,
"state": "enabled",
"health": "ok"
},
"Physical Disk 0:1:1:RAID.Integrated.1-1@System.Embedded.1": {
"name": "Physical Disk 0:1:1",
"capacity_bytes": 1799725514752,
"state": "enabled",
"health": "ok"
},
"Physical Disk 0:1:2:RAID.Integrated.1-1@System.Embedded.1": {
"name": "Physical Disk 0:1:2",
"capacity_bytes": 1799725514752,
"state": "enabled",
"health": "ok"
},
"Backplane 1 on Connector 0 of Integrated RAID Controller 1:RAID.Integrated.1-1@System.Embedded.1": {
"name": "Backplane 1 on Connector 0 of Integrated RAID Controller 1",
"capacity_bytes": null,
"state": "enabled",
"health": "ok"
}
}
}
},
"timestamp": "2023-10-22 15:50:36.700458"
}