1
package Collectd::Graph::Type::GenericIO;
5
use base ('Collectd::Graph::Type');
9
use Collectd::Graph::Common (qw($ColorCanvas ident_to_filename get_faded_color));
18
my $ident = $obj->{'files'}[$index] || confess ("Unknown index $index");
19
my $filename = ident_to_filename ($ident);
21
my $rrd_opts = $obj->{'rrd_opts'} || [];
22
my $rrd_title = $obj->getTitle ($ident);
23
my $format = $obj->{'rrd_format'} || '%5.1lf%s';
25
my $ds_list = $obj->getDataSources ();
26
my $ds_names = $obj->{'ds_names'};
32
my $colors = $obj->{'rrd_colors'} || {};
33
my @ret = ('-t', $rrd_title, @$rrd_opts);
35
if (defined $obj->{'rrd_vertical'})
37
push (@ret, '-v', $obj->{'rrd_vertical'});
42
my $num = 0 + @$ds_list;
43
confess ("Expected two data sources, but there is/are $num");
46
my $rx_ds = $ds_list->[0];
47
my $tx_ds = $ds_list->[1];
49
my $rx_ds_name = $ds_names->{$rx_ds} || $rx_ds;
50
my $tx_ds_name = $ds_names->{$tx_ds} || $tx_ds;
52
my $rx_color_fg = $colors->{$rx_ds} || '0000ff';
53
my $tx_color_fg = $colors->{$tx_ds} || '00b000';
55
my $rx_color_bg = get_faded_color ($rx_color_fg);
56
my $tx_color_bg = get_faded_color ($tx_color_fg);
57
my $overlap_color = get_faded_color ($rx_color_bg, background => $tx_color_bg);
59
$filename =~ s#:#\\:#g;
62
$rx_ds_name =~ s#:#\\:#g;
63
$tx_ds_name =~ s#:#\\:#g;
67
my $factor = $obj->{'scale'};
70
"DEF:min_rx_raw=${filename}:${rx_ds}:MIN",
71
"DEF:avg_rx_raw=${filename}:${rx_ds}:AVERAGE",
72
"DEF:max_rx_raw=${filename}:${rx_ds}:MAX",
73
"DEF:min_tx_raw=${filename}:${tx_ds}:MIN",
74
"DEF:avg_tx_raw=${filename}:${tx_ds}:AVERAGE",
75
"DEF:max_tx_raw=${filename}:${tx_ds}:MAX",
76
"CDEF:min_rx=min_rx_raw,${factor},*",
77
"CDEF:avg_rx=avg_rx_raw,${factor},*",
78
"CDEF:max_rx=max_rx_raw,${factor},*",
79
"CDEF:min_tx=min_tx_raw,${factor},*",
80
"CDEF:avg_tx=avg_tx_raw,${factor},*",
81
"CDEF:max_tx=max_tx_raw,${factor},*");
83
else # (!$obj->{'scale'})
86
"DEF:min_rx=${filename}:${rx_ds}:MIN",
87
"DEF:avg_rx=${filename}:${rx_ds}:AVERAGE",
88
"DEF:max_rx=${filename}:${rx_ds}:MAX",
89
"DEF:min_tx=${filename}:${tx_ds}:MIN",
90
"DEF:avg_tx=${filename}:${tx_ds}:AVERAGE",
91
"DEF:max_tx=${filename}:${tx_ds}:MAX");
95
"CDEF:overlap=avg_rx,avg_tx,LT,avg_rx,avg_tx,IF",
96
"AREA:avg_rx#${rx_color_bg}",
97
"AREA:avg_tx#${tx_color_bg}",
98
"AREA:overlap#${overlap_color}",
99
"LINE1:avg_rx#${rx_color_fg}:${rx_ds_name}",
100
"GPRINT:min_rx:MIN:${format} Min,",
101
"GPRINT:avg_rx:AVERAGE:${format} Avg,",
102
"GPRINT:max_rx:MAX:${format} Max,",
103
"GPRINT:avg_rx:LAST:${format} Last\\l",
104
"LINE1:avg_tx#${tx_color_fg}:${tx_ds_name}",
105
"GPRINT:min_tx:MIN:${format} Min,",
106
"GPRINT:avg_tx:AVERAGE:${format} Avg,",
107
"GPRINT:max_tx:MAX:${format} Max,",
108
"GPRINT:avg_tx:LAST:${format} Last\\l");
113
# vim: set shiftwidth=2 softtabstop=2 tabstop=8 :