sexta-feira, 20 de julho de 2012

GroundWork - Plotar gráficos de utilização de rede

No GWOS Community Edition é chato configurar o RRDTool para cada AIC. 

O gráfico de utilização de rede é extremamente chato de criar, tanto o comando de criação do gráfico quanto o de atualização. Então como solucionei: encapsulamento de plugin. 

Estranho né? Mas vou explicar. 

O plugin para Nagios que encontrei me dava a seguinte saída: 

/usr/local/groundwork/nagios/libexec/check_snmp_int.pl -n eth0 -H 10.1.112.1 -C 'public' -k -Y --label -w 1850,1950 -c 1951,1990 -B
eth0:UP (in=1084.1Kbps/out=9.6Kbps):1 UP: OK

Mas isto não me dá saída de performance para a plotagem do gráfico. 

Então, criei um outro plugin chamado 'check_interfaces_gwos.pl' e nele o seguinte conteúdo:

---

#!/usr/bin/perl

($opt_host, $opt_comm, $opt_if, $opt_warn, $opt_crit) = @ARGV;

# --- Variables prog --- #
our $path="/usr/local/groundwork/nagios/libexec/";
#our @DIV=();
our $cmd;
#our $input;
#our $output;
#our $speed;


# --- Var test --- #

if($#ARGV<2){


        print "ERROR - Check your parameters\n";
        exit(3);

}

# --- Run command --- #

my $cmd=`$path/check_snmp_int.pl -n $opt_if -H $opt_host -C '$opt_comm' -k -Y --label -w $opt_warn -c $opt_crit -B`;
chomp($cmd);

#DEBUG: eth0:UP (in=409.7Kbps/out=288.6Kbps):1 UP: OK

if($cmd =~m/in=([\d\.]+)([K|M|G]bps).+out=([\d\.]+)[K|M|G]bps(.+)/){

        my $status=$4;
        print "$cmd|in=$1Kbps;;;0; out=$3Kbps;;;0;\n";

        if($status=~"CRITICAL"){

                exit(2);

        }

        if($status=~"WARNING"){

                exit(1);

        }

        if($status=~"OK"){

                exit(0);

        }

        exit(3);

}

else {

        print "$cmd\n";
        exit(2);

}

---

Logo tinha a seguinte saída: 

eth0:UP (in=1329.3Kbps/out=10.7Kbps):1 UP: OK|in=1329.3Kbps;;;0; out=10.7Kbps;;;0;


Então foi só criar o gráfico no GWOS, conforme segue:

Graph Label:
Interface Bandwidth in Kbps
Service:
IF-Bandwidth
Use Service as a Regular Expression
OFF
Host:
*
Status Text Parsing Regular Expression:

Use Status Text Parsing instead of Performance Data
OFF
RRD Name
/usr/local/groundwork/rrd/$HOST$_$SERVICE$.rrd
RRD Create Command
$RRDTOOL$ create $RRDNAME$ --step 300 --start n-1yr $LISTSTART$DS:$LABEL#$:GAUGE:900:U:U$LISTEND$ RRA:AVERAGE:0.5:1:8640 RRA:AVERAGE:0.5:12:9480
RRD Update Command
$RRDTOOL$ update $RRDNAME$ -t $LABELLIST$ $LASTCHECK$:$VALUELIST$ 2>&1
Custom RRDtool Graph Command
''
Enable
ON