[rrd-developers] Anybody working on this? / Proposal
Peter Stamfest
peter at stamfest.at
Thu Mar 3 09:06:40 CET 2011
Hello,
I'm currently thinking about the possiblity to extend the "reach" of
rrdgraph. When dealing with many different sources of data for RRD
files, there is the problems that they might be dispersed over a large
number of systems.
When one wants to use data from different machines in a single graph,
this becomes a problem:
- it is possible to use rrdcached to do graphing for every set of RRDs
on a single server
- rrdtool itself can deal with graphing from ordinary files
- using files from different rrdcached instances and local files
cannot be expressed easily, IIUC.
One solution could be to use NFS to allow distributed access to RRD
files. I'm not a big fan of NFS though, so I am thinking about something
else.
I propose to allow for the specification of different styles of
<rrdfile> in DEF arguments to rrdgraph.
Something like this already exists for libdbi (using sql// as a prefix).
So I would like to allow for
rrdcached//tcp/<HOST>/<PORT>/<PATH>
and
rrdcached//unix/<SOCKET>//<PATH>
or something better (also see below).
Remarks:
- This would require to extend the FETCH command in rrdcached.
- For better performance, a "packed/binary" format might be useful in
the output of "FETCH" - the protocol already should allow for this
- It would be better to allow for full URL syntax, but the use of ":" as
the delimiter in DEF makes that problematic
- To allow for full URLs, we could introduce "UDEF" with a different syntax:
UDEF:variable=<URL>
where <URL> might be
file://<rrdfile>?ds=<ds-name>&cf=<CF>&step=<step>&....
socket://<HOST>:<PORT>/<rrdfile>?ds=....
unix://<SOCKET-PATH>/<rrdfile>?ds=....
sql://<I DUNNO>
- Unix sockets make it hard in both cases. When it comes to a unix://
url and the <rrdfile>, a path lookup for every leading path might be
required, <rrdfile> becoming the "path info" in url-speech. This might
be fixed by requiring a double "/" between the socket and the path.
Proposal:
- extend the FETCH rrdcached command
- implement UDEF (requires some URL handling stuff, but this could be
done using regexps)
- add support code in the local rrd_fetch code similar to that for
libdbi specs
Comments?
peter
More information about the rrd-developers
mailing list