banshee is under active development: collectors will keep changing, and a version you publish will likely need adjustments. For stable use, wait for version 1.0.0.

Hardware

banshee/hardware-collection/hardware/redfish/https/

thermal

The reading and health of each temperature sensor and fan of a server by Redfish.

  • hardware
  • server
  • redfish
  • bmc
  • temperature
  • fan
  • thermal
  • https

by banshee1 installation1 version

v1Latest

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 to Thermal.

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 ThermalSubsystem only: that resource, whose health is returned as an instance Thermal subsystem; its Fans collection and each fan in it (SpeedPercent.Reading in %, SpeedPercent.SpeedRPM in rpm); and its ThermalMetrics, whose TemperatureReadingsCelsius give each temperature by its DeviceName, without a health of its own.
  • A sensor is named by its Name (a fan by FanName before Thermal 1.1). When two bear the same name, each is named by its name followed by its id (MemberId, Id, or the DataSourceUri of a reading).
  • health is the sensor's HealthRollup or Health, unknown when it gives neither; in lower case: ok, warning, critical. A temperature past the card's warning or critical threshold, a failed fan, read warning or critical.
  • A fan's reading goes to fan-speed when the card gives it in RPM, to fan-percent when it gives it in percent (ReadingUnits).
  • A sensor the card says Absent is an empty slot: it is left out.
  • A code 401 or 403 stops the collector misconfigured; any other code but 200 stops it unreachable, with the path it was reading. A card where no chassis serves Thermal nor ThermalSubsystem stops it misconfigured.

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 under protocol:tls:authorities).
  • A read-only account on the card (the ReadOnly role of Redfish), in protocol:http:user and protocol:http:password.

Outputs

NameLabelUnitPer instance
healthHealth—yes, per sensor
temperatureTemperature°Cyes, per sensor
fan-speedFan speedrpmyes, per sensor
fan-percentFan speed%yes, per sensor

Watches

NameTitleKindDefaultsChecked by default
unhealthySensor health degradedstate to avoid, on healthwarning on warning, critical on criticalyes
hotHigh temperatureabove a threshold, on temperatureno threshold: it raises nothing until one is set on the probeno
fan-slowFan slowbelow a threshold, on fan-speedno threshold: it raises nothing until one is set on the probeno
missingSensor missingexpected instances, on healthno sensor named: it raises nothing until names are set on the probeno
  • The card's thresholds differ from one sensor to the next (an inlet, a processor, a drive bay): unhealthy follows them. hot serves 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 through hot, and a temperature cannot be watched by missing.
  • A collection cut into pages (Members@odata.nextLink) is read on its first page only.
  • A JSON null reads as '' in Keen, which the collector takes for "not given": a reading written null (a sensor of a server powered off) is not returned, a Health written null reads unknown, 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 serves ThermalSubsystem is not checked.