[rrd-developers] RRD Help

Vamsi Mohan Harish reacharish at yahoo.com
Fri Sep 19 13:43:30 MEST 2003


Hi,
 
I have created an RRD file (using C API) and updated it with around 4000 values. But when I am creating graphs using the RRD File, it's showing nothing. Absolutely balnk graph. Can any one tell me where did I go wrong. The following is the brief code.
 
 
Create RRD: -- SNIP --
-------------------------------------------
STEP : 1800 (30 Minutes)
DIFF_TIME : 2592000  /* No. of seconds in a month = 30 * 24 * 60 * 60 */
HT_BEAT: 600 (10 Minutes)
 if(!Time)
  tm = time(NULL);
 else
  tm = Time;
 strcpy(Args[0], "create");
 sprintf(Args[1],"%s",RRDName);
 strcpy(Args[2],"-b");
 sprintf(Args[3],"%ld", tm - DIFF_TIME);
 strcpy(Args[4],"-s"); 
 sprintf(Args[5],"%d", STEP);
 
 //DS : Input
 sprintf(Args[6],"DS:Input:GAUGE:%d:0:U", HT_BEAT);
 strcpy(Args[7],"RRA:AVERAGE:0.5:1:600");
 strcpy(Args[8],"RRA:AVERAGE:0.5:6:700");
 strcpy(Args[9],"RRA:AVERAGE:0.5:24:775");
 strcpy(Args[10],"RRA:AVERAGE:0.5:288:797");
 strcpy(Args[11],"RRA:MAX:0.5:6:700");
 strcpy(Args[12],"RRA:MAX:0.5:24:775");
 strcpy(Args[13],"RRA:MAX:0.5:288:797");
 //DS : Output
 sprintf(Args[14],"DS:Output:GAUGE:%d:0:U", HT_BEAT);
 strcpy(Args[15],"RRA:AVERAGE:0.5:1:600");
 strcpy(Args[16],"RRA:AVERAGE:0.5:6:700");
 strcpy(Args[17],"RRA:AVERAGE:0.5:24:775");
 strcpy(Args[18],"RRA:AVERAGE:0.5:288:797");
 strcpy(Args[19],"RRA:MAX:0.5:6:700");
 strcpy(Args[20],"RRA:MAX:0.5:24:775");
 strcpy(Args[21],"RRA:MAX:0.5:288:797");
 NoArgs=22;
 
 optind = 0;
 opterr = 0;
 rrd_clear_error();
 rrd_create(NoArgs, Args);
 if(rrd_test_error())
 {
  sprintf(ErrorStr, "%s", rrd_get_error());
  ErrorNo = 1002;
  return -2;
 }
 return 0;
-------------------------------------------
Update RRD - data from database  -- SNIP
fs
//Inserting dummy records in to database
        for(i = 0; i < 10; i++)
        {
                TimeStamp = time(NULL);
                sprintf(UserName,"User%d",i);
                for(j = 0, k = 1; j < 1000; j++, k++)
                {
                        srand(TimeStamp);
                        if(k == 4) k = 1;
                        sprintf(IPAddress,"202.65.%d.%d",i, k);
                        StartTime = (TimeStamp * 1000.0); //Time is in MilliSeconds
                        InputBytes = 1 + (int) (512.0 * rand()/(RAND_MAX + 1.0));
                        OutputBytes = 1 + (int) (5120.0 * rand()/(RAND_MAX + 1.0));
                        sprintf(Query, "INSERT INTO rrd_usage_records values('%s', '%s', %.0f, %d, %d)",
                                                                UserName, IPAddress, StartTime, InputBytes, OutputBytes);
                        Res = Execute(Query);
                        if (!Res)
                        {
                                ErrorNo = 103;
                                strcpy(ErrorStr, Error(Res));
      return -1;
                        }
                }
        }
Update_RRD : --SNIP--
-------------------------------------------
      for(i = 0; i < nRecords; i++)
        {
                StrStartTime = RS("Start_Time");
                StartTime = (unsigned long) (strtod(StrStartTime, NULL)/1000); //Start_Time is in Milli Seconds
                UserName = RS("User_Name");
                OutputBytes = atol(RS("Output_Bytes");
                sprintf(RRDFileName, "%s.rrd",UserName);
                LastUpdate = _RRDLastUpdate(RRDFileName);
                if(RRDErrorNo != 0) //Create RRD File, if it not existing
                {
                        if(_CreateRRD(RRDFileName, 0) < 0)
                        {
                                printf("Error : %d - %s\n", RRDErrorNo, RRDErrorStr);
                                continue;       //Go to next user
                        }
                }
                printf("%s\t%ld\t%ld\n", UserName, StartTime, OutputBytes);
                /* Update the RRD File Here  */
                if(_UpdateRRD(RRDFileName, OutputBytes, StartTime) < 0)
                {
                                printf("Error : %d - %s\n", RRDErrorNo, RRDErrorStr);
                                continue;
                }
        }
-------------------------------------------
 NoArgs = 3;
 strcpy(Args[0], "update");
 sprintf(Args[1],"%s",RRDName);
 sprintf(Args[2],"%ld:%ld:%ld",SDate, Input, Output);
 
 optind = 0;
 opterr = 0;
 rrd_clear_error();
 rrd_update(NoArgs, Args);
 if(rrd_test_error())
 {
  sprintf(ErrorStr, "%s", rrd_get_error());
  ErrorNo = 1003;
  return -2;
 }
 return 0;
-------------------------------------------
Graph function : SNIP
 strcpy(Args[0],"graph");
 sprintf(Args[1],"%s\\%s_In.png", RRDDIR, ImgFileName);
 strcpy(Args[2],"-s");
 strcpy(Args[3],STime);
 strcpy(Args[4],"-e");
 strcpy(Args[5],ETime);
 strcpy(Args[6],"-t");
 strcpy(Args[7],"Input Usage Graph");
 strcpy(Args[8],"-v");
 strcpy(Args[9],"Input Usage");
 strcpy(Args[10],"-a");
 strcpy(Args[11],"PNG");
 strcpy(Args[12],"-w");
 strcpy(Args[13],"400");
 strcpy(Args[14],"-h");
 strcpy(Args[15],"100");
 sprintf(Args[16],"DEF:MAXIN=%s:Input:MAX", RRDName);
 sprintf(Args[17],"DEF:AVGIN=%s:Input:AVERAGE", RRDName);
 strcpy(Args[18],"CDEF:CMAXIN=MAXIN,UN,0,MAXIN,IF");
 strcpy(Args[19],"CDEF:CAVGIN=AVGIN,UN,0,AVGIN,IF");
 strcpy(Args[20],"AREA:CAVGIN#00eb0c:AVG Input");
 strcpy(Args[21],"LINE2:CMAXIN#0000ff:MAX Input \\n");
 strcpy(Args[22],"GPRINT:CAVGIN:AVERAGE:Average value \\: %1.2lf\\n");
 strcpy(Args[23],"GPRINT:CMAXIN:MAX:Maximum value \\: %1.2lf\\n");
 NoArgs = 25;
 XSize = 100;
 YSize = 400;
 rrd_clear_error();
 rrd_graph(NoArgs, Args, &PRData,(int *) &XSize,(int *) &YSize);
 if(rrd_test_error())
 {
  sprintf(ErrorStr, "%s", rrd_get_error());
  ErrorNo = 1005;
  return -2;
 }
 return 0;
-------------------------------------------
 
The code is too big. Pls. bear with me.
 
Thanks
Harish


---------------------------------
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software

--
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