Tobias Oetiker [Mon, 29 Mar 2010 17:05:33 +0000 (17:05 +0000)]
src/rrd_fetch.c: Use "rrdc_fetch" if daemon is available.
Instead of flushing the file via the connection to the daemon and then
accessing it directly, use the "FETCH" command to access the file via
the RRDCacheD. This removes ambiguities with absolute and relative paths
and makes it possible to read data from files that are not available
locally. -- Florian
Tobias Oetiker [Mon, 29 Mar 2010 17:03:57 +0000 (17:03 +0000)]
Add a "FETCH" command to RRDCacheD which behaves like a (simplified
version of) rrdfetch(1).
This has advantages over calling "FLUSH" from within the "client",
especially if the daemon is accessed using a network socket. For one, it
makes it easy to separate collecting and storing of data on one side and
creating graphs on another, possibly more public server. Without this
command this is only possible using networked file systems and similar
techniques.
When talking to an instance of RRDCacheD via a network socket, only
relative pathnames are allowed. If the RRD file is to be accessed
afterwards (why else would one call "FLUSH"?), the client has to be in a
specific directory so the *same* relative path can be used. If the file
is on a share mounted via the network, the required CWD may differ from
the CWD of the server, making developing and deploying solutions using
separated storing and graphing unnecessarily hard.
The data can be accessed using "rrdc_fetch" which should be a drop-in
replacement for "rrd_fetch_r". This makes it easy for programs using the
RRDtool C API to use this new functionality. -- Florian Forster
Tobias Oetiker [Mon, 29 Mar 2010 16:32:54 +0000 (16:32 +0000)]
* GRAD element for graph, it acts more or less like an AREA,
except you can specify a second color and a height which is used to
create a gradient from one color to the next
by Rian Shelley
Tobias Oetiker [Sun, 28 Mar 2010 09:04:49 +0000 (09:04 +0000)]
* do add intl directory back to Makefile.am ... no use distributing the stuff if we don't use it
* link pangocairo and not pango ... thanks Stephen S. Disbrow for finding this
Tobias Oetiker [Mon, 22 Mar 2010 14:49:26 +0000 (14:49 +0000)]
rrdcached: Added -m command line option. This option may be used to specify
the file permissions of a UNIX socket. The option affects the following
sockets only, i.e., it's possible to specify different modes for different
sockets. -- Sebastian Harl
Tobias Oetiker [Mon, 15 Mar 2010 08:43:22 +0000 (08:43 +0000)]
in rrd_cgi RRD::TIME::LAST do not raise argc when calling rrd_last since the strftime argument which
is provided is already in the count but does not get passed to rrd_last. Thanks to Robert Luberda (fixing Debian Bug #573638.)
Tobias Oetiker [Mon, 8 Mar 2010 17:13:16 +0000 (17:13 +0000)]
Obviously this will only work if rrdcached is running as root which in
my case it has to be (as upstart can't currently monitor non-root
daemons). As you may have RRD data sources (data loggers) and RRD
consumers (e.g. CGI scripts) that both need to talk to the cache
daemon one solution is to set the group permissions of the socket.
This offer some flexibility over trying to get every RRD user/daemon
running under the same user context. -- Alex Bennee ajb pitcairn.cambridgebroadband.com
Tobias Oetiker [Tue, 2 Mar 2010 23:22:35 +0000 (23:22 +0000)]
I think I just solved a longstanding bug in the rrd_update routine
... I am writing a tool for seeding new rrd files from an existing
one ... essentially enabeling arbitrary restructuring ...
the behavior has been like this at least since 1.2
looking at the code I found that the behavior had been introduced
by a patch optimizing rrd_update for updates covering multiple pdps
in one go ... in that optimization, the normal case where an update
covers exactly ONE pdp had been sort of neglected ... so much for
tunel vision.
The problem was, that the cdp value for MIN and MAX got initialized
from the last pdp value BEFORE the consolidation interval ... for
normal data no one would notice (or did notice) but it is still
wrong ...
Tobias Oetiker [Mon, 11 Jan 2010 09:06:59 +0000 (09:06 +0000)]
we are using a comparison with sizeof(long) to figure the size of time_t this is unfortunate
since on freebsd in 64bit mode time_t is 32 bit while long is 64 bit
Tobias Oetiker [Mon, 11 Jan 2010 08:11:19 +0000 (08:11 +0000)]
The end of the export range should not be adjusted DOWN but UP to hit the next matching step interval or the response will be one row short. Thanks swami for the bugreport.
Tobias Oetiker [Mon, 16 Nov 2009 14:59:51 +0000 (14:59 +0000)]
be more diligent in checking the input arguments for rrdtool update and complain if they are wrong. fix for #243 (and more)
--This line, and those below, will be ignored-
M trunk/program/src/rrd_update.c
M branches/1.3/program/src/rrd_update.c
Tobias Oetiker [Wed, 28 Oct 2009 05:14:03 +0000 (05:14 +0000)]
Avoid unnecessary string handling for UPDATE commands in rrd_deaemon for 20x
speed increasse. Only copy as many bytes as necessary. During journal
replay, avoid unnecessary copy (string is discarded). Bug reported by
Thorsten von Eicken Patched by kevin brintnall
Tobias Oetiker [Tue, 27 Oct 2009 17:49:29 +0000 (17:49 +0000)]
* remove intl from build process ... someone who does actually need it should fix this ...
* make the code work on solaris 10 (tested on opencsw server farm. thanks!)
Tobias Oetiker [Sun, 4 Oct 2009 12:00:23 +0000 (12:00 +0000)]
Do not mess with the locale settings. The main program takes care of that (rrd_tool.c calls setlocale(LC_ALL,"") already.
We do call setlocale on LC_NUMERIC a few times to get predictable number formats when parsing strings into floats, but apart from that the code is
written in a portable manner and can take whatever the local system supports.
Tobias Oetiker [Sun, 4 Oct 2009 11:37:25 +0000 (11:37 +0000)]
rrd_client, rrd_daemon: Do not require hostnames to contain a dot.
Non-FQDN (e.g. "localhost") are now supported as well. Anything that does not
start with '[' should be (and is now) treated as <name>[:<port>]. -- Sebastian Harl
Tobias Oetiker [Sun, 4 Oct 2009 11:35:02 +0000 (11:35 +0000)]
rrd_client: Do not rewrite path names when accessing remote daemons.
When talking to a local daemon (thru a UNIX socket), relative path names are
resolved to absolute path names to allow for transparent integration into
existing solutions (as requested by Tobi).
However, when talking to a remote daemon, absolute path names are not allowed,
since path name translation is done by the server (relative to the base
directory). -- Sebastian Harl
Tobias Oetiker [Sun, 4 Oct 2009 11:29:40 +0000 (11:29 +0000)]
rrdcached: Improved the "base-dir symlink check".
The daemon checks if the specified base directory contains symlinks by
comparing the canonicalized path name (by realpath()) with the path name
specified on the command line. The GNU libc's implementation of realpath()
removed trailing slashes ('/') from the pathname. Thus, specifying a base
directory with a trailing slash results in rrdcached aborting, complaining
about an invalid base directory, which is quite annoying imho. Now, trailing
slashes are removed before comparing the two path names. -- Sebastian Harl
Tobias Oetiker [Sun, 4 Oct 2009 11:27:44 +0000 (11:27 +0000)]
rrdcached: Create the pidfile and (UNIX) socket directories as well.
Those files may be located in a subdirectory of, e.g., /var/run/. To avoid the
need to manually create (and recreate, e.g. in case /var/run/ is on a tmpfs)
that subdirectory, let the daemon handle the creation of those directories. -- Sebastian Harl