monitoring

How to Monitor Voltage via SNMP (Rails & Sensors)

Read ENTITY-SENSOR-MIB voltsDC/voltsAC sensors, apply the millivolt scale, and alert when a rail drifts outside its tolerance band.

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:

  1. Read entPhySensorType (…99.1.1.1.1) — confirm voltsDC or voltsAC.
  2. Read entPhySensorScale (.2) — commonly milli for voltage.
  3. Read entPhySensorPrecision (.3) — decimal places carried in the integer.
  4. Read entPhySensorValue (.4) — the raw integer.
  5. Apply scale: a value of 12000 at scale milli = 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.

snmpwalk output of voltsDC sensors with scale applied

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 (entPhySensorValue 1.3.6.1.2.1.99.1.1.1.4, type voltsDC/voltsAC).
  • Apply the scale — voltage is often in millivolts; 12000 at milli = 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.

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.