|
Busca |
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. - 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. 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 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). 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 : 3SnmpOptions[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: ![]() -Cisco SNMP Object Navigator -Cisco Application Control Engine Module Load Balancing Guide -MRTG reference |