Cerca


stampa pdf

Utilizzo delle statistiche di un Loadbalancer Cisco ACE con SNMP


In questa guida ti spieghiamo come recuperare informazioni come l'utilizzo della CPU dal tuo Loadbalancer Cisco tramite SNMP. Utilizzeremo queste informazioni come base per i grafici RRD.


Prerequisiti

  • un Loadbalancer Cisco ACE

  • un server dedicato con:
    - apache2
    - snmp
    - RRDs
    - perl
    - mrtg
    - mrtg-rrd script per la visualizzazione dei grafici

  • Per controllare il tuo Load Balancer devi avere una server farm bilanciata configurata sull'ACE.


Configurazione dell'accesso ACE SNP v.3

In questo esempio, utilizzamo la versione più sicura di SNMP (V.3) che non utilizza nomi della Community (richiede un nome utente e una password di autenticazione).

Creiamo un nmp-server con un accesso tramite username e password

username: MonitorUser
gruppo: Network-Monitor
password: test-pass
rbx-99-6k-ace-1/vrack2070(config)# snmp-server user MonitorUser Network-Monitor auth sha pass-monitor


Creiamo una class-map per il traffico SNMP in entrata sul nostro server di gestione (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


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

Applichiamo la policy-map all'interfaccia esterna della vlan:
rbx-99-6k-ace-1/vrack2070(config)# interface vlan 270
service-policy input SNMP_POLICY



Controllo SNMP semplice

Occupiamoci del server 188.165.213.17.

Verifichiamo che l'accesso all'ACE tramite SNMP sia attivo:

[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
...


Possiamo ottenere alcune informazioni di base utilizzando OID: 1.3.6.1.2.1.1 (è un oggetto di sistema nel Cisco Object Tree - vedi la documentazione specifica), come la descrizione del sistema, l'uptime e altri.

Ora proveremo ad ottenere questi dati utilizzando un semplice script in 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;


Il risultato che otteniamo è:
[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


Poi potremo confrontare queste informazioni con quelle reali:
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
...


Come si può vedere, i dati di utilizzo della CPU sono gli stessi (periodi di uno e cinque minuti).


MRTG, RRD, SNMP v.3 e loro commistione

Dovremo ora configurare l'mrtg el l'attuale utilizzo della CPU (periodi di uno e cinque minuti) sulle schede.

Esempio di configurazione MRTG per 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


Ed ecco il risultato:




Alcuni Documenti Addizionali

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