[csw-users] Problem with RRDs (RRDtool Perl module) on Solaris 10

Juergen Arndt ja at baltic-online.de
Sun Mar 15 17:51:23 CET 2009


Hi all,

I ran into a problem with the Perl module RRDs on Solaris 10.

I evaluate a software (pnp, [1]), which stores data into RRD databases and  
visualises it as a graph. So nothing special. This software uses the RRDs  
perl module, which comes in CSWrrd. It works on Solaris 8 without any  
problem, on Solaris 10 nothing happends.

After some digging in forums and chats I downloaded a test script (see  
below, [2]). It's no problem to run this script on Solaris 8 but Solaris  
10 it cores. Can anybody reproduce this? And maybe someone has a solution?

The output on Solaris 8 is as follows:

root at sol8-cswpkg-test :/root/tmp > ./rrdtest
Last 5 minutes:
1080462300: 5.6
1080462360: 5.7
1080462420: 5.8
1080462480: 5.9
1080462540: 6
1080462600: N/A
Last 30 minutes:
1080460800: 3.5
1080461100: 4
1080461400: 4.5
1080461700: 5
1080462000: 5.5
1080462300: 6
1080462600: N/A
root at sol8-cswpkg-test :/root/tmp >


On Solaris 10 I get:

root at ja01 [ja01]:/root/tmp > ./rrdtest
zsh: 17975 segmentation fault (core dumped)  ./rrdtest
root at ja01 [ja01]:/root/tmp >

Juergen


[1] www.pnp4nagios.org
[2] ftp://ftp.linux-magazin.de/pub/listings/magazin/2004/06/Perl/rrdtest  
(doesn't work sometimes):

#!/opt/csw/bin/perl
###########################################
# Feed test data to RRD
# Mike Schilli, 2004 (m at 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";
         }
     }
}

-- 
Juergen Arndt



More information about the users mailing list