contrib/collection3: Add an basic, extensible, modular graphing front-end.
[collectd.git] / contrib / collection3 / lib / Collectd / Graph / Type / Load.pm
diff --git a/contrib/collection3/lib/Collectd/Graph/Type/Load.pm b/contrib/collection3/lib/Collectd/Graph/Type/Load.pm
new file mode 100644 (file)
index 0000000..f13665e
--- /dev/null
@@ -0,0 +1,71 @@
+package Collectd::Graph::Type::Load;
+
+use strict;
+use warnings;
+use base ('Collectd::Graph::Type');
+
+use Collectd::Graph::Common (qw($ColorCanvas ident_to_filename get_faded_color));
+
+return (1);
+
+sub new
+{
+  my $pkg = shift;
+  my $obj = Collectd::Graph::Type->new (@_);
+  $obj->{'data_sources'} = [qw(shortterm midterm longterm)];
+  $obj->{'rrd_opts'} = ['-v', 'System load'];
+  $obj->{'rrd_title'} = 'System load';
+  $obj->{'rrd_format'} = '%.2lf';
+  $obj->{'colors'} = [qw(00ff00 0000ff ff0000)];
+
+  print STDERR "Hi, this is Collectd::Graph::Type::Load::new\n";
+
+  return (bless ($obj, $pkg));
+} # new
+
+sub getRRDArgs
+{
+  my $obj = shift;
+  my $index = shift;
+
+  my $ident = $obj->{'files'}[$index];
+  if (!$ident)
+  {
+    cluck ("Invalid index: $index");
+    return;
+  }
+  my $filename = ident_to_filename ($ident);
+  $filename =~ s#:#\\:#g;
+
+  my $faded_green = get_faded_color ('00ff00');
+
+  return (['-t', 'System load', '-v', 'System load',
+    "DEF:s_min=${filename}:shortterm:MIN",
+    "DEF:s_avg=${filename}:shortterm:AVERAGE",
+    "DEF:s_max=${filename}:shortterm:MAX",
+    "DEF:m_min=${filename}:midterm:MIN",
+    "DEF:m_avg=${filename}:midterm:AVERAGE",
+    "DEF:m_max=${filename}:midterm:MAX",
+    "DEF:l_min=${filename}:longterm:MIN",
+    "DEF:l_avg=${filename}:longterm:AVERAGE",
+    "DEF:l_max=${filename}:longterm:MAX",
+    "AREA:s_max#${faded_green}",
+    "AREA:s_min#${ColorCanvas}",
+    "LINE1:s_avg#00ff00: 1 min",
+    "GPRINT:s_min:MIN:%.2lf Min,",
+    "GPRINT:s_avg:AVERAGE:%.2lf Avg,",
+    "GPRINT:s_max:MAX:%.2lf Max,",
+    "GPRINT:s_avg:LAST:%.2lf Last\\l",
+    "LINE1:m_avg#0000ff: 5 min",
+    "GPRINT:m_min:MIN:%.2lf Min,",
+    "GPRINT:m_avg:AVERAGE:%.2lf Avg,",
+    "GPRINT:m_max:MAX:%.2lf Max,",
+    "GPRINT:m_avg:LAST:%.2lf Last\\l",
+    "LINE1:l_avg#ff0000:15 min",
+    "GPRINT:l_min:MIN:%.2lf Min,",
+    "GPRINT:l_avg:AVERAGE:%.2lf Avg,",
+    "GPRINT:l_max:MAX:%.2lf Max,",
+    "GPRINT:l_avg:LAST:%.2lf Last\\l"]);
+} # sub getRRDArgs
+
+# vim: set shiftwidth=2 softtabstop=2 tabstop=8 :