Skip to content

List a node's temperature sensors (operator-only).

GET
/v1/compute/nodes/{nodeId}/thermals
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/compute/nodes/example/thermals \
--header 'Authorization: Bearer <token>'

. Returns the host’s temperature sensors — CPU package, per-core, and any chassis/ambient sensor — each with the critical threshold the hardware itself reports and the headroom remaining to it.

The companion to GET /v1/compute/nodes/{nodeId}/disks, whose health block covers the drives: together they answer “how is this box” without the operator having to guess whether a hot disk is a bad drive or a hot chassis.

Read-only, collected on the same refresh pass as the disk/NIC/DIMM inventory by reading /sys/class/hwmon. No sensor exists for DIMM temperature or fan RPM on some hardware, so neither is reported. Cedar action compute:DescribeNode. Platform-tenant.

nodeId
required
string
/^n-[a-z0-9-]+$/

The node’s temperature sensors, in hardware order.

Media typeapplication/json
object
items
required
Array<object>

One host temperature sensor, read from /sys/class/hwmon.

The sibling of NodeDiskHealth: that one says whether the drives are dying, this one says whether the box they sit in is being cooled. A drive running hot because the whole chassis is hot is a different fix from one drive in a bad slot, and answering that needs both.

Judge a reading by headroomCelsius, not by temperatureCelsius. The absolute number does not travel between machines: 76 C is unremarkable on a part whose silicon reports a 100 C critical point and alarming on one that throttles at 85. The distance to the hardware’s own limit means the same thing everywhere. This is the same lesson landed on for disks after finding three different warning thresholds across four drive models.

Note for some hardware: DIMMs expose no thermal sensors (no jc42 / SPD hub), and there are no fan tachometers, so neither RAM temperature nor fan RPM appears here. That is the hardware, not a gap in the collector.

object
chip
required

Hwmon driver name, e.g. coretemp or acpitz. Suffixed with -N when a board exposes the same chip more than once (dual socket).

string
sensor
required

Stable per-chip key, slugified from the hardware label (“Package id 0” becomes package_id_0), so it survives hwmon renumbering across reboots. Falls back to tempN for an unlabelled sensor.

string
label
required

The hardware’s own label, verbatim. Empty when it has none.

string
kind
required
  • package — whole-CPU-package temperature. The signal worth alarming on: it is normally the hottest core, and it answers “is this chassis cooling adequately”.
  • core — one physical core. A single hot core while the package is fine points at load placement, not cooling.
  • ambient — chassis/board sensor. Reported because it is free; it carries no thresholds and nothing is built on it.
  • other — anything else the board exposes.
string
Allowed values: package core ambient other
temperatureCelsius
required

Current reading.

number format: double
highCelsius

The sensor’s own high/max threshold (tempN_max). Absent when the hardware reports none.

number format: double
criticalCelsius

The sensor’s own critical threshold (tempN_crit) — the hardware’s statement about itself, never a Stratum constant. Absent when the hardware reports none.

number format: double
headroomCelsius

criticalCelsius - temperatureCelsius: degrees left before the hardware’s own limit, negative once past it. The number to alarm and chart on. Absent when the sensor reports no critical threshold.

number format: double
condition
required

Derived from headroomCelsius, and a SNAPSHOT — a package temperature spikes towards its limit under a burst and means nothing. Sustained heat is what indicates failing cooling, which is why the node-cpu-hot alarm requires the condition to hold for ten consecutive minutes rather than firing on this field directly.

  • critical — at or past the point the hardware itself calls critical.
  • hot — within 15 C of that point. Throttling territory.
  • healthy — comfortably below it.
  • unknown — the reading exists but the hardware reports no threshold to judge it against (acpitz here). Never render as healthy: it is an absence of information, not a verdict.
string
Allowed values: unknown healthy hot critical

Example

{
"items": [
{
"kind": "package",
"condition": "unknown"
}
]
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}