Can someone point me to a good definition of Gauge32 vs Counter32? I understand that Counter32 can wrap, but Gauge32 can't.
I'm trying to understand their semantics. For example, I've heard you should take the difference between two Counter32 readings to get a value/second. Is there something like that for a Gauge32 value?
Thanks for any insight.
Yes, for Gauge32 you can also use that.
Deep down inside, Gauge32 and Counter32 are the same, except that data stored in Counter32 keeps increasing (and wrap when upper limit hits).
http://www.ireasoning.com/javadocs/com/ireasoning/protocol/snmp/SnmpCounter32.html
For Gauge32 you can expect the data increases and decreases based on what real world information it tries to provide.
http://www.ireasoning.com/javadocs/com/ireasoning/protocol/snmp/SnmpGauge32.html
The best definition of these (i.e. the definition) is in the sections of the RFC that defines them: RFC 2578.
As the RFC says, a Counter32 has no defined initial value, so a single reading of Counter32 has no information content. This is why you have to take two (or more) readings to make sense of it. An example of this would be the number of packets received on an ethernet interface. If you take a reading and get back 4 million packets, you haven't learned anything: the wire could have been pulled out of the interface for the past year, or it could be passing millions of packets per second. You have to take multiple readings to know anything.
A Gauge32 on the other hand, measures some quantity at a moment in time and may go up or down. You can't necessarily make meaningful observations about two (or more) readings over time. An example of this is free disk space. You can fetch the value now, and an hour from now, and find that the change is zero -- but you can't draw the conclusion that nothing has been written to disk over the course of the hour. It's possible that the disk is getting hammered with constant additions and deletions that do not result in a net change in free space.
They both can represent a value up to 2^32.
The difference lies that once a they reach 2^32 a counter starts again from 0 and represents the value (N+2^32)+X as X whereas a gauge doesn't wrap.
Counters are also called rollover counters. They are typically used to count the number of packets or octets sent or received. After a rollover counter has wrapped around several times ,it is difficult for management system to know whether the counter value value of X means that the quantity observed is X or (N+2^32)+X where N is no of rollovers.So the system needs to periodically poll the object to keep tracks of wraparounds.
Gauge on the other hand are used to measure the current value of some entity such as current number of packets stored in a queue.A gauge can be used to store the difference in value of some entity from the start to the end of a time interval. This enables gauge to used to monitor the rate of change of value of entity.
来源:https://stackoverflow.com/questions/2718283/definition-of-snmp-gauge32-vs-counter32