By the SNMP Monitoring team · Reviewed July 2026
Voltage problems are the ones that make you doubt your own sanity. A server reboots for no reason, an app corrupts data once a month, a machine is subtly unstable and every log is clean — and the cause is a 12 V rail sagging to 11.1 under load, or a power feed browning out during peak hours. None of that shows up as a clean "failure"; it shows up as flakiness. Voltage monitoring is how you catch it, because a rail drifting out of tolerance is measurable long before it causes a crash. SNMP reads those rails straight off the board's sensors, so "is the power actually clean?" becomes a number you can graph.
This is the how-to, focused on rail voltages and alert bands. The object catalog lives on the reference twin, power sensor OIDs. Parent: hardware monitoring.
Where voltage lives in SNMP
Voltage follows the same generic sensor pattern as temperature and fans: the ENTITY-SENSOR-MIB (1.3.6.1.2.1.99). A voltage sensor is an entry whose entPhySensorType reads voltsDC or voltsAC, with its reading in entPhySensorValue (1.3.6.1.2.1.99.1.1.1.4). The wrinkle that trips people up here more than anywhere else is scale: voltage is often reported in millivolts, so entPhySensorScale (1.3.6.1.2.1.99.1.1.1.2) matters a lot. Read a raw 12000 without the scale and you'll think a 12 V rail is at 12,000 volts.
As always, labelled per-rail data (the 12 V, 5 V, 3.3 V rails by name) usually comes from the vendor enterprise MIB under 1.3.6.1.4.1. The exact rail OIDs are device-specific — learn the ENTITY-SENSOR method here and pull precise objects from the device pages for your hardware.
Reading a voltage sensor
The decode, step by step:
- Read
entPhySensorType(…99.1.1.1.1) — confirmvoltsDCorvoltsAC. - Read
entPhySensorScale(.2) — commonlymillifor voltage. - Read
entPhySensorPrecision(.3) — decimal places carried in the integer. - Read
entPhySensorValue(.4) — the raw integer. - Apply scale: a value of
12000at scalemilli= 12.000 V.
A concrete walk:
snmpwalk -v2c -c <RO_string> <host> 1.3.6.1.2.1.99.1.1.1
ENTITY-SENSOR-MIB::entPhySensorType.50 = INTEGER: voltsDC(4)
ENTITY-SENSOR-MIB::entPhySensorScale.50 = INTEGER: milli(8)
ENTITY-SENSOR-MIB::entPhySensorValue.50 = INTEGER: 12040
ENTITY-SENSOR-MIB::entPhySensorType.51 = INTEGER: voltsDC(4)
ENTITY-SENSOR-MIB::entPhySensorScale.51 = INTEGER: milli(8)
ENTITY-SENSOR-MIB::entPhySensorValue.51 = INTEGER: 3310
Sensor .50 is a 12 V rail reading 12.040 V (12040 mV) — healthy. Sensor .51 is the 3.3 V rail at 3.310 V — also fine. Interpretation tip: always sanity-check the decoded number against the rail's nominal value before trusting it; if a "12 V rail" decodes to 1.2 V or 120 V, your scale is wrong, not the hardware. <RO_string> is a placeholder; keep live community strings out of committed scripts.

Tolerance bands
A rail isn't "12 V or broken" — it has an acceptable band around nominal, typically ±5% for tight rails and up to ±10% for looser ones. You alert when the decoded voltage drifts outside that band, in either direction: sag (under-voltage, often load-related) and over-voltage (a failing regulator) are both bad.
| Nominal rail | ±5% band | Watch for |
|---|---|---|
| 12 V | 11.40 – 12.60 V | Sag under heavy load |
| 5 V | 4.75 – 5.25 V | Regulator drift |
| 3.3 V | 3.135 – 3.465 V | Low-margin logic rail |
Those bands are illustrative — the authoritative tolerance is whatever your hardware's spec sheet states, so use the vendor's numbers when you have them. Alert on a sustained excursion, not a single noisy sample, and treat a rail that keeps creeping toward a band edge as a failing regulator you should replace before it drops out. Route these through alerts.
AC input voltage
DC rails are the board's internal story; AC input is the feed story. A low or fluctuating AC input — a brownout — stresses the power supplies and can trigger a switch to battery on a UPS. While ENTITY-SENSOR can type an input as voltsAC, AC input and brownout conditions are often better read from the UPS-MIB input group, which is purpose-built for line voltage, frequency and on-battery state. If you're chasing input-side problems, that's usually the richer source — see UPS sensor OIDs. PSU-level input and redundancy tie in here too; see power supply monitoring.
Reference
This is the voltage how-to. For the full electrical object list — voltsDC/voltsAC, amperes, watts and their decode — use the reference twin: power sensor OIDs. Go there when you need the complete catalog rather than the alerting method. Definitions at glossary; full index at all sensors.
Frequently asked questions
Can SNMP read voltage?
Yes. The ENTITY-SENSOR-MIB (1.3.6.1.2.1.99) types voltage sensors as voltsDC or voltsAC, with the reading in entPhySensorValue (1.3.6.1.2.1.99.1.1.1.4). Labelled per-rail voltages usually come from a vendor enterprise MIB under 1.3.6.1.4.1, and AC input is often best read from the UPS-MIB.
How do I convert the sensor value to volts?
Read the sensor's entPhySensorScale (and precision) alongside the value and apply it. Voltage is commonly scaled in millivolts, so a raw 12000 at scale milli is 12.000 V. Skipping the scale is the classic mistake — it makes a 12 V rail look like 12,000 V.
What is a safe voltage tolerance band?
Rails are typically held within about ±5% of nominal, with some looser rails allowed ±10%. So a 12 V rail sitting between roughly 11.4 V and 12.6 V is normal. Always defer to the hardware's spec sheet for the authoritative band, and alert on sustained drift outside it in either direction.
How do I detect a brownout?
Watch the AC input voltage — a sustained dip below the normal line voltage is a brownout. Although ENTITY-SENSOR can type an input as voltsAC, the UPS-MIB input group is usually the better source for line voltage and on-battery state, since it's designed for exactly that.
Key takeaways
- Voltage is portable via ENTITY-SENSOR-MIB (
entPhySensorValue1.3.6.1.2.1.99.1.1.1.4, typevoltsDC/voltsAC). - Apply the scale — voltage is often in millivolts;
12000atmilli= 12.000 V. - Alert on sustained drift outside the tolerance band (~±5%), both sag and over-voltage.
- Exact rail OIDs are device-specific; labelled rails live in vendor MIBs under
1.3.6.1.4.1. - For AC input / brownout, prefer the UPS-MIB input group over generic sensors.
- Object catalog: power sensors; an off-box external check via external monitoring still pages you if the host itself drops.