package Collectd::Graph::Type::ArcCounts;
# Copyright (C) 2009 Anthony Dewhurst <dewhurst at gmail>
#
# This program is available software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the available Software
# Foundation; only version 2 of the License is applicable.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the available Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
use strict;
use warnings;
use base ('Collectd::Graph::Type');
use Collectd::Graph::Common (qw(ident_to_filename get_faded_color));
return (1);
sub getDataSources
{
return ([qw(available usedbydatasetbydataset usedbysnapshots usedbyrefres usedbychildren)]);
} # getDataSources
sub new
{
my $pkg = shift;
my $obj = Collectd::Graph::Type->new (@_);
$obj->{'data_sources'} = [qw(demand_data demand_metadata prefetch_data prefetch_metadata)];
$obj->{'rrd_opts'} = [];
$obj->{'rrd_title'} = 'ARC {type_instance} on {hostname}';
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 $legend = $ident->{'type_instance'};
my $faded_green = get_faded_color ('00ff00');
my $faded_blue = get_faded_color ('0000ff');
my $faded_red = get_faded_color ('ff0000');
my $faded_cyan = get_faded_color ('00ffff');
my @ret = @{$obj->{'rrd_opts'}};
push @ret, '-t', $obj->getTitle($ident);
push @ret, '-v', ucfirst($ident->{'type_instance'});
my $ds = {
demand_data => { legend => "Demand data ", color => "00ff00" },
demand_metadata => { legend => "Demand metadata", color => "0000ff" },
prefetch_data => { legend => "Prefetch data ", color => "ff0000" },
prefetch_metadata => { legend => "Prefetch meta ", color => "ff00ff" },
};
foreach (qw(demand_data demand_metadata prefetch_data prefetch_metadata))
{
push @ret,
"DEF:${_}_min=${filename}:${_}:MIN",
"DEF:${_}_avg=${filename}:${_}:AVERAGE",
"DEF:${_}_max=${filename}:${_}:MAX";
}
{
push @ret,
"CDEF:stack_prefetch_metadata=prefetch_metadata_avg",
"CDEF:stack_prefetch_data=prefetch_data_avg,stack_prefetch_metadata,+",
"CDEF:stack_demand_metadata=demand_metadata_avg,stack_prefetch_data,+",
"CDEF:stack_demand_data=demand_data_avg,stack_demand_metadata,+",
"AREA:stack_demand_data#${faded_green}",
"AREA:stack_demand_metadata#${faded_blue}",
"AREA:stack_prefetch_data#${faded_red}",
"AREA:stack_prefetch_metadata#${faded_cyan}",
}
foreach (qw(demand_data demand_metadata prefetch_data prefetch_metadata))
{
push @ret,
"LINE1:stack_${_}#" . $ds->{$_}->{color} . ":" . $ds->{$_}->{legend},
"GPRINT:${_}_min:MIN:%5.1lf Min,",
"GPRINT:${_}_avg:AVERAGE:%5.1lf Avg,",
"GPRINT:${_}_max:MAX:%5.1lf Max,",
"GPRINT:${_}_avg:LAST:%5.1lf Last\l";
}
return \@ret;
} # getRRDArgs
# vim: set shiftwidth=2 softtabstop=2 tabstop=8 :