contrib/collection3: Add an basic, extensible, modular graphing front-end.
[collectd.git] / contrib / collection3 / lib / Collectd / Graph / Type / Load.pm
1 package Collectd::Graph::Type::Load;
2
3 use strict;
4 use warnings;
5 use base ('Collectd::Graph::Type');
6
7 use Collectd::Graph::Common (qw($ColorCanvas ident_to_filename get_faded_color));
8
9 return (1);
10
11 sub new
12 {
13   my $pkg = shift;
14   my $obj = Collectd::Graph::Type->new (@_);
15   $obj->{'data_sources'} = [qw(shortterm midterm longterm)];
16   $obj->{'rrd_opts'} = ['-v', 'System load'];
17   $obj->{'rrd_title'} = 'System load';
18   $obj->{'rrd_format'} = '%.2lf';
19   $obj->{'colors'} = [qw(00ff00 0000ff ff0000)];
20
21   print STDERR "Hi, this is Collectd::Graph::Type::Load::new\n";
22
23   return (bless ($obj, $pkg));
24 } # new
25
26 sub getRRDArgs
27 {
28   my $obj = shift;
29   my $index = shift;
30
31   my $ident = $obj->{'files'}[$index];
32   if (!$ident)
33   {
34     cluck ("Invalid index: $index");
35     return;
36   }
37   my $filename = ident_to_filename ($ident);
38   $filename =~ s#:#\\:#g;
39
40   my $faded_green = get_faded_color ('00ff00');
41
42   return (['-t', 'System load', '-v', 'System load',
43     "DEF:s_min=${filename}:shortterm:MIN",
44     "DEF:s_avg=${filename}:shortterm:AVERAGE",
45     "DEF:s_max=${filename}:shortterm:MAX",
46     "DEF:m_min=${filename}:midterm:MIN",
47     "DEF:m_avg=${filename}:midterm:AVERAGE",
48     "DEF:m_max=${filename}:midterm:MAX",
49     "DEF:l_min=${filename}:longterm:MIN",
50     "DEF:l_avg=${filename}:longterm:AVERAGE",
51     "DEF:l_max=${filename}:longterm:MAX",
52     "AREA:s_max#${faded_green}",
53     "AREA:s_min#${ColorCanvas}",
54     "LINE1:s_avg#00ff00: 1 min",
55     "GPRINT:s_min:MIN:%.2lf Min,",
56     "GPRINT:s_avg:AVERAGE:%.2lf Avg,",
57     "GPRINT:s_max:MAX:%.2lf Max,",
58     "GPRINT:s_avg:LAST:%.2lf Last\\l",
59     "LINE1:m_avg#0000ff: 5 min",
60     "GPRINT:m_min:MIN:%.2lf Min,",
61     "GPRINT:m_avg:AVERAGE:%.2lf Avg,",
62     "GPRINT:m_max:MAX:%.2lf Max,",
63     "GPRINT:m_avg:LAST:%.2lf Last\\l",
64     "LINE1:l_avg#ff0000:15 min",
65     "GPRINT:l_min:MIN:%.2lf Min,",
66     "GPRINT:l_avg:AVERAGE:%.2lf Avg,",
67     "GPRINT:l_max:MAX:%.2lf Max,",
68     "GPRINT:l_avg:LAST:%.2lf Last\\l"]);
69 } # sub getRRDArgs
70
71 # vim: set shiftwidth=2 softtabstop=2 tabstop=8 :