Busca


imprimir pdf

Utilização básica das estatísticas da box Cisco ACE via SNMP


Este guia explica como informação tal como utilização do CPU, pode ser extraída da box Cisco Ace via protocolo SNMP. Estas informações podem ser usadas como base para gráficos RRD.

Pré-requisitos

- Cisco ACE box
- Servidor dedicado
* com: apache2, snmp, RRDs, perl, mrtg, script mrtg-rrd para construção e apresentação dos gráficos.
- Se quer monitorizar o loadbalancing: precisa também de uma "loadbalanced serverfarm" configurada na box ACE.

Configurar o acesso ACE SNMP v.3

Neste exemplo será utilizada uma versão segura (a mais segura actualmente)do protocolo SNMP - v.3. Não usa o parâmetro "community name" - requer autenticação através de "username" e password.

Em primeiro lugar, vamos criar o snmp-server com acesso baseado em user/password:
username: MonitorUser?
group: Network-Monitor?
pass: test-pass
rbx-99-6k-ace-1/vrack2070(config)# snmp-server user MonitorUser? Network-Monitor? auth sha pass-monitor


Agora é necessário criar uma "class map" para o tráfego SNMP que é recebido do servidor de gestão (IP: 188.165.213.17):
rbx-99-6k-ace-1/vrack2070(config)# class-map type management match-all SNMP-ALLOW_CLASS
2 match protocol snmp source-address 188.165.213.17 255.255.255.255


policy map:
rbx-99-6k-ace-1/vrack2070(config)# policy-map type management first-match SNMP_POLICY
class SNMP-ALLOW_CLASS
permit


Finalmente, a "policy-map" é aplicada à interface vlan externa:
rbx-99-6k-ace-1/vrack2070(config)# interface vlan 270
service-policy input SNMP_POLICY


Verificações SNMP simples

Agora queremos testar a partir do servidor encarregue da gestão : 188.165.213.17

Em primeiro lugar vamos verificar se o servidor tem acesso à box ACE via SNMP:
[root@server ~] snmpwalk -v 3 -l AuthNoPriv? -u MonitorUser? -a sha -A pass-monitor 188.165.125.125 1.3.6.1.2.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Application Control Engine Service Module
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.730
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2766993305) 320 days, 6:05:33.05
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: rbx-99-6k-ace-1
...


Obtivemos alguma informação básica usando o OID: 1.3.6.1.2.1.1 (isto é um "system object" na "Cisco Object Tree" - consulte a documentação) tal como uma descrição do sistema, o uptime e outros parâmetros.

Agora vamos tentar recolher essa informação usando um simples script perl :
#!/usr/bin/perl
use strict;
use warnings;
use Net::SNMP qw(:snmp);

my %oids = ( sysUpTimeInstance => '1.3.6.1.2.1.1.3.0',
sysDescr => '1.3.6.1.2.1.1.1.0',
cpmCPUTotal1minRev=> '1.3.6.1.4.1.9.9.109.1.1.1.1.7.1',
cpmCPUTotal5minRev=> '1.3.6.1.4.1.9.9.109.1.1.1.1.8.1' );

my ($session, $err) = Net::SNMP->session( -version => '3',
-hostname => '188.165.125.125',
-username => 'MonitorUser',
-authpassword => 'pass-monitor',
-authprotocol => 'sha' );
die 'Error: '. $err unless $session;
my $result = $session->get_request( -varbindlist => [values %oids] );

unless(defined $result) {
warn $session->error();
$session->close();
exit 1;
}

print "Report from ACE. Example info:\n";
foreach(sort keys %oids){
print $_ . ': ' . $result->{$oids{$_}} . "\n";
}
$session->close();
exit 0;


E o resultado:
[root@server ~] perl script.pl
Report from ACE. Example info:
cpmCPUTotal1minRev: 6
cpmCPUTotal5minRev: 4
sysDescr: Application Control Engine Service Module
sysUpTimeInstance: 320 days, 06:12:51.79


Agora vamos comparar estas informações com as "verdadeiras":
rbx-99-6k-ace-1/vrack2070# sh processes cpu

CPU utilization for five seconds: 3%; one minute: 6%; five minutes: 4%
PID Runtime(ms) Invoked uSecs 1Sec 5 Sec 1 Min 5 Min Process

1 412654 5652836 72 0.0 0.0 % 0.0 % 0.0 % init
2 14 2946 5 0.0 0.0 % 0.0 % 0.0 % keventd
3 40191 17823851 2 0.0 0.0 % 0.0 % 0.0 % ksoftirqd_CPU0
4 70517 17202179 4 0.0 0.0 % 0.0 % 0.0 % ksoftirqd_CPU1
5 0 1 10 0.0 0.0 % 0.0 % 0.0 % kswapd
...


Como podemos ver as informações de utilização de CPU são as mesmas (para períodos de 1 e 5 minutos).


MRTG, RRD, SNMP v.3 e como juntar todas estas coisas


Agora iremos configurar mrtg e apresentar a utilização de CPU (períodos de 1 e 5 minutos) nos gráficos.

Exemplo de configuração MRTG para SNMP v3:
WorkDir: /home/ovh/aceMonitor/www

LogFormat: rrdtool
PathAdd: /usr/bin/
LibAdd: /usr/share/perl5
Options[$]: noborder nobanner growright

TimeStrFmt[_]: %Y-%m-%d %H:%M:%S

Target[ace-2070-load]: 1.3.6.1.4.1.9.9.109.1.1.1.1.7.1&1.3.6.1.4.1.9.9.109.1.1.1.1.8.1:public@188.165.125.125
:
3
SnmpOptions[ace-2070-load]: authpassword=>'pass-monitor',authprotocol=>'sha',username=>'MonitorUser'
noHC[ace-2070-load]: yes
SetEnv[ace-2070-load]: MRTG_INT_IP="188.165.125.125" MRTG_INT_DESCR=""
MaxBytes[ace-2070-load]: 100
Title[ace-2070-load]: CPU usage for rbx-99-6k-ace-1/vrack2070
PageTop[ace-2070-load]: <h1>CPU usage for rbx-99-6k-ace-1/vrack2070</h1>
LegendI[ace-2070-load]: cpu 1min:
LegendO[ace-2070-load]: cpu 5min:
Options[ace-2070-load]: gauge
Ylegend[ace-2070-load]: percent
ShortLegend[ace-2070-load]: %
Legend1[ace-2070-load]: CPU utilisation 1 min avg
Legend2[ace-2070-load]: CPU utilisation 5 min avg

enablesnmpv3: yes


E o resultado:



Documentação adicioanal

-Cisco SNMP Object Navigator
-Cisco Application Control Engine Module Load Balancing Guide
-MRTG reference