[rrd-developers] Re: Wnat to use rrd into C
Henrik Stoerner
henrik at hswn.dk
Sat Jul 8 08:04:34 MEST 2006
On Sat, Jul 08, 2006 at 02:12:38AM -0300, Rogério Schneider wrote:
> How can I create, update and graph directly from the C with RRD?
> Is there some include, lib, or some docs and samples of how to do this? I
> have read rrd.h but the prototypes is strange to me, and there is no
> documentation for C API.
The C API is basically just like the commandline API. E.g. to create a
graph you would run a command like
rrdcreate myfile.rrd "DS:myval:GAUGE:600:0:U" "RRA:AVERAGE:0.5:1:576"
In the C API, you'd just stick the commandline args into a char* table,
and pass them off to the appropriate function:
char *createparams[] = {
"rrdcreate",
"myfile.rrd",
"DS:myval:GAUGE:600:0:U",
"RRA:AVERAGE:0.5:1:576",
NULL
};
optind = opterr = 0; /* Because rrdtool uses getopt() */
rrd_clear_error();
rrd_create(4, createparams);
Likewise for an update - the command line is
rrdupdate myfile.rrd "0:42"
In C, that would be
char *updateparams[] = {
"rrdupdate",
"myfile.rrd",
"0:42",
NULL
};
optind = opterr = 0;
rrd_clear_error();
rrd_update(3, updateparams);
rrd_graph works the same, but has some additional parameters that are
return values from the rrd_graph function. And this API changed from
rrdtool 1.0 -> 1.2. So what I do is like this:
char **calcpr = NULL;
int rrdargcount, xsize, ysize, result;
double ymin, ymax;
char *rrdargs[] = {
"rrdgraph",
"mygraph.png",
"-a", "PNG",
"--title", "My Fancy Graph",
"DEF:myval=myfile.rrd:myval:AVERAGE",
"LINE2:myval#00CC00:The value",
NULL
};
optind = opterr = 0;
rrd_clear_error();
#ifdef RRDTOOL12
result = rrd_graph(8, rrdargs, &calcpr, &xsize, &ysize, NULL, &ymin, &ymax);
#else
result = rrd_graph(8, rrdargs, &calcpr, &xsize, &ysize);
#endif
/* Was it OK ? */
if (rrd_test_error() || (result != 0)) {
if (calcpr) {
int i;
for (i=0; (calcpr[i]); i++) free(calcpr[i]);
calcpr = NULL;
}
printf("Graph error: %s\n", rrd_get_error());
}
I've snipped all of these code samples from the RRD handling code in my
monitoring toolkit - feel free to grab the full source from
hobbitmon.sourceforge.net.
Regards,
Henrik
--
Unsubscribe mailto:rrd-developers-request at list.ee.ethz.ch?subject=unsubscribe
Help mailto:rrd-developers-request at list.ee.ethz.ch?subject=help
Archive http://lists.ee.ethz.ch/rrd-developers
WebAdmin http://lists.ee.ethz.ch/lsg2.cgi
More information about the rrd-developers
mailing list