[rrd-developers] Re: Developing against librrd

David Olsen lude at linuxpimpz.com
Wed Feb 5 20:30:29 MET 2003


Hello all,

I've encountered another brick wall programming against librrd.

My program is supposed to create an rrd file for every interface ID it does not see an rrd file for.

When I run the program, the first call to createrrd() works like a charm, the second call attempts to make an rrd called DS:ifInOctets:COUNTER:600:U:U, which is args[3] (below), and this is obviously not the desired result.

Is there some sore of rrd_create/free function I need to be using that I'm missing, the arguments get passed correctly each time (note the debug statements).

Here is the function I use to create an RRD.

int createrrd(char *newrrd)
{
    int i, retval;
    char **args;
    char finalname[128];
    char finaltime[24];
    long now;
    struct stat     statbuf;
    int             statret;

    args = (char **)malloc(10240);
    bzero((char **)args, 10240);

    /* Make the RRD named accordingly */
    sprintf( finalname, "%s%s.rrd", RRD_FILES_PATH, newrrd );

    /* Unixtime funcs */
    now = (long)time(NULL);
    sprintf( finaltime, "--start=%li", now );

    args[0] = "create";
    args[1] = finalname;
    args[2] = finaltime;
    args[3] = "DS:ifInOctets:COUNTER:600:U:U";
    args[4] = "DS:ifOutOctets:COUNTER:600:U:U";
    args[5] = "DS:ifInUcastPkts:COUNTER:600:U:U";
    args[6] = "DS:ifOutUcastPkts:COUNTER:600:U:U";
    args[7] = "DS:ifInErrors:COUNTER:600:U:U";
    args[8] = "RRA:AVERAGE:0.5:1:600";
    args[9] = "RRA:AVERAGE:0.5:6:700";
    args[10] = "RRA:AVERAGE:0.5:24:775";
    args[11] = "RRA:AVERAGE:0.5:288:797";
    args[12] = "RRA:MAX:0.5:1:600";
    args[13] = "RRA:MAX:0.5:6:700";
    args[14] = "RRA:MAX:0.5:24:775";
    args[15] = "RRA:MAX:0.5:288:797";
    args[16] = "\0";

    for(i=0;i<16;i++)
    {
        printf("Args %d: %s\n",i,args[i]);
    }

    printf( "Creating RRD %s\n", args[1] );
    statret = stat( finalname, &statbuf );
    printf( "Checked %s, status: %d\n", finalname, statret );
    while( statret != 0 ) {
        retval = rrd_create(15,args);
        statret = stat( finalname, &statbuf );
    }

    free(args);
}


Best Regards, 

David Olsen
ISPrime, Inc.
866.502.4678 ext. 87
AIM: Dave ISPrime - ICQ: 136633378

--
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://www.ee.ethz.ch/~slist/rrd-developers
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi



More information about the rrd-developers mailing list