Code

initial
[rrdtool-all.git] / tutorial / ouce2013 / rrd-by-example / ex / hw-demo.pl
diff --git a/tutorial/ouce2013/rrd-by-example/ex/hw-demo.pl b/tutorial/ouce2013/rrd-by-example/ex/hw-demo.pl
new file mode 100755 (executable)
index 0000000..2633f39
--- /dev/null
@@ -0,0 +1,108 @@
+#!/usr/bin/perl
+#$ENV{PATH}='/scratch/rrd4/bin';
+$ENV{PATH}=$ENV{HOME}.'/checkouts/rrdtool/branches/1.3/program/src:'.$ENV{PATH};
+my $R='rrdtool';
+my $width=600 ;
+my $height=200 ;
+
+$ENV{TZ}='MET';
+
+sub create {   
+    my %p = (@_);
+    my $start;
+    open my $fh,'<hw-demo.data';
+    my $end = (split /\s/, <$fh>)[0]; # drop the first line;
+    my @updates;
+    $start = $end;    
+    while (<$fh>){
+        my @line = split;
+        last if $start - $p{step} > $line[0];
+        $start = $line[0];
+        unshift @updates, join ":",@line[0,1,2];
+    }
+    system $R,'create','hw-demo.rrd',
+          '--step' => $p{step},
+          '--start' => ($start-1),
+          'DS:in:GAUGE:'.($p{step}*1.5).':U:U',
+          'DS:out:GAUGE:'.($p{step}*1.5).':U:U',
+          'RRA:AVERAGE:0.5:1:'.$p{rows},
+          'RRA:HWPREDICT:'.$p{rows}.':'.$p{alpha}.':'.$p{beta}.':'.$p{period};            
+    system $R,'resize','hw-demo.rrd',5,'GROW',$p{rows};
+    rename 'resize.rrd','hw-demo.rrd';
+    system $R,'update','hw-demo.rrd',@updates;
+exit 1;
+    return ($start,$end);
+}
+
+sub graph {
+    my $file = shift;
+    my $start = shift;
+    my $end = shift;
+    system $R, 'graph', $file,
+              '--lazy',
+              '--start' => $start,
+              '--end'   => $end,
+              '--color=BACK#ffff',
+              '--color=CANVAS#ffff',
+              '--color=SHADEA#ffff',
+              '--color=SHADEB#ffff',
+              '--lower-limit' => 0,
+              '--pango-markup',
+              '--height' => $height,
+              '--width' => $width,
+              '--imgformat' => 'PDF', @_;
+}
+
+sub quick {
+    my $period = shift;
+    my $alpha = shift;
+    my $beta = shift;
+    create ( step => 1800,
+             rows => 16*24*12,
+             period => $period,
+             alpha => $alpha,
+             beta => $beta );
+   my $file = "HW-p${period}-a${alpha}-b${beta}";
+   $file =~ s/\./_/g;
+   graph  $file.'.pdf', 
+          '00:00 20080916',
+          'start+8d',
+          'DEF:a=hw-demo.rrd:in:AVERAGE',
+          'DEF:pred=hw-demo.rrd:in:HWPREDICT',
+          'DEF:conf=hw-demo.rrd:in:DEVPREDICT',
+          'DEF:fail=hw-demo.rrd:in:FAILURES',
+          'TICK:fail#ff8:1:Failures',
+          'CDEF:lowc=pred,conf,2,*,-',
+          'CDEF:widc=conf,4,*',
+          'LINE1:lowc',
+          'AREA:widc#cfc:Band:STACK',
+          'LINE0.1:0#3a1::STACK',
+          'LINE0.1:lowc#3a1',             
+          'LINE1:a#c00:InOctets',
+          "LINE1:pred#0a0:Predicted p\\:$period, a\\:$alpha, b\\:$beta\\l";
+}
+    
+my ($start,$end) = create ( step => 1800,
+                            rows => 16*24*12,
+                            period => 24*2,
+                            alpha => 0.5,
+                            beta => 0.001 );
+
+$width=800;
+$height=100;
+graph  'HW-input.pdf', 
+       '00:00 20080916',
+       'start+14d',
+       'DEF:a=hw-demo.rrd:in:AVERAGE',
+       'LINE2:a#c00:InOctets';
+
+
+$width=450;
+$height=120;
+quick 1,0.5,0.001;
+quick 1,0.1,0.001;
+quick 1,0.1,0.1;
+quick 48,0.5,0.001;
+quick 48,0.2,0.001;
+quick 48,0.03,0.001;
+quick 48,0.03,0.1;