While you may find the required index number (for example, of a network interface) among the SNMP OIDs, sometimes you may not completely rely on the index number always staying the same.
Index numbers may be dynamic - they may change over time and your item may stop working as a consequence.
To avoid this scenario, it is possible to define an OID which takes into account the possibility of an index number changing.
For example, if you need to retrieve the index value to append to ifInOctets that corresponds to the GigabitEthernet0/1 interface on a Cisco device, use the following OID:
A special syntax for OID is used:
<OID of data>["index","<base OID of index>","<string to search for>"]
|OID of data||Main OID to use for data retrieval on the item.|
|index||Method of processing. Currently one method is supported:
index – search for index and append it to the data OID
|base OID of index||This OID will be looked up to get the index value corresponding to the string.|
|string to search for||The string to use for an exact match with a value when doing lookup. Case sensitive.|
Getting memory usage of apache process.
If using this OID syntax:
the index number will be looked up here:
... HOST-RESOURCES-MIB::hrSWRunPath.5376 = STRING: "/sbin/getty" HOST-RESOURCES-MIB::hrSWRunPath.5377 = STRING: "/sbin/getty" HOST-RESOURCES-MIB::hrSWRunPath.5388 = STRING: "/usr/sbin/apache2" HOST-RESOURCES-MIB::hrSWRunPath.5389 = STRING: "/sbin/sshd" ...
Now we have the index, 5388. The index will be appended to the data OID in order to receive the value we are interested in:
HOST-RESOURCES-MIB::hrSWRunPerfMem.5388 = INTEGER: 31468 KBytes