RRD::Simple::Examples man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

RRD::Simple::Examples(User Contributed Perl DocumentatRRD::Simple::Examples(3)

NAME
       RRD::Simple::Examples - Examples using RRD::Simple

EXAMPLES
   Example 1: Basic Data Gathering Using vmstat
	use strict;
	use RRD::Simple;

	my $cmd = "/usr/bin/vmstat 2 3";
	my $rrdfile = "vmstat-cpu.rrd";
	my $rrd = RRD::Simple->new( file => $rrdfile );

	my @keys = ();
	my %update = ();
	open(PH,"-|",$cmd) or die qq{Unable to open file handle PH for command "$cmd": $!};
	while (local $_ = <PH>) {
	    next if /---/;
	    s/^\s+|\s+$//g;
	    if (/\d+/ && @keys) {
		@update{@keys} = split(/\s+/,$_);
	    } else { @keys = split(/\s+/,$_); }
	}
	close(PH) or die qq{Unable to close file handle PH for command "$cmd": $!};

	my @cpukeys = splice(@keys,-4,4);
	my %labels = (wa => "IO wait", id => "Idle", sy => "System", us => "User");

	$rrd->create(map { ($_ => "GAUGE") } @cpukeys) unless -f $rrdfile;
	$rrd->update(map { ($_ => $update{$_}) } @cpukeys);

   Example 2: Setting Minimum and Maximum Value Limits
       This example shows how to set the minimum value to zero on a datasource
       using the RRDs::tune function. Use "-i" or "--minimum" to set the
       minimum value, and "-a" or "--maximum" to set the maximum value.

       See <http://www.rrdtool.org/rrdtool/doc/rrdtune.en.html>.

	use strict;
	use RRD::Simple;
	use RRDs;

	my %update = ();
	my $cmd = "/usr/bin/iostat -k";

	open(PH,"-|",$cmd) or die qq{Unable to open file handle PH for command "$cmd": $!};
	while (local $_ = <PH>) {
	    if (my ($dev,$r,$w) = $_ =~ /^([\w\d]+)\s+\S+\s+\S+\s+\S+\s+(\d+)\s+(\d+)$/) {
		$update{$dev} = { "read" => $r, "write" => $w };
	    }
	}
	close(PH) or die qq{Unable to close file handle PH for command "$cmd": $!};

	for my $dev (keys %update) {
	    my $rrdfile = "iostat-$dev.rrd";
	    my $rrd = RRD::Simple->new( file => $rrdfile );

	    unless (-f $rrdfile) {
		$rrd->create(
			map { ($_ => "DERIVE") } sort keys %{$update{$dev}}
		    );
		RRDs::tune($rrdfile, "-i", "$_:0") for keys %{$update{$dev}};
	    }

	    $rrd->update(%{$update{$dev}});
	}

   Example 3: Creating RRDs with Different Data Retention Periods
       The second (optional) parameter to the create method is the data
       retention period. Valid values are "day", "week", "month", "year",
       "3years" and "mrtg".  The default value is "mrtg".

       The "mrtg" data retention period uses a data stepping resolution of 300
       seconds (5 minutes) and heartbeat of 600 seconds (10 minutes), whereas
       all the other data retention periods use a data stepping resolution of
       60 seconds (1 minute) and heartbeat of 120 seconds (2 minutes).

	use strict;
	use RRD::Simple;

	my $rrd = RRD::Simple->new( file => "myfile.rrd" );
	my @period = qw(day week month year 3years mrtg);
	$rrd->create($period[1],
		datasource1 => "GAUGE",
		datasource2 => "GAUGE",
		datasource3 => "GAUGE",
	    );

   Example 4: Drawing an Average Value Horizonal Rule on a Graph
       Graph parameters are preserved and should be passed through to RRDs
       correctly: VDEF, CDEF, DEF, GPRINT, PRINT, COMMENT, HRULE, VRULE, LINE,
       AREA, TICK, SHIFT and STACK. Use the VDEF and HRULE parameters to draw
       a horizontal rule on your graph.

	use strict;
	use RRD::Simple;

	my $rrd = RRD::Simple->new( file => "frequency.rrd" );
	$rrd->create("day",
		Frequency => "GAUGE",
	    );

	my $end = time();
	my $start = $end - (60 * 60 * 24);
	my $i = 0;
	my $rand = int(rand(100));

	for (my $t = $start; $t <= $end; $t += 60) {
	    $rrd->update($t,
		    Frequency => ( cos($i += 0.01) * 100 ) + $rand,
		);
	}

	$rrd->graph(
		sources => [ qw(Frequency) ],
		"VDEF:FrequencyAVERAGE=Frequency,AVERAGE" => "",
		"HRULE:FrequencyAVERAGE#00ff77:Average" => "",
	    );

   Example 5: Drawing a Fixed Height Stacked Graph
	use strict;
	use RRD::Simple;

	my $rrdfile = "vmstat-cpu.rrd";
	my $rrd = RRD::Simple->new( file => $rrdfile );

	$rrd->graph(
		title => "CPU Utilisation",
		vertical_label => "% percent",
		upper_limit => 100,
		lower_limit => 0,
		rigid => "",
		sources => [ qw(sy us wa id) ],
		source_drawtypes => [ qw(AREA STACK STACK STACK) ],
		extended_legend => 1,
	    );

   Example 6: Setting Custom Graph Colours
       The "color" parameter can be used to override the default colours for
       standard elements of the graph. Valid elements are: BACK, CANVAS,
       SHADEA, SHADEB, GRID, MGRID, FONT, AXIS, FRAME and ARROW. See
       <http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html> for further
       information.

	use strict;
	use RRD::Simple;

	my $rrd = RRD::Simple->new( file => "vmstat-cpu.rrd" );

	$rrd->graph(
		title => "CPU Utilisation",
		source_colors => {
			sy => "ff0000",
			us => "00ff00",
			wa => "0000ff",
			id => "ffffff",
		    },
		color => [ ( "BACK#F5F5FF", "SHADEA#C8C8FF",
			     "SHADEB#9696BE", "ARROW#61B51B",
			     "GRID#404852", "MGRID#67C6DE" ) ],
	    );

   Example 7: Capacity Planning Predictions
	use strict;
	use RRD::Simple 1.44;

	my $rrd = RRD::Simple->new( file => "memory_usage.rrd" );

	$rrd->graph(
		periods => [ qw(week month) ],
		title => "Memory Utilisation",
		base => 1024,
		vertical_label => "bytes",
		sources => [ qw(Total Used) ],
		source_drawtypes => [ qw(AREA LINE) ],
		source_colors => [ qw(dddddd 0000dd) ],
		lower_limit => 0,
		rigid => "",
		"VDEF:D=Used,LSLSLOPE" => "",
		"VDEF:H=Used,LSLINT" => "",
		"VDEF:F=Used,LSLCORREL" => "",
		"CDEF:Proj=Used,POP,D,COUNT,*,H,+" => "",
		"LINE2:Proj#800000: Projection" => "",
	    );

COPYRIGHT
       Copyright 2005,2006,2007,2008 Nicola Worthington.

       This software is licensed under The Apache Software License, Version
       2.0.

       http://www.apache.org/licenses/LICENSE-2.0
       <http://www.apache.org/licenses/LICENSE-2.0>

perl v5.14.1			  2011-06-20	      RRD::Simple::Examples(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net