Oct 19, 2009 1:44 PM
Graphing an actual value and not an average
-
Like (1)
We poll the number of active channels on our PRI on a Cisco 2691
I setup a template using snmp to get and graph the values from this OID: 1.3.6.1.4.1.9.10.19.1.1.4.0.
Typically I see one or 2 channels in use when I do snmpget or use mrtg to graph it.
I want Zenoss/RDDtool to graph the actual value returned each time it's polled, but I don't end up with whole numbers. It's not possible to use 1.23 channels out of 23 possible in use.
Graph Commands:
-F
-E
--height=100
--width=500
--vertical-label=Lines in Use
DEF:pri-raw=rrdPath/pri_pri.rrd:ds0:AVERAGE
CDEF:pri=pri-raw
LINE1:pri-raw#00cc00ff:pri
GPRINT:pri-raw:LAST:cur\:%5.2lf
GPRINT:pri-raw:AVERAGE:avg\:%5.2lf
GPRINT:pri-raw:MAX:max\:%5.2lf\j
I suspect he is looking for the same answer as I am. I am using gague for counting vrtual circuits associated with an ATM interface, the problem is, I cannot have 500.75 circuits up. The return is an integer. Since RRD is averaging X number of returns, if there is a variance I will get a non whole number. I would like RRD to just show 501, then 500 if that was the return, and then back up to 501.
Averaging is great for trending, but realtime looks at the graphs, I would more like to see real values and have it aggrigate and average the historical stuff.
I THINK the problem is here in the definition:
DEF:pri-raw=rrdPath/pri_pri.rrd:ds0:AVERAGE
I am guessing we would want something closer to:
DEF:pri-raw=rrdPath/pri_pri.rrd:ds0:REAL (dont know if something like this exists)
Grrr.. Should have looked up the data on the rrd website before posting..
is the consolidation method (choose from MIN,MAX,AVERAGE,LAST)
I think what we want to use is the LAST method for return values. That should graph (I hope) correctly.
now I just have to figure out how to do it. heheh.
I am certainly not an RRD expert, but I think some clarification is in order here to make sure your understanding of how it works is more accurate. May be more info than you need, but perhaps this will help others reading this thread..
-----
Consolidation Function
Consolidation defines the aggregation method used to turn compress a given series of data into a smaller dataset.
It's important to understand, though, that when you're looking at your typical default "hourly" RRD graph, you are NOT looking at data that has been consolidated in the RRD file. When you use the GAUGE data source type, the values you see on that hourly graph should be 100% accurate. No averaging has been done. The default RRA parameters in Zenoss include 600 intervals of "high-resolution" (unconsolidated) data. Assuming you are polling every 5 minutes (default), this means you should have 50 hours of unconsolidated data. Since the default hourly graph shows 36 hours, that graph should not show any consolidated data.
Now, when you use the COUNTER or DERIVE data source type, the value is calculated as the delta (or change) between the value returned from the current poll and the value returned from the previous poll. That number (delta) is then averaged out to a per-second value based on your polling interval. Network interface counters are a perfect example of this:
First poll --> device returns "11209874" as the current, at-the-moment, perpetually-increasing value for octets that have passed through the interface
Second poll --> device returns "89762984351" as the new (current) counter value for octets that have pass through the interface
The resulting value stored in the RRD file will be the delta of these two polls divided by the number of seconds that have passed.
Thus, value stored will be:
89,762,984,351 - 11,209,874 = 89,751,774,477 / 300 = 299,172,581.59 [octets-per-second]
(Okay, if you multiply that number by 8 to get the number of BYTES per second, you get 2,393,380,652.72 bytes/sec.. an almost impossibly high number in reality, but you get the point... )
Back to consolidation..
The default RRA paramters for RRD files created by Zenoss are as follows, with explanation:
RRA:AVERAGE:0.5:1:600
- consolidates every 1 poll (so no consolidation)
- keeps 600 intervals of the polls
12 polls per hour means 50 hours of hi-res data (12/hr * 50hrs = 600)
RRA:AVERAGE:0.5:6:600
- consolidates 6 values at a time (averages last 6 polls)
- thus, 1 value every 30 minutes (5min * 6 polls)
- keeps 600 values
- thus, 12.5 days worth of values (48/day * 12.5days = 600)
RRA:AVERAGE:0.5:24:600
- consolidates last 24 polls at a time
- thus, 1 value every 2 hours (5min * 24 polls)
- keeps 600 values
- thus, 50 days worth of values (12/day * 50days = 600)
RRA:AVERAGE:0.5:288:600
- consolidates last 288 polls at a time
- thus, 1 value every 24 hours (5min * 288polls / 60min/hr)
- keeps 600 values
- thus, 600 days worth of values
So in reality each RRD file is storing 4 different "lines" of data for each data source (forgetting the MAXIMUM RRAs it is also recording..). Each "line" of data is less precise (more consolidated) than the previous.
When you request a time-period of data from the RRD file, RRDtool determines the MOST ACCURATE representation of that time-period it has stored. Thus, when you ask for the time-period between 300 days ago and 200 days ago, all of the resulting values returned from RRDtool will be from the "fourth line" of data -- that from the RRA:AVERAGE:0.5:288:600 line. Likewise when you ask for the last 36 hours of data, you will get values from the "first line" of stored values -- that from the RRA:AVERAGE:0.5:1:600 line, which is by previous definition not consolidated.
I don't recall how it determines what data to send when the time-period crosses "line" boundaries, but I know it is explained somewhere on the RRDtool website..
-----
Hope this makes sense. If anyone can speak to this explanation being incorrect, PLEASE DO SO!
Thanks!
When I change it from AVERAGE to LAST, my graphs for that data point stop displaying, even after allowing it sufficient time (over night) to rebuild/collect data.
After changing the consolidation function, you will need to rename or delete the old RRD file. It will be re-created with the new consolidation settings.
--Jay
Not sure where you changed it, but there are two places you have to change it. One is in the data point. You have to change the default create cmd. This is what I have for a graph that is using LAST
RRA:AVERAGE:0.5:1:600
RRA:AVERAGE:0.5:6:600
RRA:AVERAGE:0.5:24:600
RRA:AVERAGE:0.5:288:600
RRA:MAX:0.5:6:600
RRA:MAX:0.5:24:600
RRA:MAX:0.5:288:600
RRA:LAST:0.5:1:600
RRA:LAST:0.5:6:600
RRA:LAST:0.5:24:600
RRA:LAST:0.5:288:600
The other place is in the graph definition, you have to change the graph point's consolidation function to LAST. After that, you have to delete the corresponding RRD file and it should start working in a few minutes.
This looks like great Wiki content, why don't you create a new document for other users to share your knowledge?
Thanks!
Matt Ray
Zenoss Community Manager
I actually used your values from your default cmd create:
RRA:AVERAGE:0.5:1:600
RRA:AVERAGE:0.5:6:600
RRA:AVERAGE:0.5:24:600
RRA:AVERAGE:0.5:288:600
RRA:MAX:0.5:6:600
RRA:MAX:0.5:24:600
RRA:MAX:0.5:288:600
RRA:LAST:0.5:1:600
RRA:LAST:0.5:6:600
RRA:LAST:0.5:24:600
RRA:LAST:0.5:288:600
changed AVERAGE to LAST and deleted the rrd file, but I'm still not getting the proper data graphed. The OID I'm using works in mrtg or via snmpget.
Are you 100% sure you have the Data Source Type set to GAUGE? It really sounds like you've got it set to COUNTER or DERIVE...
Other than that, I would check the results from a command-line "snmpget" a few times -- make sure you're getting integers from the device.
Follow Us On Twitter »
|
Latest from the Zenoss Blog » | Community | Products | Services Resources | Customers Partners | About Us | ||
Copyright © 2005-2011 Zenoss, Inc.
|
||||||||