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:
| Group | Base OID | Key objects |
|---|---|---|
| Battery | 1.3.6.1.2.1.33.1.2 | Status, charge %, minutes remaining, voltage, temp |
| Input | 1.3.6.1.2.1.33.1.3 | Line voltage, frequency, current per input line |
| Output | 1.3.6.1.2.1.33.1.4 | Output source, per-line voltage/current/load |
| Alarm | 1.3.6.1.2.1.33.1.6 | Present 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:
- upsBatteryStatus —
1.3.6.1.2.1.33.1.2.1— an enum: unknown / batteryNormal / batteryLow / batteryDepleted. - upsSecondsOnBattery —
1.3.6.1.2.1.33.1.2.2— seconds since the UPS switched to battery (0 when on mains). - upsEstimatedMinutesRemaining —
1.3.6.1.2.1.33.1.2.3— estimated runtime left on battery. - upsEstimatedChargeRemaining —
1.3.6.1.2.1.33.1.2.4— charge as a percentage. - upsBatteryVoltage —
1.3.6.1.2.1.33.1.2.5— battery voltage. - upsBatteryTemperature —
1.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:
- Check
upsOutputSource— is it running on mains or battery right now? - Read
upsBatteryStatus— normal, low, or depleted? - Read
upsEstimatedMinutesRemainingandupsEstimatedChargeRemainingfor how much runway is left. - 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.

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 withupsSecondsOnBattery. - Alert on
batteryLowand 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.