Como eu uso o SNMP?

4

Estou fazendo uma aula de gerenciamento de rede e o tópico principal é SNMP. Embora meu professor seja bom em explicar a parte teórica do SNMP (V1, V2, V3, RMON, MIBS etc.) ele não é bom em explicar as coisas práticas, como usar as informações que acabei de reunir ou como eu usaria o SNMP? para detectar congestionamentos ou tráfego incomum na rede. Qualquer informação sobre isso seria apreciada.

    
por Stulli 07.12.2009 / 08:13

3 respostas

4

Freqüentemente, uso o SNMP em combinação com o rrdtool para fornecer gráficos de visão geral, informando sobre o tráfego que passa pelos roteadores em minha rede e o uso da CPU / memória dos servidores. Uma ferramenta de linha de comando comum é o 'snmpget', que captura e produz uma parte específica dos dados fornecidos por um dispositivo habilitado para SNMP.

Por exemplo, para obter os octetos transferidos através do meu roteador Cisco, eu uso:

snmpget -v 1 -c public $ roteador_ip_address IF-MIB :: ifOutOctets.3 | egrep -o "[0-9] + $"

e depois canaliza a saída para o rrdtool. Em dispositivos de consumo, eu frequentemente encontrei um suporte para SNMP que na verdade não existe (o chip pode estar lá, mas não é realmente gravado no firmware) - então isso é definitivamente algo para se ter cuidado. Por exemplo, o roteador Netgear que estava em funcionamento antes que este Cisco suportasse o SNMP, mas na verdade não produzia nenhum dado.

Para descobrir quais dados estão disponíveis para um determinado dispositivo, você pode usar o comando snmpwalk ou verificar os MIBs. Descobri, no entanto, que a verificação dos MIBs é praticamente inútil, já que a maioria dos dispositivos que eu encontrei tendem a usar seus próprios MIBs personalizados (ou não anunciam quais suportam). Um exemplo do comando snmpwalk é; snmpwalk -c public $device_ip_address

Se você está curioso sobre meu gráfico rrdtool, aqui está um exemplo da parte do meu script (que é executado a cada cinco minutos) para representar graficamente o tráfego do meu roteador.

function plot_router {
    if [ ! -e $DATA_DIRECTORY/router.rrd ]; then
                rrdtool create $DATA_DIRECTORY/router.rrd --start now \
            DS:bytes_in:COUNTER:600:U:U \
            DS:bytes_out:COUNTER:600:U:U \
                        RRA:AVERAGE:0.5:1:600 \
                        RRA:AVERAGE:0.5:6:700 \
                        RRA:AVERAGE:0.5:24:775 \
                        RRA:AVERAGE:0.5:288:797 \
                        RRA:MAX:0.5:1:600 \
                        RRA:MAX:0.5:6:700 \
                        RRA:MAX:0.5:24:775 \
                        RRA:MAX:0.5:288:797
        fi
        bytes_in='snmpget -v 1 -c public $router_ip  IF-MIB::ifInOctets.3  | egrep -o "[0-9]+$"'
        bytes_out='snmpget -v 1 -c public $router_ip IF-MIB::ifOutOctets.3  | egrep -o "[0-9]+$"'
        rrdtool update $DATA_DIRECTORY/router.rrd \
            N:$bytes_in:$bytes_out

        # The actual graphing...
    for (( i=0;i<$SEGMENTS_COUNT;i++)); do
        SEGMENT=${SEGMENTS[${i}]}
        FILENAME="$OUTPUT_DIRECTORY/router_$SEGMENT.png"
        rrdtool graph $FILENAME -s e-$SEGMENT -e now -h $HEIGHT -w $WIDTH --title "('date') Router"\
            --rigid \
            --slope-mode \
            DEF:bytes_out=$DATA_DIRECTORY/router.rrd:bytes_out:AVERAGE \
            CDEF:inverted=0,bytes_out,- \
            AREA:inverted$fg_color1:"Bytes Out (Upload)" \
            DEF:bytes_in=$DATA_DIRECTORY/router.rrd:bytes_in:AVERAGE AREA:bytes_in$fg_color2:"Bytes In (Download)" \
            CDEF:error=bytes_in,UN,INF,0,IF \
            AREA:error$fg_color_error:"Errors" \
            GPRINT:bytes_in:AVERAGE:"Avg Bytes In\: %3.0lf" \
            GPRINT:inverted:AVERAGE:"Avg Bytes Out\: %3.0lf" >> /dev/null
    done
}

Observe o pouco sobre o script sendo executado a cada cinco minutos. Para a vida de mim, em todos os meus anos usando rrdtool, eu nunca tomei o tempo para descobrir as 'sintonias' certas para os RRAs para nada além de um intervalo de cinco minutos. Se você acertar as regulagens, você acabará com gráficos completamente vazios e um senso de perplexidade. Então, pela minha experiência, use apenas intervalos de cinco minutos (execute seu script de inserção a cada cinco minutos do cron), a menos que você queira dedicar algum tempo para descobrir os RRAs corretos para outra coisa.

Eu também queria ressaltar que, enquanto o rrdtool é uma ferramenta incrível para sistemas Linux, ele também está disponível no OSX (pode estar disponível para o Windows através do Cygwin). É uma instalação fácil através do fink - apenas certifique-se de adicionar as árvores "unstable / main" e "unstable / crypto" ao seu arquivo /sw/etc/fink.conf e "fink install rrdtool" até ficar feliz.

Espero que isso lance alguma luz sobre alguns usos práticos do SNMP.

    
por 07.12.2009 / 13:32
1

O SNMP é usado principalmente para monitoramento de desempenho. Com isso em mente, você pode usar o SNMP para detectar tráfego de rede incomum, se por isso você quer dizer "incomumente ocupado". Basta ler a métrica adequada a cada x minutos, plotar os valores em algo como rrdtool e verificar os gráficos. Você também pode ler o valor de vez em quando e acionar algum alarme (enviar um e-mail, SMS ou algo semelhante, se o valor for muito alto).

Dito isto, a configuração do SNMP sempre exigirá algum grau de investimento de tempo e dinheiro. Não é uma solução de fogo e esquecer, mas é muito flexível e poderosa.

    
por 07.12.2009 / 09:45
1

O SNMP é usado muito mais do que apenas monitorar e medir o tráfego da rede. O SNMP pode e é usado para monitorar o status da interface, o uso da CPU e da memória, o status do hardware na rede e no equipamento do servidor, etc. No meu ambiente, o SNMP é o ponto central do monitoramento de cada hardware em execução, de servidores a switches, firewalls etc. / p>     

por 08.12.2009 / 02:16

Tags