Hi, I'm looking for a way to gather detailed statistics about SNMP communication (number of retries and exact times). SNMP4j supports re-sending request if response didn't come within timeout limit which is very useful feature but it can mask some issues existing in the network. For example when there is a lot of retries because we are loosing some pockets, it will not be obviously visible. To find out how many retries was required you need to measure time between send request and getting response then depending on your TimeOutModel you need make some calculations.
This approach is not very useful because: - calculations may not be accurate because we measure time of whole message handling not sending single PDU - you will need to modify all places in your code where you calling SNMP4j send method. It could be many of them. Much better would be have possibility to get such info from Snmp class. For example you could add request listener to the Snmp, and in PendingRequest#responseReceived() method notify it about received response, something like this: public void responseReceived() { requestListener.onResponseReceived( target.getAddress(), //ip address pdu.getType(), //get get-next etc pdu.size(), //how many oids (System.nanoTime() - startedInNano) / SnmpConstants.MILLISECOND_TO_NANOSECOND , //how many ms was from creation of thiss PendingRequest till getting response target.getRetries() - retryCount);//how many retries this.responseReceived = true; ... public interface RequestListener{ void onResponseReceived(Address address,int type, int size, long durationInMs, int retries); } Passing this request listener would be optional. It would be useful to have also info about request without response and cancelled. Do you think it is good approach ? Maybe you have other ideas how to gather such data? Best Regards Michal _______________________________________________ SNMP4J mailing list SNMP4J@agentpp.org https://oosnmp.net/mailman/listinfo/snmp4j