monitoring

How to Monitor Temperature via SNMP (Servers & Network Gear)

Read ENTITY-SENSOR-MIB celsius sensors, decode the value with scale and precision, and set inlet and CPU temperature alerts.

By the SNMP Monitoring team · Reviewed July 2026

Heat is the slow killer in a rack. A blocked filter, a failed CRAC, a fan on its way out — none of it trips anything immediately, it just cooks components until a CPU throttles or a board finally gives up. Temperature is the earliest, cheapest signal you have, and SNMP surfaces it directly from the same sensors the hardware uses to protect itself. The one thing you have to get right is the decode: the value you read is a raw integer, and turning it into an honest degrees-celsius number takes a scale and a precision. Miss that and you'll either graph nonsense or, worse, set a threshold that never fires.

This is the how-to. The object catalog lives on the reference twin, temperature sensor OIDs. Parent: hardware monitoring.

Where temperature lives in SNMP

The portable home for temperature is the ENTITY-SENSOR-MIB (RFC 3433) at 1.3.6.1.2.1.99. A temperature sensor there is just an entry whose entPhySensorType reads celsius, with its reading in entPhySensorValue (1.3.6.1.2.1.99.1.1.1.4). That's the standard, and it's the right first place to look.

Beyond that, most server platforms expose more temperature detail through their own enterprise MIBs under 1.3.6.1.4.1 — HP iLO, Dell iDRAC, Supermicro and so on. Those give you nicely labelled inlet/CPU/exhaust sensors instead of anonymous indexes. There is no single universal "CPU temperature OID" — that leaf is device-specific, so learn the ENTITY-SENSOR method here and pull exact objects from the device pages for your hardware.

Reading a temperature sensor

The raw value isn't the temperature. You decode it with two companion objects. The steps:

  1. Read entPhySensorType (…99.1.1.1.1) — confirm it's celsius.
  2. Read entPhySensorScale (.2) — the SI multiplier (units, milli, kilo…).
  3. Read entPhySensorPrecision (.3) — how many decimal places the integer carries.
  4. Read entPhySensorValue (.4) — the raw integer.
  5. Apply scale and precision: for precision 1, divide the value by 10 to get °C.

A concrete walk:

snmpwalk -v2c -c <RO_string> <host> 1.3.6.1.2.1.99.1.1.1
ENTITY-SENSOR-MIB::entPhySensorType.10 = INTEGER: celsius(8)
ENTITY-SENSOR-MIB::entPhySensorScale.10 = INTEGER: units(9)
ENTITY-SENSOR-MIB::entPhySensorPrecision.10 = INTEGER: 1
ENTITY-SENSOR-MIB::entPhySensorValue.10 = INTEGER: 385

Precision 1, so 385 / 10 = 38.5 °C. If precision were 0, 385 would be a nonsensical 385 °C — which is exactly the mistake people make when they skip the decode. <RO_string> is a placeholder; keep live community strings out of committed scripts.

snmpwalk output of ENTITY-SENSOR temperature value with scale

Inlet vs CPU vs exhaust

Not all temperature sensors deserve the same alert. A server exposes several, and they mean different things:

  • Inlet (ambient) — air temperature entering the chassis. This is your room health signal and the one to compare against data-centre guidance. If inlet climbs, cooling is failing.
  • CPU / component — die or package temperature. Runs hot by design and is managed by the fans; alert only near the vendor's throttle point.
  • Exhaust — outgoing air. Useful for airflow and hot-aisle context, less so as a primary alert.

The one I watch hardest is inlet, because a rising inlet temperature points at a cooling or airflow problem that will eventually take out everything in the rack, not just one component. CPU temperature is better left to the box's own thermal management until it's genuinely near limits.

Setting thermal thresholds

Two reference points matter: the vendor's maximum (where the hardware throttles or shuts down to protect itself) and the safe operating range you actually want to live in. As broad industry guidance, ASHRAE's recommended envelope for inlet air to data-centre equipment tops out around 27 °C for the recommended range, with allowable ranges going higher — check your gear's spec sheet for its own numbers rather than assuming.

Sensor Alert on Why
Inlet / ambient Sustained rise above recommended room envelope Cooling or airflow is failing — affects the whole rack
CPU / component Near the vendor throttle threshold Below that, onboard thermal management handles it
Exhaust Large inlet-to-exhaust delta Hints at airflow restriction or fan trouble

Alert on a sustained reading, not a single poll — brief spikes during a workload burst are normal. Route thermal alerts with enough lead time to react before a throttle; see alerts. Fan behaviour is a related early warning — see fan speed — and room-level context is on environmental temperature & humidity.

Vendor specifics

Because the labelled sensors live in enterprise MIBs, the exact objects differ by platform:

  • HP/HPE iLO — its own health MIB with named temperature sensors and status.
  • Dell iDRAC / OpenManage — enterprise temperature-probe objects with locations.
  • Supermicro — enterprise sensor tree, often mirroring the IPMI sensor list.

Walk the vendor tree, confirm which index is inlet versus CPU, and label them once at template time. Don't copy an OID from a forum and assume it maps to your board. Platform notes: devices.

Reference

This is the temperature how-to. For the full object list, types and status enumerations, use the reference twin: temperature sensor OIDs. Related: fan speed. Definitions at glossary; full index at all sensors.

Frequently asked questions

What OID is temperature in SNMP?

The portable one is entPhySensorValue (1.3.6.1.2.1.99.1.1.1.4) from the ENTITY-SENSOR-MIB, for any sensor whose entPhySensorType is celsius. Labelled CPU/inlet temperatures usually come from a vendor enterprise MIB under 1.3.6.1.4.1 — there's no single universal temperature OID across all hardware.

How do I convert the sensor value to °C?

Read the sensor's entPhySensorScale and entPhySensorPrecision alongside the value. Apply the scale's SI multiplier and shift the decimal point by the precision — for precision 1, divide the raw value by 10. So a raw 385 at precision 1 is 38.5 °C.

Can SNMP read CPU temperature?

Yes, where the platform exposes it — either as an ENTITY-SENSOR sensor typed celsius or, more commonly with a clear label, through the vendor's enterprise MIB (iLO, iDRAC, Supermicro). The exact OID is device-specific, so pull it from the vendor page for your hardware.

What is a safe server inlet temperature?

ASHRAE's recommended envelope for inlet air to data-centre equipment tops out around 27 °C, with wider allowable ranges above that. Treat it as guidance and defer to your specific hardware's spec sheet, alerting on a sustained rise rather than a momentary spike.

Key takeaways

  • Temperature is portable via ENTITY-SENSOR-MIB (entPhySensorValue 1.3.6.1.2.1.99.1.1.1.4, type celsius).
  • Always decode with scale and precision — precision 1 means divide by 10.
  • There's no universal CPU-temp OID; labelled sensors live in vendor MIBs under 1.3.6.1.4.1.
  • Watch inlet hardest — it's the whole-rack cooling signal; leave CPU to onboard thermal management until near limits.
  • Alert on sustained readings against vendor max and room envelope (~27 °C ASHRAE recommended).
  • Object catalog: temperature sensors; an off-box external check via external monitoring still pages you if the host itself drops.

Monitor it from outside the network

SNMP only tells you a box is healthy while something is still asking. ostr.io polls your endpoints externally and fires email + SMS alerts the moment a reading crosses your line — or the agent goes silent.