You should be able to make a single call to the update function with all of the 
values for one timestamp (you don't have to use the --template as long as you 
specify the entries in order).  It's complaining is because when you do one 
update per entry, RRDTool assigns NaN to the DS's that you don't specify.

Try this:
RRDs::update("$rrd", "$time:$min15:$cpuload:$vmem");

Corey.


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of
[EMAIL PROTECTED]
Sent: March 22, 2004 3:50 PM
To: [email protected]
Subject: [rrd-users] Question about multiple DS's in a RRD


I'm trying to create a rrd that will keep track of some stats for unix 
machines. I'm tracking load avg, cpu load, and vm load, the data is being 
collected via SNMP and stored in a colon separated file, updated every 15 
mins. The whole purpose of putting the data into a RRD is to create 1 
graph showing all 3 items. I've created a RRD using this command:
rrdtool create /data/load_avg.rrd --start 1072936800 \
 --step 900 \
 DS:load:GAUGE:900:0.0:U \
 DS:cpu:GAUGE:900:0:100 \ 
 DS:vm:GAUGE:900:0:U \
 RRA:AVERAGE:0.5:1:8640

I'm using Perl to parse the datafile and update the RRD. I started out 
just updating the load avg and that worked just fine. I've now decided to 
take another step forward and update the cpu and vm using this code:

open (DATA,"/data/rrd/datafile");

while (<DATA>) {
  my 
($time,$min,$seconds,$hostname,$ip,$cpu,$cpuload,$usertime,$systime,$iowait,$vmem,$uptime,$load,$
mem,$os,$cpuspeed,$fs,$version) = split (/:/);

  my $date = join (':',$time,$min,$seconds);
  $time = &UnixDate($date,"%s");

  my($min1,$min10,$min15)= split (/,/,$load);

  RRDs::update ("$rrd", "--template", "load", "$time:$min15");
  my $ERR=RRDs::error;
  die "ERROR while updating rrd: $ERR\n" if $ERR;

RRDs::update ("$rrd", "--template", "cpu", "$time:$cpuload");
  my $ERR=RRDs::error;
  die "ERROR while updating rrd: $ERR\n" if $ERR;

RRDs::update ("$rrd", "--template", "vm", "$time:$vmem");
  my $ERR=RRDs::error;
  die "ERROR while updating rrd: $ERR\n" if $ERR;
}
close DATA;

Now I'm getting the error: ERROR while updating rrd: illegal attempt to 
update using time 1072937826 when last update time is 1072937826 (minimum 
one second step).

I assume its because of the second and third RRDs::update statements. How 
can I update all three DS's in the RRD when they have the same update 
time?


Thanks,
Christian Lair



--
Unsubscribe mailto:[EMAIL PROTECTED]
Help        mailto:[EMAIL PROTECTED]
Archive     http://www.ee.ethz.ch/~slist/rrd-users
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi

--
Unsubscribe mailto:[EMAIL PROTECTED]
Help        mailto:[EMAIL PROTECTED]
Archive     http://www.ee.ethz.ch/~slist/rrd-users
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi

Reply via email to