-
Notifications
You must be signed in to change notification settings - Fork 1
/
metacreate_infini_rrd.pl
81 lines (57 loc) · 1.53 KB
/
metacreate_infini_rrd.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/perl
#
our $target = "create_infini_rrd.sh";
our $step = 5;
our $hb_sec = 10 / $step ; # 10 s granularity
our $r_sec = 86400; # 10 days
$hb_min = 300 / $step ; # 5 min granularity
$r_min = 26000 ; # 3 monts
$hb_hr = 3600 / $step ; # 1 hr granularity
$r_hr = 10000; # > 1 yr
$hb_day = 24 * $hb_hr ; # 24 hr granularity
$r_day = 22000; # 6 yrs
# import('./P17_def.pm6');
# use P17_def ;
# our %p17;
our @rrd_def;
require ('./P17_def.pl');
# rehash ??
#
$rrdtool =`which rrdtool`;
chomp $rrdtool ;
our $nl = " \\\n";
my $cmd = <<'HEAD';
#!/bin/bash
# skript to generate rrd files
# generated by
HEAD
$cmd .= "# $0 $nl";
$cmd .= "$rrdtool create infini.rrd --start NOW";
$cmd .= sprintf (" --step %d ", $step );
$cmd .= $nl;
foreach $field (@rrd_def) {
my ( $label, $P17cmd, $P17pos, $min, $max) = @$field;
$cmd .= sprintf ("DS:%s:GAUGE:%d:%d:%d%s", $label, 10, $min, $max, $nl );
}
$cmd .= rra ( $hb_sec, $r_sec, 'AVERAGE');
$cmd .= rra ( $hb_min, $r_min, 'MIN', 'MAX', 'AVERAGE');
$cmd .= rra ( $hb_hr, $r_hr, 'MIN', 'MAX', 'AVERAGE');
$cmd .= rra ( $hb_day, $r_day, 'MIN', 'MAX', 'AVERAGE');
print $cmd, "\n\n";
open ( TARGET , '>' , $target) or die "$! \n could not open $target";
print TARGET $cmd;
close TARGET;
print "$target written\n";
print ` chmod +x $target`;
exit;
# --------------------------
# rra (steps, rows, list-of-CF-tags)
sub rra {
my $rv="";
my $s = shift ;
my $r = shift ;
foreach my $tag ( @_ ) {
$rv .= sprintf ("RRA:%s:0.5:%d:%d %s", $tag , $s, $r , $nl );
}
return $rv ;
}