01 #!/usr/bin/perl 02 ############################# 03 # rrdtest - Feed test data 04 # Mike Schilli, 2004 05 # (m@perlmeister.com) 06 ############################# 07 use warnings; 08 use strict; 09 10 use RRDs; 11 12 my $DB = "/tmp/mydemo.rrd"; 13 my $start= 1080460200; 14 my $dst = "MAX"; 15 my $nof_iterations = 40; 16 my $end = $start + 17 $nof_iterations * 60; 18 19 RRDs::create( 20 $DB, "--step=60", 21 "--start=" . ($start-10), 22 "DS:load:GAUGE:90:0:10.0", 23 "RRA:$dst:0.5:1:5", 24 "RRA:$dst:0.5:5:10", 25 ) or die "Cannot create " . 26 "rrd ($RRDs::error)"; 27 28 for(0..$nof_iterations) { 29 my $time = $start + $_ *60; 30 my $value = 2 + $_ * 0.1; 31 32 RRDs::update( 33 $DB, "$time:$value") or 34 die "Can't update rrd". 35 " ($!)"; 36 } 37 38 print "Last 5 minutes:\n"; 39 fetch($end - 5*60, 40 $end, $dst); 41 42 print "Last 30 minutes:\n"; 43 fetch($end - 30*60, 44 $end, $dst); 45 46 ############################# 47 sub fetch { 48 ############################# 49 my($start,$end, $dst) = @_; 50 51 my ($dbstart, $step, 52 $names, $data) = 53 RRDs::fetch($DB, 54 "--start=$start", 55 "--end=$end", $dst); 56 57 foreach my $row (@$data) { 58 print "$start: "; 59 $start += $step; 60 foreach my $val (@$row) { 61 $val = "N/A" 62 unless defined $val; 63 print "$val\n"; 64 } 65 } 66 }