I am new to NPM and the whole process of custom pollers. Normally, a value - like "octets transmitted" follow the "ifIndex" notation to identify which interface is which value. Similarly, all the "octets transmitted" are grouped together (by ifIndex number) and then a next block of "octets received" - etc.
Cisco doesn't appear to follow this methodology for the SNMP polling of Optical values. Instead, it looks like this:
1) First, there's a "entPhysicalDescr" table (similar to ifIndex, but for physical interfaces)
[ entPhysicalDescr ]
$ snmpwalk -v2c -c comm avl-fed-pop-sw5 .1.3.6.1.2.1.47.1.1.1.1.2
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1042 = STRING: "1000BaseBX10-D SFP"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1043 = STRING: "GigabitEthernet0/1 Module Temperature Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1044 = STRING: "GigabitEthernet0/1 Supply Voltage Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1045 = STRING: "GigabitEthernet0/1 Bias Current Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1046 = STRING: "GigabitEthernet0/1 Transmit Power Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1047 = STRING: "GigabitEthernet0/1 Receive Power Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1048 = STRING: "1000BaseBX10-D SFP"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1049 = STRING: "GigabitEthernet0/2 Module Temperature Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1050 = STRING: "GigabitEthernet0/2 Supply Voltage Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1051 = STRING: "GigabitEthernet0/2 Bias Current Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1052 = STRING: "GigabitEthernet0/2 Transmit Power Sensor"
SNMPv2-SMI::mib-2.47.1.1.1.1.2.1053 = STRING: "GigabitEthernet0/2 Receive Power Sensor"
** So please note -- Gig1/0 repeats five times, the "type" of SFP, and then once for each of the various sensors -- then G0/2, etc.
2) Then, the "entSensorValue" will return the value for each of those sensors, example:
[ entSensorValue ]
$ snmpwalk -v2c -c ercnoc avl-fed-pop-sw5 1.3.6.1.4.1.9.9.91.1.1.1.1.4
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1043 = INTEGER: 385
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1044 = INTEGER: 33
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1045 = INTEGER: 183
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1046 = INTEGER: -67
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1047 = INTEGER: -78
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1049 = INTEGER: 420
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1050 = INTEGER: 33
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1051 = INTEGER: 209
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1052 = INTEGER: -63
SNMPv2-SMI::enterprises.9.9.91.1.1.1.1.4.1053 = INTEGER: -78
3) This corresponds to what we see within the Cisco device (with each value needing to be divided by 10 to return the proper adjusted value)
avl-fed-pop-sw5#show interfaces transceiver
Optical Optical
Temperature Voltage Current Tx Power Rx Power
Port (Celsius) (Volts) (mA) (dBm) (dBm)
--------- ----------- ------- -------- -------- --------
Gi0/1 38.5 3.32 18.3 -6.7 -7.8
Gi0/2 42.0 3.33 20.9 -6.3 -7.8
****
I'm not seeing how to have NPM "graph" such a weird table layout. It would mean graphing "every 5th entry" and using the "entPhysicalDescr" instead of "ifIndex" -- and then complicating it by needing to graph at a different starting index -- so that all the "Transmit Power" are together, then "Receive Power" together, etc.
Suggestions for how to conquer this beast?