#!/usr/bin/perl ########################################### # Feed test data to RRD # Mike Schilli, 2004 (m@perlmeister.com) ########################################### use warnings; use strict; use RRDs; my $DB = "/tmp/mydemo.rrd"; my $start = 1080460200; my $dst = "MAX"; my $nof_iterations = 40; my $end = $start + $nof_iterations * 60; RRDs::create( $DB, "--step=60", "--start=" . ($start-10), "DS:load:GAUGE:90:0:10.0", "RRA:$dst:0.5:1:5", "RRA:$dst:0.5:5:10", ) or die "Cannot create rrd ($RRDs::error)"; for(0..$nof_iterations) { my $time = $start + $_ * 60; my $value = 2 + $_ * 0.1; RRDs::update( $DB, "$time:$value") or die "Cannot update rrd ($!)"; } print "Last 5 minutes:\n"; fetch($end - 5*60, $end, $dst); print "Last 30 minutes:\n"; fetch($end - 30*60, $end, $dst); ########################################### sub fetch { ########################################### my($start, $end, $dst) = @_; my ($dbstart, $step, $names, $data) = RRDs::fetch($DB, "--start=$start", "--end=$end", $dst); foreach my $line (@$data) { print "$start: "; $start += $step; foreach my $val (@$line) { $val = "N/A" unless defined $val; print "$val\n"; } } }