For additional info describing the need, please see:
Would it be possible to develop a {CustomPoller.Rate} field which stores the immediately previous {CustomPoller} value? If this were available to us, we could use the custom poller to compare deltas of values over time. Example, if you wanted to know the percentage of packets which are drops over the last minute, you would set-up a custom poller for each of HC out packets (UCast, Mcast, Bcast) and one for Out Discards. Then, you would calculate deltas for each, and the comparison would then be a simple addition and division. You could then alert on if the result surpassed a certain threshold. In order to that time lines match, the four pollers would have to poll at same intervals, such as every minute.
CustomPollers:
ifHCOutUcastPkts 1.3.6.1.2.1.31.1.1.1.11
ifHCOutMcastPkts 1.3.6.1.2.1.31.1.1.1.12
ifHCOutBcastPkts 1.3.6.1.2.1.31.1.1.1.13
ifOutDiscards 1.3.6.1.2.1.2.1.19
Transforms:
DeltaBCastOut = ifHCOutBcastPkts - ifHCOutBcastPkts.Rate
DeltaMCastOut = ifHCOutMcastPkts - ifHCOutMcastPkts.Rate
DeltaUCastOut = ifHCOutUcastPkts - ifHCOutUcastPkts.Rate
DeltaOutDiscards = ifOutDiscards - ifOutDiscards.Rate
Final Transform:
ifOutDropPercent = DeltaOutDiscards / (DeltaBCastOut + DeltaMCastOut + DeltaUCastOut)
Alert if ifOutDropPercent >= 20%
Of course, if two pollers are at different intervals for some reason, the poller could be normalized by creating a delta of a time ticker (such as 1.3.6.1.2.1.1.3 sysUpTime), and dividing by time. Another good thing about the .Rate field is that if one doesn't care about graphs, and only cares about current rate, then the administrator wouldn't have to select keep historical data -- allowing more frequest polls without wasting database space.