[rrd-developers] rrd_graph and flush behavior
kbrint at rufus.net
Tue May 25 22:29:40 CEST 2010
Apologies... I should have referenced realpath(3) , not (2).
On Tue, May 25, 2010 at 3:28 PM, kevin brintnall <kbrint at rufus.net> wrote:
> The file names in rrdcached are stored as full paths. When searching for
> matches, the rrdcached uses strcmp(3). So, you are right: having two
> different file names will cause this problem.
> We chose not to resolve the symbolic links in rrdcached for performance
> reasons; instead, the client is responsible for resolving the files to the
> canonical path. The rrd client code uses realpath(2) to resolve the path to
> its canonical form.
> I don't think there is a resolution in the null mount case.. anybody know?
> The symbolic link should work. Can you verify whether realpath(2) on your
> system reports the correct path in the symlink case? If realpath(2) is
> right and the client is still not providing the right file name, then there
> is definitely a problem.
> On Tue, May 25, 2010 at 1:24 PM, Eduardo Bragatto <eduardo at bragatto.com>wrote:
>> Hi everyone,
>> I contacted the rrd-users list with this issue and Mr. Oetiker asked
>> me to send it here.
>> I've started using rrdcached a week ago and everything is working just
>> fine, however I'm having problems to produce updated graphs.
>> Let me first describe my setup a little bit:
>> - All my "rrd update" and "rrd graph" calls are using the parameter "--
>> daemon" to take advantage of rrdcached;
>> - rrdcached is started with these parameters: rrdcached -F -t 16 -s
>> nobody -m 0666 -l unix:/tmp/rrdcached.sock -w 900 -l 127.0.0.1:12345
>> - All my "rrd update" calls, write to files in their real location,
>> while "rrd graph" reads the same RRD files in a different location
>> (either because there's some symlink or null mount in the path).
>> I have reviewed the "-b" option from rrdcached, and I understand
>> symlinks are not allowed on the base directory, however the symlink in
>> my case is not in the base directory. Additionally, I have replaced
>> the symlink with a null mount and the problem persists.
>> The problem I'm seeing, can be illustrated here:
>> with symlink or null mount:
>> FLUSH /usr/local/rrd/myproject/repository/local/switches/myswitch/
>> 0 Nothing to flush: /usr/local/rrd/myproject/repository/local/switches/
>> real file location:
>> Flush /usr/local/rrd/myproject/rrd/switches/myswitch/10146.rrd
>> 0 Successfully flushed /usr/local/rrd/myproject/rrd/switches/myswitch/
>> /usr/local/rrd/myproject/reporsitory/local is a symlink (or null
>> mount) to /usr/local/rrd/myproject/rrd
>> I have the impression "rrdcached" is storing the full path of the RRD
>> files internally, and only accepts a FLUSH command if the path is
>> exactly the same as used in "rrd_update".
>> Can you please confirm if this is the correct behavior?
>> If that's just how rrdcached works, I believe we should update the
>> documentation to highlight the importance of using the exact same path
>> from "rrd_update" when flushing.
>> If that's not desirable, and rrdcached is meant to be able to handle
>> different paths, then I believe there's something wrong with the
>> software's logic somewhere in the code (sorry, I didn't really check
>> the source code).
>> I'm probably going to rewrite my application to use the same path both
>> in rrd_update and rrd_graph, however I think it would be better if the
>> path was not a problem for the flush command (i.e. if a flush command
>> is received and there's a symlinkt in the path, the real location
>> could be calculated in order to find the file that needs to be flushed).
>> Thanks for your attention,
>> Eduardo Bragatto.
>> rrd-developers mailing list
>> rrd-developers at lists.oetiker.ch
> kevin brintnall =~ /kbrint at rufus.net/
kevin brintnall =~ /kbrint at rufus.net/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rrd-developers