From OpenNMS
HOWTO: Monitoring APC UPS using OpenNMS
In OpenNMS there are a lot of datacollections for APC UPS. It is also possible to monitor battery, online status and the amount of bad battery packs with the OpenNMS SNMP Monitor.
The following configuration assume the PowerNet MIB is supported.
upsBasicBatteryStatus .1.3.6.1.4.1.318.1.1.1.2.1.1.0 upsAdvBatteryReplaceIndicator .1.3.6.1.4.1.318.1.1.1.2.2.4.0 upsAdvBatteryNumOfBadBattPacks .1.3.6.1.4.1.318.1.1.1.2.2.6.0 upsBasicOutputStatus .1.3.6.1.4.1.318.1.1.1.4.1.1.0
Detecting with capsd
First of all you need a new service in your capsd-configuration. We use the generic SNMP-Monitor to detect devices with this supported MIBs.
$OPENNMS_HOME/etc/capsd-configuration.xml
<!-- APC UPS -->
<protocol-plugin protocol="APC-Battery-Status" class-name="org.opennms.netmgt.capsd.plugins.SnmpPlugin"
scan="on" user-defined="true">
<property key="vbname" value=".1.3.6.1.4.1.318.1.1.1.2.1.1.0" />
<property key="timeout" value="2000" />
<property key="retry" value="1" />
</protocol-plugin>
<protocol-plugin protocol="APC-Battery-Replace-Indicator" class-name="org.opennms.netmgt.capsd.plugins.SnmpPlugin"
scan="on" user-defined="true">
<property key="vbname" value=".1.3.6.1.4.1.318.1.1.1.2.2.4.0" />
<property key="timeout" value="2000" />
<property key="retry" value="1" />
</protocol-plugin>
<protocol-plugin protocol="APC-Battery-Bad-Packs-Count" class-name="org.opennms.netmgt.capsd.plugins.SnmpPlugin"
scan="on" user-defined="true">
<property key="vbname" value=".1.3.6.1.4.1.318.1.1.1.2.2.6.0" />
<property key="timeout" value="2000" />
<property key="retry" value="1" />
</protocol-plugin>
<protocol-plugin protocol="APC-Output-Status" class-name="org.opennms.netmgt.capsd.plugins.SnmpPlugin"
scan="on" user-defined="true">
<property key="vbname" value=".1.3.6.1.4.1.318.1.1.1.4.1.1.0" />
<property key="timeout" value="2000" />
<property key="retry" value="1" />
</protocol-plugin>
Next step start monitoring the OID values.
Monitoring with Pollerd
To monitor this OIDs you have to create some monitors in
$OPENNMS_HOME/etc/poller-configuration.xml
<!-- APC UPS -->
<service name="APC-Battery-Status" interval="300000" user-defined="false" status="on">
<parameter key="retry" value="5"/>
<parameter key="timeout" value="5950"/>
<parameter key="port" value="161"/>
<parameter key="oid" value=".1.3.6.1.4.1.318.1.1.1.2.1.1.0"/>
<parameter key="operator" value="="/>
<parameter key="operand" value="2"/>
<parameter key="reason-template" value="APC battery status is not normal. The state should be \
batteryNormal(${operand}) the observed value is ${observedValue}. Please check your APC event log. \
Syntax: unknown(1), batteryNormal(2), batteryLow(3)"/>
</service>
<service name="APC-Battery-Replace-Indicator" interval="300000" user-defined="false" status="on">
<parameter key="retry" value="5"/>
<parameter key="timeout" value="5950"/>
<parameter key="port" value="161"/>
<parameter key="oid" value=".1.3.6.1.4.1.318.1.1.1.2.2.4.0"/>
<parameter key="operator" value="="/>
<parameter key="operand" value="1"/>
<parameter key="reason-template" value="APC UPS battery needs replacing. The state should be \
noBatteryNeedsReplacing(${operand}) the observed value is ${observedValue}. Please check your APC event log. \
Syntax: noBatteryNeedsReplacing(1), batteryNeedsReplacing(2)"/>
</service>
<service name="APC-Battery-Bad-Packs-Count" interval="300000" user-defined="false" status="on">
<parameter key="retry" value="5"/>
<parameter key="timeout" value="5950"/>
<parameter key="port" value="161"/>
<parameter key="oid" value=".1.3.6.1.4.1.318.1.1.1.2.2.6.0"/>
<parameter key="operator" value="="/>
<parameter key="operand" value="0"/>
<parameter key="reason-template" value="APC UPS bad battery pack is detected. The state should be \
badPacks(${operand}) the observed value is ${observedValue}. Please check your APC event log. \
Syntax: Amount of bad battery packs"/>
</service>
<service name="APC-Output-Status" interval="300000" user-defined="false" status="on">
<parameter key="retry" value="5"/>
<parameter key="timeout" value="5950"/>
<parameter key="port" value="161"/>
<parameter key="oid" value=".1.3.6.1.4.1.318.1.1.1.4.1.1.0"/>
<parameter key="operator" value="="/>
<parameter key="operand" value="2"/>
<parameter key="reason-template" value="APC UPS output status is not online. The state should be \
onLine(${operand}) the observed value is ${observedValue}. Please check your APC event log. \
Syntax: unknown(1), onLine(2), onBattery(3), onSmartBoost(4), timedSleeping(5), softwareBypass(6), off(7), \
rebooting(8), switchedBypass(9), hardwareFailureBypass(10), sleepingUntilPowerReturn(11), onSmartTrim(12)"/>
</service>
<monitor service="APC-Battery-Status" class-name="org.opennms.netmgt.poller.monitors.SnmpMonitor"/>
<monitor service="APC-Battery-Replace-Indicator" class-name="org.opennms.netmgt.poller.monitors.SnmpMonitor"/>
<monitor service="APC-Battery-Bad-Packs-Count" class-name="org.opennms.netmgt.poller.monitors.SnmpMonitor"/>
<monitor service="APC-Output-Status" class-name="org.opennms.netmgt.poller.monitors.SnmpMonitor"/>
The monitored values are interpreted as follow:
upsBasicBatteryStatus .1.3.6.1.4.1.318.1.1.1.2.1.1.0
- unknown(1)
- batteryNormal(2) - UP
- batteryLow(3)
upsAdvBatteryReplaceIndicator .1.3.6.1.4.1.318.1.1.1.2.2.4.0
- noBatteryNeedsReplacing(1) - UP
- batteryNeedsReplacing(2)
upsAdvBatteryNumOfBadBattPacks .1.3.6.1.4.1.318.1.1.1.2.2.6.0
- number of bad battery packs, should be 0 - UP
upsBasicOutputStatus .1.3.6.1.4.1.318.1.1.1.4.1.1.0
- unknown(1)
- onLine(2) - UP
- onBattery(3)
- onSmartBoost(4)
- timedSleeping(5)
- softwareBypass(6)
- off(7)
- rebooting(8)
- switchedBypass(9)
- hardwareFailureBypass(10)
- sleepingUntilPowerReturn(11)
- onSmartTrim(12)






