2 Replies Latest reply: May 9, 2012 5:27 PM by 935158 RSS

    EM12c: SNMP V2c table retrieval size limitation?

    935158
      Hi,

      I am trying to use SNMP fetchlet to retrieve data from ifTable and ifXTable tables and need to use V2c since some of the data is Counter64 data types. The collection of metrics fails at row 26 while the table contains more than 500 interfaces.

      Is there some limit on how many rows the SNMP fetchlet can retrieve with V2c?

      Anyone else using V2c in their plugins using SNMP fetchlet?

      Here is the xml definitions from the plugin using the SNMP fetchlet.

                <QueryDescriptor FETCHLET_ID="Snmp">
                     <Property NAME="NAME" SCOPE="INSTANCE">NAME</Property>
                     <Property NAME="hostname" SCOPE="INSTANCE">hostName</Property>
                     <Property NAME="COMMUNITY" SCOPE="INSTANCE" OPTIONAL="TRUE">CommunityString</Property>
                     <Property NAME="VERSION" SCOPE="GLOBAL">V2c</Property>
                     <Property NAME="TIMEOUT" SCOPE="INSTANCE" OPTIONAL="TRUE">Timeout</Property>
                     <Property NAME="TABLE" SCOPE="GLOBAL">TRUE</Property>
                     <Property NAME="OIDS" SCOPE="GLOBAL">
                          1.3.6.1.2.1.2.2.1.1 <!--ifIndex-->
                          1.3.6.1.2.1.2.2.1.2 <!--ifDescr-->
                          1.3.6.1.2.1.31.1.1.1.18 <!--ifalias-->
                          1.3.6.1.2.1.31.1.1.1.15 <!--XTable ifHighSpeed-->
                          1.3.6.1.2.1.2.2.1.7 <!--ifAdminStatus-->
                          1.3.6.1.2.1.2.2.1.8 <!--ifOperStatus-->
                          1.3.6.1.2.1.31.1.1.1.7 <!--ifHCInUcastPkts-->
                          1.3.6.1.2.1.31.1.1.1.11 <!--ifHCOutUcastPkts-->
                          1.3.6.1.2.1.2.2.1.13 <!--ifInDiscards-->
                          1.3.6.1.2.1.2.2.1.19 <!--ifOutDiscards-->
                          1.3.6.1.2.1.2.2.1.14 <!--ifInErrors-->
                          1.3.6.1.2.1.2.2.1.20 <!--ifOutErrors-->
                          1.3.6.1.2.1.31.1.1.1.6 <!--iHCfInOctets-->
                          1.3.6.1.2.1.31.1.1.1.10 <!--ifHCOutOctets-->
                     </Property>
                </QueryDescriptor>

      Thanks, Ari
        • 1. Re: EM12c: SNMP V2c table retrieval size limitation?
          Adeesh Fulay
          Ari,

          Try the following:
          emctl setproperty agent -allow_new -name SnnmpTableMaxNumRowsFetch -value 2000

          This should increase the number of rows retrieved.
          • 2. Re: EM12c: SNMP V2c table retrieval size limitation?
            935158
            Hi,

            Thank you for the response,

            I tried this value but it only applies for SNMP V1 version where the getNext operation is used to retrieve the table.

            If you have Counter64 values you need to use SNMP V2c. While doing V2c the max limitation will be used in the first portion where Snmp fetchlet uses getNext operations using the first OID to determine the size (number of rows) of the table, and then uses this size value in the getBulk operation as max-repetitions argument.

            The getBulk is only sent one time and the result only contains Varbinds to the max size of allowed the packet. The return data is thus limited to a number of varbinds which is much lower that the actual table.

            What I think it should be doing is not do the getNext operation to get the table size, but instead just do multiple getBulk with smaller number of max-repetitions, something which would be like 5 or 10. This would retrieve those 5 or 10 rows at a time. Also this value should be a parameter in the fetchlet configuration since the plugin developer would benefit using this to configure/optimize the getBulk operation. See MAX-REPETITIONS property in the example below.

            As an example of the config for query descriptor:

                      <QueryDescriptor FETCHLET_ID="Snmp">
                           <Property NAME="NAME" SCOPE="INSTANCE">NAME</Property>
                           <Property NAME="hostname" SCOPE="INSTANCE">hostName</Property>
                           <Property NAME="COMMUNITY" SCOPE="INSTANCE" OPTIONAL="TRUE">CommunityString</Property>
                           <Property NAME="VERSION" SCOPE="GLOBAL">V2c</Property>
            _*               <Property NAME="MAX-REPETITIONS" SCOPE="GLOBAL">10</Property>*_
                           <Property NAME="TIMEOUT" SCOPE="INSTANCE" OPTIONAL="TRUE">Timeout</Property>
                           <Property NAME="TABLE" SCOPE="GLOBAL">TRUE</Property>
                           <Property NAME="OIDS" SCOPE="GLOBAL">
                                1.3.6.1.2.1.2.2.1.1 <!--ifIndex-->
                                1.3.6.1.2.1.2.2.1.2 <!--ifDescr-->
                                1.3.6.1.2.1.31.1.1.1.18 <!--ifalias-->
                                1.3.6.1.2.1.31.1.1.1.15 <!--XTable ifHighSpeed-->
                                1.3.6.1.2.1.2.2.1.7 <!--ifAdminStatus-->
                                1.3.6.1.2.1.2.2.1.8 <!--ifOperStatus-->
                                1.3.6.1.2.1.31.1.1.1.7 <!--ifHCInUcastPkts-->
                                1.3.6.1.2.1.31.1.1.1.11 <!--ifHCOutUcastPkts-->
                                1.3.6.1.2.1.2.2.1.13 <!--ifInDiscards-->
                                1.3.6.1.2.1.2.2.1.19 <!--ifOutDiscards-->
                                1.3.6.1.2.1.2.2.1.14 <!--ifInErrors-->
                                1.3.6.1.2.1.2.2.1.20 <!--ifOutErrors-->
                                1.3.6.1.2.1.31.1.1.1.6 <!--iHCfInOctets-->
                                1.3.6.1.2.1.31.1.1.1.10 <!--ifHCOutOctets-->
                           </Property>
                      </QueryDescriptor>



            Thanks, Ari