banshee/hardware-collection/hardware/redfish/https/
thermal
The reading and health of each temperature sensor and fan of a server by Redfish.
by banshee1 installation1 version
Published on October 27, 2026. First version.
Temperatures and fans of a server, by Redfish
Returns, for each temperature sensor and each fan a server's management card serves by Redfish, its reading and its health, as the card judges it against its own thresholds. Four watches are offered, each one set on the probe.
Versions
Generic: one collector reads both forms of the DMTF Redfish schema, so it stays at the common level.
Thermal, the resource of every Redfish version, deprecated by DMTF since release 2020.4 and still served by the cards (Dell iDRAC, HPE iLO, Supermicro, Lenovo XCC). It is read when the chassis links to it.ThermalSubsystem, its successor from release 2020.4, read when the chassis links to it and not toThermal.
One collector rather than one per schema: the administrator does not have to know which schema his card serves, and a card that moves from one to the other at a firmware update keeps its probe. Thermal is preferred when both are served: it gives each temperature sensor its own health, judged against the card's thresholds, where ThermalMetrics gives readings only.
How it works
The collector reads, the account in Basic, GET https://<host:address>/redfish/v1/Chassis, then each chassis it lists, then:
- with
Thermal: that resource;
`` {"Temperatures": [{"MemberId": "0", "Name": "CPU1 Temp", "ReadingCelsius": 45, "Status": {"State": "Enabled", "Health": "OK"}}], "Fans": [{"MemberId": "0", "Name": "Fan 1", "Reading": 5880, "ReadingUnits": "RPM", "Status": {"State": "Enabled", "Health": "OK"}}]} ``
- with
ThermalSubsystemonly: that resource, whose health is returned as an instanceThermal subsystem; itsFanscollection and each fan in it (SpeedPercent.Readingin %,SpeedPercent.SpeedRPMin rpm); and itsThermalMetrics, whoseTemperatureReadingsCelsiusgive each temperature by itsDeviceName, without a health of its own.
- A sensor is named by its
Name(a fan byFanNamebeforeThermal1.1). When two bear the same name, each is named by its name followed by its id (MemberId,Id, or theDataSourceUriof a reading). healthis the sensor'sHealthRolluporHealth,unknownwhen it gives neither; in lower case:ok,warning,critical. A temperature past the card's warning or critical threshold, a failed fan, readwarningorcritical.- A fan's reading goes to
fan-speedwhen the card gives it in RPM, tofan-percentwhen it gives it in percent (ReadingUnits). - A sensor the card says
Absentis an empty slot: it is left out. - A code 401 or 403 stops the collector
misconfigured; any other code but 200 stops itunreachable, with the path it was reading. A card where no chassis servesThermalnorThermalSubsystemstops itmisconfigured.
The password comes from protocol:http:password, a secret variable: it only goes in the Basic header. Redfish only reads with GET.
Prerequisites
- The management card's address as the host's address, reachable from the poller in HTTPS (443); its certificate trusted by the TLS profile of the probe (
protocol:http:fingerprint, or its authority underprotocol:tls:authorities). - A read-only account on the card (the
ReadOnlyrole of Redfish), inprotocol:http:userandprotocol:http:password.
Outputs
| Name | Label | Unit | Per instance |
|---|---|---|---|
health | Health | — | yes, per sensor |
temperature | Temperature | °C | yes, per sensor |
fan-speed | Fan speed | rpm | yes, per sensor |
fan-percent | Fan speed | % | yes, per sensor |
Watches
| Name | Title | Kind | Defaults | Checked by default |
|---|---|---|---|---|
unhealthy | Sensor health degraded | state to avoid, on health | warning on warning, critical on critical | yes |
hot | High temperature | above a threshold, on temperature | no threshold: it raises nothing until one is set on the probe | no |
fan-slow | Fan slow | below a threshold, on fan-speed | no threshold: it raises nothing until one is set on the probe | no |
missing | Sensor missing | expected instances, on health | no sensor named: it raises nothing until names are set on the probe | no |
- The card's thresholds differ from one sensor to the next (an inlet, a processor, a drive bay):
unhealthyfollows them.hotserves a threshold of one's own, the same for every sensor the selection keeps.
Limits
- The address is written into the URL as is: an IPv6 address must be given as a name.
- With
ThermalSubsystem, a temperature has no health of its own: an overheating sensor shows through the subsystem's health and throughhot, and a temperature cannot be watched bymissing. - A collection cut into pages (
Members@odata.nextLink) is read on its first page only. - A JSON
nullreads as''in Keen, which the collector takes for "not given": a reading writtennull(a sensor of a server powered off) is not returned, aHealthwrittennullreadsunknown, which raises nothing. - Not checked against a card: the paths and fields are those of the DMTF Redfish schemas (
Chassis,Thermal,ThermalSubsystem,Fan,ThermalMetrics,Sensor), read on redfish.dmtf.org. Which firmware of each brand servesThermalSubsystemis not checked.