contrib/collection3: Add an basic, extensible, modular graphing front-end.
[collectd.git] / contrib / collection3 / lib / Collectd / Graph / Type / Df.pm
1 package Collectd::Graph::Type::Df;
2
3 use strict;
4 use warnings;
5 use base ('Collectd::Graph::Type');
6
7 use Collectd::Graph::Common (qw(ident_to_filename get_faded_color));
8
9 return (1);
10
11 sub getDataSources
12 {
13   return ([qw(free used)]);
14 } # getDataSources
15
16 sub new
17 {
18   my $pkg = shift;
19   my $obj = Collectd::Graph::Type->new (@_);
20   $obj->{'data_sources'} = [qw(free used)];
21   $obj->{'rrd_opts'} = ['-v', 'Bytes'];
22   $obj->{'rrd_title'} = 'Disk space ({type_instance})';
23   $obj->{'rrd_format'} = '%5.1lf%sB';
24   $obj->{'colors'} = [qw(00b000 ff0000)];
25
26   return (bless ($obj, $pkg));
27 } # new
28
29 sub getRRDArgs
30 {
31   my $obj = shift;
32   my $index = shift;
33
34   my $ident = $obj->{'files'}[$index];
35   if (!$ident)
36   {
37     cluck ("Invalid index: $index");
38     return;
39   }
40   my $filename = ident_to_filename ($ident);
41   $filename =~ s#:#\\:#g;
42
43   my $faded_green = get_faded_color ('00ff00');
44   my $faded_red = get_faded_color ('ff0000');
45
46   return (['-t', 'Free space (' . $ident->{'type_instance'} . ')', '-v', 'Bytes', '-l', '0',
47     "DEF:free_min=${filename}:free:MIN",
48     "DEF:free_avg=${filename}:free:AVERAGE",
49     "DEF:free_max=${filename}:free:MAX",
50     "DEF:used_min=${filename}:used:MIN",
51     "DEF:used_avg=${filename}:used:AVERAGE",
52     "DEF:used_max=${filename}:used:MAX",
53     "CDEF:both_avg=free_avg,used_avg,+",
54     "AREA:both_avg#${faded_green}",
55     "AREA:used_avg#${faded_red}",
56     'LINE1:both_avg#00ff00:Free',
57     'GPRINT:free_min:MIN:%5.1lf%sB Min,',
58     'GPRINT:free_avg:AVERAGE:%5.1lf%sB Avg,',
59     'GPRINT:free_max:MAX:%5.1lf%sB Max,',
60     'GPRINT:free_avg:LAST:%5.1lf%sB Last\l',
61     'LINE1:used_avg#ff0000:Used',
62     'GPRINT:used_min:MIN:%5.1lf%sB Min,',
63     'GPRINT:used_avg:AVERAGE:%5.1lf%sB Avg,',
64     'GPRINT:used_max:MAX:%5.1lf%sB Max,',
65     'GPRINT:used_avg:LAST:%5.1lf%sB Last\l']);
66 } # getRRDArgs
67
68 # vim: set shiftwidth=2 softtabstop=2 tabstop=8 :