Emerson/Liebert/Vertiv PDU not showing power graphs

I finally need to post for some help on this. Everything I add to librenms works fine, except our PDUs. Libre can reach the PDU and get a response, but it’s not creating graphs for the power OIDs. The Liebert MIBs are loaded in the mibs directory, as well as the yaml file is in the includes directory. I even tried an snmpwalk of the oid listed in the yaml file to verify it’s the correct OID tree for the power info. Am I missing something? Do I need to enable an application for the device, or a module?

> ====================================
> Component | Version
> --------- | -------
> LibreNMS  | 1.49-57-gc3672be
> DB Schema | 2019_02_10_220000_add_dates_to_fdb (132)
> PHP       | 7.2.15-1+ubuntu16.04.1+deb.sury.org+1
> MySQL     | 10.0.38-MariaDB-0ubuntu0.16.04.1
> RRDTool   | 1.5.5
> SNMP      | NET-SNMP 5.7.3
> ====================================
> [OK]    Composer Version: 1.8.4
> [OK]    Dependencies up-to-date.
> [OK]    Database connection successful
> [OK]    Database schema correct

Here’s the discovery.php output: https://p.libren.ms/view/56a9a5a4
Here’s the poller.php output: https://p.libren.ms/view/117b697e

@Aaron_Q First of all, you should probably run validate.php and the fix the permission errors and whatever else it complains about. Once that is complete, rerun the the disovery and poller scripts and posts those links here along with an snmpwalk -On (make sure it’s all numeric) and I’ll see if I can sort this out. The snmpwalk is what I care most about right now.

Yep, validate was ok. No issues. Thank you for helping!
snmpwalk: https://p.libren.ms/view/74292850
discovery: https://p.libren.ms/view/85775486
poller: https://p.libren.ms/view/57f4f553

@Aaron_Q Thanks for getting the updated information. I’ll give this a spin and see what we come up with.

@spencerbutler Were you able to look through the files yet?

@Aaron_Q I did, and then got distracted. Thanks for the reminder.

I’ve done that myself plenty of times. Thanks again!

I’m not getting anywhere with the snmpwalk data you sent over. Will you run this command from your librenms install directory (substitute in your information) and paste the output here?

snmpwalk -v2c -c rocommunity hostname -M mibs:mibs/liebert LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable

Also, do you have updated MIB files from the vendor for this?

That command didn’t return much, so I added the full directory name and it came back with much more info:

snmpwalk -v2c -c LiebertEM -M mibs:/opt/librenms/mibs/liebert LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable
MIB search path: mibs:/opt/librenms/mibs/liebert
Cannot find module (SNMPv2-SMI): At line 5 in /opt/librenms/mibs/liebert/LIEBERT_GP_REG.MIB
Did not find ‘enterprises’ in module #-1 (/opt/librenms/mibs/liebert/LIEBERT_GP_REG.MIB)
Unlinked OID in LIEBERT-GP-REGISTRATION-MIB: emerson ::= { enterprises 476 }
Undefined identifier: enterprises near line 89 of /opt/librenms/mibs/liebert/LIEBERT_GP_REG.MIB
Did not find ‘lgpPower’ in module LIEBERT-GP-REGISTRATION-MIB (/opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB)
Did not find ‘liebertPowerModuleReg’ in module LIEBERT-GP-REGISTRATION-MIB (/opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB)
Unlinked OID in LIEBERT-GP-POWER-MIB: liebertGlobalProductsPowerModule ::= { liebertPowerModuleReg 1 }
Undefined identifier: liebertPowerModuleReg near line 19 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrConfig ::= { lgpPower 9 }
Undefined identifier: lgpPower near line 161 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrStatistic ::= { lgpPower 8 }
Undefined identifier: lgpPower near line 151 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrTopology ::= { lgpPower 7 }
Undefined identifier: lgpPower near line 141 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrControl ::= { lgpPower 6 }
Undefined identifier: lgpPower near line 131 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrConversion ::= { lgpPower 5 }
Undefined identifier: lgpPower near line 121 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrSettings ::= { lgpPower 4 }
Undefined identifier: lgpPower near line 111 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrStatus ::= { lgpPower 3 }
Undefined identifier: lgpPower near line 99 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrMeasurements ::= { lgpPower 2 }
Undefined identifier: lgpPower near line 88 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
Unlinked OID in LIEBERT-GP-POWER-MIB: lgpPwrBattery ::= { lgpPower 1 }
Undefined identifier: lgpPower near line 78 of /opt/librenms/mibs/liebert/LIEBERT_GP_POWER.MIB
LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable: Unknown Object Identifier

