[rrd-users] Can I get a single update into an RRA?
Simon Hobson
linux at thehobsons.co.uk
Fri Dec 11 18:33:16 CET 2009
David Mitchell wrote:
>I have a problem I've run into with some statistics I'm trying to
>gather. I am getting wireless client statistics from all of my access
>points via SNMP and putting the values into RRD files. All of my values
>are GAUGE's. Specifically, connection quality (S/N ratio basically) and
>connection time. I keep one RRD file per client per access point. I
>create a directory for each client MAC, and in that directory I have an
>RRD file for each access point the client has shown up on.
>
>The problem I run into is that some clients are connected so
>sporadically that I rarely get two updates in a row so nothing ever
>makes it into my RRAs. I can increase the heartbeat to increase the
>chances that the client will get picked up twice in the same RRD file.
>That helps, but I do end up with fictional values in the RRA making it
>appear that the client was connected for a period of time when it
>wasn't.
How about having your scripts update the rrd files with "unknown" any
time the client isn't accessible ? You can then tune the rrd to
configure how much of each step must have data in it for the data to
be accepted. That way, when a client comes online, there will be a
previous data point for rrdtool to work with.
Eg, you update every minute.
At present, you do nothing for missing clients. A client becomes
visible at time 00:05, but rrdtool has no previous update to
associate this one with - so it cannot work out a rate.
If you update all files every minute, then when the client comes
online at 00:05, rrdttol has a previous update at 00:04 to work from.
The data will now be unknown up to 00:04, and then a rate calculated
from the update for the period from 00:04 to 00:05.
If updating all files all the time would be too much work, then the
next best things would be to do historical updates when required.
Taking the same example as above, at time 00:05 you find a client has
come online. Before doing an update, you work out if there has been
an update since 00:04 (or as far back as you decide to go - going
back 2 sample periods would allow for slight delays in script run
times). If not, then update the file with unknown at time 00:04
followed by the recorded value at time 00:05.
The thing to remember is that even when you use a gauge data type,
internally rrd still woks in rates - it only ever works in rates.
When you update a gauge datatype, rrd works out the rate for the
previous period by dividing the value you give it by the time
interval between the previous and current updates and stores that. It
can only do this if it has a previous update time (that is within the
heartbeat interval) to work with.
--
Simon Hobson
Visit http://www.magpiesnestpublishing.co.uk/ for books by acclaimed
author Gladys Hobson. Novels - poetry - short stories - ideal as
Christmas stocking fillers. Some available as e-books.
More information about the rrd-users
mailing list