GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  RRD::SIMPLE::EXAMPLES (3)

.ds Aq ’

NAME

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

CONTENTS

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>

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 RRD::SIMPLE::EXAMPLES (3) 2016-04-05

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.