5 =head1 NAME $RCSfile: plotfs.cgi,v $
15 Andrew DeFaria <Andrew@ClearSCM.com>
23 Mon Dec 13 09:13:27 EST 2010
27 $Date: 2011/01/14 16:37:04 $
33 Usage plotfs.cgi: system=<system> filesytem=<filesystem>
34 [height=<height>] [width=<width>] [color=<color>]
35 [scaling=<scaling>] [points=<points>] [tiny=<0|1>]
38 <system>: Name of the system defined in the Clearadm database to
39 retrieve filesystem snapshots for.
40 <filesystem>: Name of the filesytem to plot information for
41 <height>: Height of chart (Default: 480px - tiny: 40)
42 <width>: Width of chart (Default: 800px - tiny: 150)
43 <color>: A GD::Color color value (Default: lblue)
44 <scaling>: Currently one of Minute, Hour, Day or Month. Specifies how
45 Clearadm::GetFS will scale the data returned (Default: Minute
47 <points>: Number of points to plot (Default: all points - tiny: 7)
51 Draws a chart of the filesystem usage for the system and filesystem passed in.
52 Parameters such as height, width, color, scaling and points can be set
53 individually though more often the user will just use the web controls to set
54 them. Defaults produce a nice chart. Tiny mode is used by systemdetails.cgi to
55 draw tiny charts in the table. Setting tiny sets a number of the other chart
56 options to produce a standard, tiny chart.
66 use lib "$FindBin::Bin/lib", "$FindBin::Bin/../lib";
72 use CGI qw (:standard :cgi-lib);
77 my $VERSION = '$Revision: 1.13 $';
78 ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
80 $opts{color} ||= 'lblue';
81 $opts{height} ||= 350;
88 $opts{scaling} = 'Day';
91 my $clearadm = Clearadm->new;
93 my $graph = GD::Graph::area->new ($opts{width}, $opts{height});
95 graphError "System is required"
98 graphError "Filesystem is required"
99 unless $opts{filesystem};
101 graphError "Points not numeric (points: $opts{points})"
102 if $opts{points} and $opts{points} !~ /^\d+$/;
104 my @fs = $clearadm->GetFS (
113 graphError "No data found for $opts{system}:$opts{filesystem}"
127 push @x, $fs{timestamp};
130 push @y, $opts{meg} ? $fs{used} / (1024 * 1024) :
131 $fs{used} / (1024 * 1024 * 12024);
133 my @data = ([@x], [@y]);
135 my $x_label_skip = @x > 1000 ? 200
141 my $x_label = $opts{tiny} ? '' : 'Filesystem Usage';
142 my $y_label = $opts{tiny} ? '' :
143 $opts{msg} ? 'Used (Meg)' : 'Used (Gig)';
144 my $title = $opts{tiny} ? '' : "Filesystem usage for "
145 . "$opts{system}:$opts{filesystem}";
146 my $labelY = $opts{tiny} ? '' : '%.2f';
150 x_labels_vertical => 1,
151 x_label_skip => $x_label_skip,
152 x_label_position => .5,
154 y_number_format => $labelY,
156 dclrs => [$opts{color}],
164 ) or graphError $graph->error;
166 my $image = $graph->plot(\@data)
167 or croak $graph->error;
169 unless ($opts{generate}) {
170 print "Content-type: image/png\n\n";
173 print encode_base64 $image->png;
178 =head1 CONFIGURATION AND ENVIRONMENT
180 DEBUG: If set then $debug is set to this level.
182 VERBOSE: If set then $verbose is set to this level.
184 TRACE: If set then $trace is set to this level.
194 L<Getopt::Long|Getopt::Long>
196 L<GD::Graph::area|GD::Graph::area>
198 =head2 ClearSCM Perl Modules
211 <a href="http://clearscm.com/php/scm_man.php?file=clearadm/lib/Clearadm.pm">Clearadm</a><br>
212 <a href="http://clearscm.com/php/scm_man.php?file=clearadm/lib/ClearadmWeb.pm">ClearadmWeb</a><br>
213 <a href="http://clearscm.com/php/scm_man.php?file=lib/Display.pm">Display</a><br>
218 =head1 BUGS AND LIMITATIONS
220 There are no known bugs in this script
222 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
224 =head1 LICENSE AND COPYRIGHT
226 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.