sensors

SNMP UPS OIDs: UPS-MIB Battery, Input & Output Reference

The SNMP OIDs for a UPS — UPS-MIB (RFC 1628) battery status, charge, runtime, input/output voltage and load, plus the APC PowerNet-MIB, with examples.

By the SNMP Monitoring team · Reviewed July 2026

A UPS is one of the few device classes with a proper standard MIB — the UPS-MIB (RFC 1628) at 1.3.6.1.2.1.33 — so battery status, runtime remaining, and on-battery state read the same way across vendors. This page is the paste-ready reference for the battery, input and output groups, plus a note on the APC PowerNet-MIB that big APC fleets lean on. The objects you'll reach for most are "is it on battery" and "how many minutes are left."

The device-level how-to is the guide: UPS monitoring. Hubs: sensors, all OIDs.

UPS-MIB groups

RFC 1628 organises everything under 1.3.6.1.2.1.33.1 into functional groups:

GroupBase OIDKey objects
Battery1.3.6.1.2.1.33.1.2Status, charge %, minutes remaining, voltage, temp
Input1.3.6.1.2.1.33.1.3Line voltage, frequency, current per input line
Output1.3.6.1.2.1.33.1.4Output source, per-line voltage/current/load
Alarm1.3.6.1.2.1.33.1.6Present well-known alarms

Because it's standard, a UPS from one vendor answers these same OIDs as a UPS from another — a big convenience versus the vendor-only world of RAID or PDUs. That portability is the whole reason to prefer the UPS-MIB as your baseline: you can build one dashboard and one set of alerts that work across an APC, an Eaton, and a Vertiv without rewriting OIDs per model. Coverage does vary — a small consumer UPS may implement only the battery group, while a data-centre unit populates input, output, and alarms fully — so walk 1.3.6.1.2.1.33 on each device once to see which groups it actually answers before you rely on an object.

Battery objects

The battery group at 1.3.6.1.2.1.33.1.2 is where the critical health signals live:

  • upsBatteryStatus1.3.6.1.2.1.33.1.2.1 — an enum: unknown / batteryNormal / batteryLow / batteryDepleted.
  • upsSecondsOnBattery1.3.6.1.2.1.33.1.2.2 — seconds since the UPS switched to battery (0 when on mains).
  • upsEstimatedMinutesRemaining1.3.6.1.2.1.33.1.2.3 — estimated runtime left on battery.
  • upsEstimatedChargeRemaining1.3.6.1.2.1.33.1.2.4 — charge as a percentage.
  • upsBatteryVoltage1.3.6.1.2.1.33.1.2.5 — battery voltage.
  • upsBatteryTemperature1.3.6.1.2.1.33.1.2.6 — battery temperature.

The two you alert on hardest: upsBatteryStatus going to batteryLow, and upsEstimatedMinutesRemaining dropping below the time your systems need to shut down cleanly. A sensible reading order on any UPS:

  1. Check upsOutputSource — is it running on mains or battery right now?
  2. Read upsBatteryStatus — normal, low, or depleted?
  3. Read upsEstimatedMinutesRemaining and upsEstimatedChargeRemaining for how much runway is left.
  4. Note upsSecondsOnBattery — how long it's already been discharging, if at all.

Input & output objects

The input group (1.3.6.1.2.1.33.1.3) carries the incoming mains — line voltage, frequency, and current — usually as a table with a row per input line. A voltage reading that sags or a frequency that drifts is your early sign of dirty utility power.

The output group (1.3.6.1.2.1.33.1.4) describes what the UPS is delivering. The key scalar is upsOutputSource (1.3.6.1.2.1.33.1.4.1), an enum telling you where output power is coming from — normal (mains), battery, bypass, booster, and so on. There's also an output table with per-line voltage, current, and load percentage. Because the exact output-table leaf indexes vary and are easy to get wrong, confirm them against the UPS-MIB (or your device's implementation) before hard-coding — walk the output group and read the names rather than assuming a column number.