I did download the newest mibs, but at least the “POWER” file is the identical to what was already loaded. It looks like they haven’t changed since 2016.

I’m guessing we can trace this back to the first error in that message about SNMPv2-SMI not found. Is there a package I need to install? Maybe I’m missing a part of net-snmp.

Naw, that stuff is included in /opt/librenms/mibs, make that a full path too, like:

snmpwalk -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable

Did you add the new vendor MIBs to one of those directories? I would run the above command and see if it returns free of all the “cannot find foo” stuff. Then, if you have new MIBs put them in a directory named
/opt/librenms/mibs/liebert-new and change the directory in your snmp command to match.

snmpwalk -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert-new LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable

You can use https://p.libren.ms if the output is too long for here.

Ah. I didn’t know what those references meant. I moved the original mibs to “liebert.old” and made a new “liebert” directory with the latest mibs. This is interesting that snmpwalk seemed to work, but the oid doesn’t exist:

snmpwalk -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable
LIEBERT-GP-POWER-MIB::lgpPwrMeasurementPointTable = No Such Object available on this agent at this OID

I switched to PDU mib and received a response:

snmpwalk -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert LIEBERT-GP-PDU-MIB::lgpPduTable
LIEBERT-GP-PDU-MIB::lgpPduEntryId.1 = Gauge32: 1
LIEBERT-GP-PDU-MIB::lgpPduEntryUsrLabel.1 = STRING: MPH Rack PDU
LIEBERT-GP-PDU-MIB::lgpPduEntrySysAssignLabel.1 = STRING: 1
LIEBERT-GP-PDU-MIB::lgpPduEntryPositionRelative.1 = Gauge32: 1 Count
LIEBERT-GP-PDU-MIB::lgpPduEntrySysStatus.1 = Gauge32: 1
LIEBERT-GP-PDU-MIB::lgpPduEntryUsrTag1.1 = STRING:
LIEBERT-GP-PDU-MIB::lgpPduEntryUsrTag2.1 = STRING:
LIEBERT-GP-PDU-MIB::lgpPduEntrySerialNumber.1 = STRING: 535055G104C2013MAY300225
LIEBERT-GP-PDU-MIB::lgpPduEntryRbCount.1 = Gauge32: 3 Count

awesome! Is that with the new MIBs? I’m unable to reproduce that here. Can you add -On to the end of that command so I can see the numbers? Or better yet, open an issue and add the updated MIBs there (with a brief summation of what you need added).

It was with the new mibs, but the old (installed with librenms) ones work as well:

snmpwalk -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert.old LIEBERT-GP-PDU-MIB::lgpPduTable -On
. = Gauge32: 1
. = STRING: 1
. = Gauge32: 1 Count
. = Gauge32: 1
. = STRING: 535055G104C2013MAY300225
. = Gauge32: 3 Count

If I need to open an issue, I’m not really sure what to ask that’s new. Maybe to implement the PDU mib?

ah, OK. That’s probably because the snmpwalk you provided didn’t have that information. Can you post another one with the full path to both of those directories and the -OUneb options set?

I’m confused about the directories comment. I used /opt/librenms/mibs/liebert.old/ which is the original version. Do I need to use a different directory?

This should do it.

snmpwalk -OUneb -v2c -c LiebertEM -M /opt/librenms/mibs:/opt/librenms/mibs/liebert.old

Oh, I see what you mean. That needs a pastebin.

well crumb, that doesn’t give the data I need. Let me see if I can figure out a command that will walk all the OID that are needed.

You can try this , sent to pbin:

snmpwalk -OUneb -v2c -c LiebertEM  -m all -M /opt/librenms/mibs:/opt/librenms/mibs/liebert.old .