Does WhatsUp Gold support any of the standards for floating point values in SNMP?

I have long struggled to get WhatsUp Gold to collect various performance monitors via SNMP which are floating point values.

 

There are several mechanisms which the larger SNMP community uses to get floating-point data into an NMS like WhatsUp Gold. I have not found one that WhatsUp Gold supports (yet).

 

The most 'standardized' method I can find (so far) appears to be based on RFC 6340, which has been made into an SNMP MIB file by the IETF OPSAWG Working Group. The MIB is called FLOAT-TC-MIB, and it uses the "IEEE Standard for Floating-Point Arithmetic, Standard 754-2008". However, I've loaded the FLOAT-TC-MIB into WUG, and it just doesn't work. It sees values specified in other MIB files as using this textual-convention as text characters (converted from hex I think). This method has the data values in SNMP as octet strings, which must be converted to floating point values.

 

I have also seen some MIBs use the method described in the NET-SNMP-TC MIB, which uses an older standard called "IEEE Standard for Binary Floating-Point, ANSI/IEEE Std 754-1985". While I've seen this method used in MIB files, I have yet to see WUG actually work with it (I have no devices which use this method). This method uses the syntax type 'Opaque'.

 

Another, quite ugly method I've seen, is to use display-hints in MIB files, which uses a common data format (i.e. Integer), and gives hints as to how to use the data. Using this, you can, theoretically, have a number like 5997 appear in your NMS as 59.97 (a floating point value). However, WUG doesn't really work with this. Last time I tried, the values in the MIB walker tool worked great, but in performance reports, the integer value shows without the display-hint being applied (i.e. 5997 instead of 59.97).

 

Another method I've seen in competing products is the ability to take an integer and apply a scaling factor (in the NMS - not in the MIB files). With this method, when you define a performance monitor (or whatever), the NMS lets you define a scaling factor. For example, if I'm collecting frequency on the AC input on my UPS, and the UPS is reporting it as an integer like 5997, but the real value is 59.97Hz, then I can tell the NMS to scale the value by 0.01, and it will produce the real value (5997 * 0.01 = 59.97). The nice thing about this method is, even if the MIB file uses simple integers, you can condition your NMS to treat the data to represent what it should.

 

There are probably other methods too. However, none seem to work with WUG. Has anyone had any luck with this? I have many instances of protocol gateways which take in BACnet or Modbus data, and present it as SNMP for monitoring by WUG. However, BACnet and Modbus have well-adopted standards for floating point data, and SNMP doesn't seem to. Combine that with the fact that WUG does not allow any point scaling, and you end up with frequency (by default) showing 60Hz, even when it's really 59.5Hz (which is a HUGE problem). OR - you end up with it showing as 5950, when it's really 59.5Hz.


  • has anything been done with this? I am pulling in two temperature values from a device and both come in as 777 or 784 instead of 77.7 or 78.4.

  • Hello Eric,

     

    Thanks for writing this up in such detail.

    I have quoted this community post in full length in the feature request that you asked to be raised with yesterday's support ticket.

    @Robbie Kohn​ FYI, that's WUG-36524 we're talking about here