Worked snmpwalk example

Walk the battery group for the headline health numbers:

snmpwalk -v2c -c <RO_string> <host> 1.3.6.1.2.1.33.1.2
UPS-MIB::upsBatteryStatus.0 = INTEGER: batteryNormal(2)
UPS-MIB::upsSecondsOnBattery.0 = INTEGER: 0
UPS-MIB::upsEstimatedMinutesRemaining.0 = INTEGER: 47
UPS-MIB::upsEstimatedChargeRemaining.0 = INTEGER: 100

Battery normal, 0 seconds on battery (so it's on mains), 47 minutes of runtime, fully charged. Check the output source to confirm:

snmpget -v2c -c <RO_string> <host> 1.3.6.1.2.1.33.1.4.1.0
UPS-MIB::upsOutputSource.0 = INTEGER: normal(3)

<RO_string> is a placeholder; keep live communities out of committed scripts.

snmpwalk output of UPS-MIB battery charge and runtime remaining

APC PowerNet-MIB

The standard UPS-MIB covers the essentials, but many APC devices expose a lot more through the PowerNet-MIB under 1.3.6.1.4.1.318 — richer battery diagnostics, self-test results, per-outlet-group control, and environmental probes on cards that support them. If you run an APC fleet, PowerNet gives you detail the standard MIB doesn't. The trade-off is the usual one: PowerNet objects only work on APC gear, while the UPS-MIB works everywhere. A common pattern is to poll the standard UPS-MIB for portable dashboards and dip into PowerNet for APC-specific depth — see the UPS device guide.

UPS device guide

Reference stops here. For deployment specifics — which objects to alert on, tying UPS runtime into graceful shutdown, standard-vs-vendor trade-offs — see the device guide: UPS monitoring. Related references: power OIDs, the standard MIBs overview, the OID catalog, and glossary.

Frequently asked questions

What is the OID for UPS battery status?

upsBatteryStatus at 1.3.6.1.2.1.33.1.2.1 from the UPS-MIB (RFC 1628). It's an enum — batteryNormal, batteryLow, batteryDepleted, or unknown. It sits in the battery group at 1.3.6.1.2.1.33.1.2 alongside charge percentage, runtime, voltage, and temperature.

What OID is UPS runtime remaining?

upsEstimatedMinutesRemaining at 1.3.6.1.2.1.33.1.2.3 — the estimated minutes of runtime left on battery. Pair it with upsEstimatedChargeRemaining (.4, percentage) and alert when the minutes drop below the time your systems need for a clean shutdown.

Standard UPS-MIB or APC PowerNet — which should I use?

Use the standard UPS-MIB (1.3.6.1.2.1.33) for portability; it works across UPS vendors and covers battery, input, and output essentials. Use the APC PowerNet-MIB (1.3.6.1.4.1.318) on APC gear when you need richer diagnostics, self-tests, or outlet-group control the standard MIB doesn't expose.

How do I detect that a UPS is on battery?

Read upsOutputSource (1.3.6.1.2.1.33.1.4.1) — a value indicating battery means it's running off the battery rather than mains. You can corroborate with upsSecondsOnBattery (1.3.6.1.2.1.33.1.2.2), which is 0 on mains and counts up once the UPS transfers to battery.

Key takeaways

  • UPS has a standard MIB — UPS-MIB (RFC 1628) at 1.3.6.1.2.1.33 — so it reads the same across vendors.
  • Battery group …33.1.2: status .1, secondsOnBattery .2, minutesRemaining .3, charge% .4, voltage .5, temp .6.
  • On-battery detection = upsOutputSource (…33.1.4.1); confirm with upsSecondsOnBattery.
  • Alert on batteryLow and on minutes remaining below your safe-shutdown window.
  • APC adds depth via PowerNet-MIB (1.3.6.1.4.1.318) — APC-only; verify output-table leaves before hard-coding.
  • Device guide: UPS monitoring; catalog: sensors/all.

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.