Hi Everyone,
I am building a Multi-Threaded SNMP Driver that is able to retrieve SNMP tables. I am using the ":tablev2" suffix to define the table columns Parameter in the group. Also, I listed all the columns OIDs in the parameter that I am referencing in the group.
I have other tables that are working but some tables are coming back with: "Unable to retrieve the variable bindings (count=0, last error: 1)" message instead of the required data.
When I tried to remove some of the OIDs that are listed in the parameter, I discovered that some of the OIDs are causing the issue! However, I still get empty object arrays for the other OIDs that don't show the error!
The group:
<Group id="51000" connection="0">
<Name>HP Power Supply</Name>
<Content multipleGet="true">
<Param>50400:tablev2</Param>
</Content>
</Group>
The Parameter:
<Param id="50400" trending="false">
<Name>PowerSupplyTable_SNMP_OIDs</Name>
<Description>PowerSupply Table SNMP</Description>
<Type options="loadOID">read</Type>
<Interprete>
<RawType>other</RawType>
<LengthType>next param</LengthType>
<Type>string</Type>
</Interprete>
<SNMP>
<Enabled>true</Enabled>
<OID type="complete">
1.3.6.1.4.1.232.6.2.9.3.1.1;
1.3.6.1.4.1.232.6.2.9.3.1.3;
1.3.6.1.4.1.232.6.2.9.3.1.4;
1.3.6.1.4.1.232.6.2.9.3.1.5;
1.3.6.1.4.1.232.6.2.9.3.1.6;
1.3.6.1.4.1.232.6.2.9.3.1.7;
1.3.6.1.4.1.232.6.2.9.3.1.8;
1.3.6.1.4.1.232.6.2.9.3.1.9;
1.3.6.1.4.1.232.6.2.9.3.1.13
</OID>
</SNMP>
</Param>
To solve this issue, I am currently polling each column as a table instead of having all columns under one parameter, which I think is not the best effective solution.
Thanks,
As this question has been inactive for a long time, we will now close it. If you still want further assistance, could you post a new question?
Hi, could you try by putting all the oids in one line in the parameter definition?
<OID type="complete">1.3.6.1.4.1.232.6.2.9.3.1.1;1.3.6.1.4.1.232.6.2.9.3.1.3;1.3.6.1.4.1.232.6.2.9.3.1.4;1.3.6.1.4.1.232.6.2.9.3.1.5;1.3.6.1.4.1.232.6.2.9.3.1.6;1.3.6.1.4.1.232.6.2.9.3.1.7;1.3.6.1.4.1.232.6.2.9.3.1.8;1.3.6.1.4.1.232.6.2.9.3.1.9;1.3.6.1.4.1.232.6.2.9.3.1.13</OID>
I have already tested that and it does not make any difference. The ones that are working are all stacked in the same structure.
I have added them in new lines to spot any differences in the OIDs.
The syntax that you’re using seems to be correct at first sight.
Could you explain a bit more when you write that you get empty object arrays for OIDs that don’t show the error, and on the other side you’re polling each column as a table as a workaround? Do you mean that polling one column works (also to process the data, no empty object array) and as soon as there are more columns that it’s not working anymore?
It will only work if I define a parameter for each column and then list all parameters in the group and add “:tabelv2” as a suffix to each of these columns. I then get the results of all columns but with an instance array at index 0 in every response/table.
If I remove the OIDs that cause the return of the error from the single parameter, I get the instance in index 0 and the other arrays are empty.
Would it be possible to take a Wireshark capture when polling one device and check what data is entering when all OIDs are specified in one line in the driver? I would be interested to see what packets DataMiner is sending and what the reply of the device is.
I have just done a test on one of the HP ProLiant DL380 G7 servers and I was able to get a response using the method mentioned in the question. However, the returned columns are still empty.
The other servers that failed are HP ProLiant DL360 Gen9 and HP ProLiant DL360 Gen10.
The only solution that worked so far is to work with each column as a separate SNMP table.