I've been tasked with finding a way to "map" Port Channels to the physical interfaces they contain and visa versa. According to my searching around Thwack, and, most specifically, this Feature Request right here, NPM doesn't do this on its own. So, my question to you all is do you have any ideas on how to do this?
I was thinking of trying to use a universal device poller to read the Cisco Port Channel OID's (CISCO-PORT-CHANNEL-MIB 126.96.36.199.188.8.131.52.2184.108.40.206) and get the port channels and members that way, then have a PowerShell script running on a scheduled basis that would pull the data from the pollers and populate some interface custom properties. The problem is that Cisco doesn't populate these OID's for their devices reliably enough. For instance, the Nexus 7K's don't use these OID's. The universal SNMP OID's for aggregate interfaces (dot3adAggPortTable 1.2.840.10006.300.43.1.2.1) seem to work on all the Cisco devices I've tested them on, but I don't understand the data that those OID's are giving me. It's a bit over my head since I'm not really a network guy.
Does anyone have a better idea on how to do this in an automated or at least semi-automated way? I'm quite handy with Powershell scripts against the Orion API, but I just don't know how to reliably get this data for all of our Cisco devices (mostly Nexus 5K's, 6K's, and 7K's with maybe a couple of 9K's thrown in). The end goal is for each interface in Orion that is either a Port Channel or is a member of a Port Channel to have the following custom properties populated so that we can easily create Views and Reports based on this data as well as have Interface alerts include this information in the alert messages:
|Interface Custom Property Name||Possible Values|
|PortChannel_Membership||"N/A", "Port Channel", "Channel Member"|
|PortChannel_Number||"N/A", "<Port Channel Number>"|
A value of "N/A" for either of the above properties indicates that the Interface is not a Port Channel and is not a member of any Port Channel.