SNMP temperature OIDs, by vendor
The OIDs that actually return a temperature — and the two mistakes that quietly make the number wrong. Everything here is vendor reference data: use it with RackMon, with Zabbix, with LibreNMS, with a shell script, with whatever you like.
Two things break temperature monitoring far more often than a wrong OID.
1. Scaling. A device returning 275 may mean 27.5 °C, not 275 °C. Dell iDRAC does exactly this. ENTITY-SENSOR-MIB tells you explicitly through entPhySensorScale and entPhySensorPrecision; most vendor MIBs expect you to already know.
2. Units. Some cards report whatever unit their web interface is set to. An APC NMC configured for Fahrenheit will hand you 78 and let you believe your rack is on fire.
Always walk the OID against your own hardware and compare it with the device's own web interface before you wire it into alerting. A threshold built on a mis-scaled reading is worse than no monitoring at all, because you will trust it.
Start with the standard, not the vendor
Before reaching for a vendor MIB, try the vendor-neutral sensor table from RFC 3433. A lot of modern equipment implements it, and when it answers you get one OID for your entire estate — plus the unit, scale and precision stated explicitly instead of guessed.
# every sensor value on the device
snmpwalk -v2c -c public 10.0.0.10 1.3.6.1.2.1.99.1.1.1.4
# the sensor names, so you can tell which index is the inlet
snmpwalk -v2c -c public 10.0.0.10 1.3.6.1.2.1.47.1.1.1.1.2
On SNMPv3, which you should prefer on anything that leaves your rack:
snmpwalk -v3 -l authPriv -u monitor \
-a SHA -A '<auth-pass>' -x AES -X '<priv-pass>' \
10.0.0.10 1.3.6.1.2.1.99.1.1.1.4
Standard — ENTITY-SENSOR-MIB (RFC 3433)
Much modern Cisco, Juniper and Arista gear, and plenty of servers. Try this first.
| Object | OID | What it gives you |
|---|---|---|
entPhySensorValue | 1.3.6.1.2.1.99.1.1.1.4 | The reading itself. Raw integer — must be scaled. |
entPhySensorType | 1.3.6.1.2.1.99.1.1.1.1 | Unit of the reading. 8 = celsius. Check it rather than assuming. |
entPhySensorScale | 1.3.6.1.2.1.99.1.1.1.2 | Power-of-ten multiplier. 9 = units (10⁰), 8 = milli, 10 = kilo. |
entPhySensorPrecision | 1.3.6.1.2.1.99.1.1.1.3 | Decimal places implied. 1 means divide by 10. |
entPhySensorOperStatus | 1.3.6.1.2.1.99.1.1.1.5 | 1 = ok, 2 = unavailable, 3 = nonoperational. Discard anything not ok. |
entPhysicalDescr | 1.3.6.1.2.1.47.1.1.1.1.2 | ENTITY-MIB. Human names — how you find which index is the inlet. |
Scaling: value × 10^(scale − 9) ÷ 10^precision. In practice most gear reports Celsius with precision 0 or 1.
Walk entPhysicalDescr alongside entPhySensorValue and match the indexes — the descriptions tell you which sensor is inlet, exhaust, CPU or PSU. If the walk returns nothing, fall back to the vendor profile below.
Dell — PowerEdge via iDRAC
iDRAC 7, 8 and 9. This is the profile where the scaling trap bites.
| Object | OID | What it gives you |
|---|---|---|
temperatureProbeReading | 1.3.6.1.4.1.674.10892.5.4.700.20.1.6 | The reading, in tenths of a degree. |
temperatureProbeLocationName | 1.3.6.1.4.1.674.10892.5.4.700.20.1.8 | Probe name, e.g. System Board Inlet Temp. |
temperatureProbeStatus | 1.3.6.1.4.1.674.10892.5.4.700.20.1.5 | 3 = ok. Discard readings that aren't. |
Scaling: divide by 10. A returned 275 is 27.5 °C. This is the single most common mistake made with iDRAC.
Index 1 is normally System Board Inlet Temp — that is the one you want for room or rack monitoring. Higher indexes are CPU and exhaust probes, which run much hotter and will give you a misleading picture of your cooling.
Step-by-step for Dell: enabling SNMP on the card, identifying the inlet probe, verifying the reading and setting a threshold that means something.
HPE — ProLiant via iLO
iLO 4, 5 and 6, with the SNMP agent enabled — it is off by default on some firmware.
| Object | OID | What it gives you |
|---|---|---|
cpqHeTemperatureCelsius | 1.3.6.1.4.1.232.6.2.6.8.1.4 | Current temperature, whole degrees Celsius. |
cpqHeTemperatureLocale | 1.3.6.1.4.1.232.6.2.6.8.1.3 | Where the sensor is: 3 = system, 4 = system board, 6 = CPU, 7 = memory, 11 = ambient/intake. |
cpqHeTemperatureThreshold | 1.3.6.1.4.1.232.6.2.6.8.1.5 | The threshold HPE itself considers critical for that sensor. |
Scaling: none — whole degrees Celsius.
Walk cpqHeTemperatureLocale first and find the entry with value 11 (ambient). That is your intake reading; everything else is internal and will alarm for reasons unrelated to the room.
Step-by-step for HPE: enabling the iLO SNMP agent, finding the ambient sensor, the two-part index that trips up every first attempt, and why HPE's own threshold is not an alert level.
Cisco — IOS, IOS-XE, NX-OS
CISCO-ENVMON-MIB, for switches and routers with environmental sensors.
| Object | OID | What it gives you |
|---|---|---|
ciscoEnvMonTemperatureStatusValue | 1.3.6.1.4.1.9.9.13.1.3.1.3 | Current reading, whole degrees Celsius. |
ciscoEnvMonTemperatureStatusDescr | 1.3.6.1.4.1.9.9.13.1.3.1.2 | Sensor description — inlet vs outlet vs CPU. |
ciscoEnvMonTemperatureState | 1.3.6.1.4.1.9.9.13.1.3.1.6 | The device's own verdict: 1 normal, 2 warning, 3 critical, 4 shutdown, 5 notPresent, 6 notFunctioning. |
Scaling: none — whole degrees Celsius.
Newer IOS-XE also answers on ENTITY-SENSOR-MIB; prefer that when it responds, since it states scale and precision. ciscoEnvMonTemperatureState is a useful second opinion, but don't rely on it alone — vendors set those thresholds conservatively for the chassis, not for your room.
Juniper — Junos (MX, EX, QFX, SRX)
| Object | OID | What it gives you |
|---|---|---|
jnxOperatingTemp | 1.3.6.1.4.1.2636.3.1.13.1.7 | Temperature of an operating component, Celsius. |
jnxOperatingDescr | 1.3.6.1.4.1.2636.3.1.13.1.5 | Which component the index refers to — Routing Engine, FPC, chassis, PSU. |
Scaling: none — whole degrees Celsius.
Indexed per operating component, so one device returns many rows. Walk jnxOperatingDescr first and pick the chassis or intake entries; the Routing Engine always reads hotter and is not a proxy for room temperature.
APC / Schneider Electric — NMC and rack PDUs
PowerNet-MIB. Network Management Card (AP9630/9631/9640/9641) with an environmental probe such as the AP9335T, and rack PDUs. This is where the units trap bites hardest.
| Object | OID | What it gives you |
|---|---|---|
iemStatusProbeCurrentTemp | 1.3.6.1.4.1.318.1.1.10.2.3.2.1.4 | Probe temperature. |
iemStatusProbeName | 1.3.6.1.4.1.318.1.1.10.2.3.2.1.2 | Probe name as configured on the card. |
iemStatusProbeCurrentHumid | 1.3.6.1.4.1.318.1.1.10.2.3.2.1.6 | Relative humidity, percent. |
iemStatusProbeTempUnits | 1.3.6.1.4.1.318.1.1.10.2.3.2.1.5 | 1 = celsius, 2 = fahrenheit. Check this. |
Units: whatever the card is configured for. An NMC set to Fahrenheit returns 78 for a perfectly normal 25.5 °C room, and a naive threshold of 32 will never fire. Poll iemStatusProbeTempUnits alongside the reading, or set the card to Celsius and write that down somewhere.
Rack PDUs on newer firmware expose sensors under the rPDU2Sensor tree instead. If the OIDs above return nothing, walk 1.3.6.1.4.1.318.1.1.26.
Step-by-step for APC: which card and probe you need, handling the unit correctly, humidity, and where rack PDUs hide their sensors.
Which sensor should you actually alert on?
Almost always the intake, not the component. A CPU running at 70 °C tells you about that CPU; an intake at 32 °C tells you your cooling is failing and every machine in the rack is about to have a problem. Component sensors are for diagnosing a specific box after something has already gone wrong.
ASHRAE's recommended envelope for a class A1–A4 data centre is an intake of 18–27 °C. Sensible bands for a mixed SMB or edge room: up to 27 °C nominal, 27–32 °C worth a warning and investigating airflow, and 32 °C or above worth waking someone. The full guide covers thresholds, sensor placement and alerting in more depth.
Corrections welcome
OIDs move between models and firmware revisions. If one here is wrong for your hardware, open an issue or send a correction — that is exactly the kind of knowledge worth collecting in one place. The machine-readable versions of these profiles live in the public repository.
RackMon ships these profiles built in: point it at a device, it finds the right sensor, applies the right scaling and draws your racks U by U. Self-hosted, one container, free for unlimited devices.
← Rack temperature monitoring guide Compare with Zabbix, PRTG & LibreNMS