* make rrd_getopt compile on solaris
* unify isinf isnan definitions for compilation and configuration
* replace round by rint if round is not available
Tobias Oetiker [Wed, 30 Jun 2010 12:48:47 +0000 (12:48 +0000)]
src/rrd_client.c: Fix a potential segmentation fault in "get_path".
The "get_path" function is called at least from "rrdc_update" without
checking for a connection first. In that case the "sd_path" pointer may be
NULL, so dereferencing it without checking for NULL is not good behavior.
This patch checks all arguments of the "get_path" function and returns an
error if any pointer is NULL. -- Florian Forster
Tobias Oetiker [Wed, 2 Jun 2010 04:45:21 +0000 (04:45 +0000)]
rrd_client.c: gcc 4.0.1 produced a warning and require same types. Warning shown was:
"assignement discards qualifers from pointer target type" -- Antoine MUSSO
Tobias Oetiker [Fri, 28 May 2010 04:55:14 +0000 (04:55 +0000)]
[rrd_client.c] RRD client should resolve all paths when talking to a unix socket. This allows realpath() to resolve symbolic links, "..", etc. reported by: Eduardo Bragatto -- kevin brintnall
"rrd_parsetime" uses (many) global variables and is thus not
thread-safe. Using it in the FETCH command reproducably segfaults the
caching daemon.
This replacement will only work with "simple" integers, i. e. times
specified as "1272470594" (sometime on April 28th) or "-3600" (one hour
ago). -- Florian Forster
When specifying a relative path (-j option) rrd_cached would segfault when
trying to read past journals (journal_init function). Added an extra check
to journal_init before reading the directory, and, when parsing the command
line options, to expand the relative path to an absolute path. -- Adrian-Ioan Vasile yoyo@opennet.ro
Relicense the RRDCacheD client interface under the MIT license. This
allows the interface to be used from non-GPL applications by copying the
source code files into the projects source tree. -- Florian Forster rrdtool@octo.it
Tobias Oetiker [Mon, 29 Mar 2010 19:18:06 +0000 (19:18 +0000)]
Rather than calling "FLUSH" for each RRD file needed for drawing a
graph and then accessing the file directly, use the "FLUSH" command to
receive the data required for drawing a graph.
The daemon can now be specified in one of three ways:
* A new option has been added to the "DEF" option. If the "DEF" command
includes the option "daemon=...", then the given daemon is used for
accessing that file only. This option takes precedence over all
other options. The value given follows the same syntax as other ways
to specify a daemon address, thouh colons need to be escaped from
rrdgraph(1).
* The "--daemon" option can be given to the overall "rrdtool graph"
command. When given, this address is used for all file accesses
except those which explicitely contain a "daemon=..." option.
* If the "RRDCACHED_ADDRESS" environment variable is set, it's value
is used as the daemon address. This is the lowest priority option
and only used if no other option is given.
One nice detail is that with ":daemon=...", the cache address can be
specified for each "DEF:" definition. It is therefore possible to graph
values stored on several servers in one graph ? even if several RRD
files have the same name. -- Florian
Tobias Oetiker [Mon, 29 Mar 2010 19:10:58 +0000 (19:10 +0000)]
src/rrd_format.c: Implemented "cf_to_string"
A simple helper function to turn an "enum cf_en" to a string. The returned
pointer points to static memory and doesn't need to be freed. -- Florian
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