quinta-feira, 27 de maio de 2010

Monitorando tráfego de rede no Zabbix utilizando o SNMP.

Após pesquisa na internet visando fontes que mostrassem como verificar o tráfego de rede no Zabbix, utilizando-se o protocolo SNMP, encontrei uma em especial que sugeria a criação de um item apontando para o OID do objeto de octetos transferidos na MIB. Era mostrado que o índice a ser utilizado era 65539, 65540, assim por diante.
Verificando a MIB de todos os servidores aqui da empresa percebi que alguns o índice era 16777219, por exemplo. Como tenho um template associado a todos os servidores para monitorar uma interface conectada a determinada sub-rede, seria necessário criar itens específicos para as exceções.
Decidi contornar isso criando um shell script que pode ser utilizado para monitorar uma interface ligada em qualquer sub-rede da empresa e tanto o tráfego de saída, quanto de entrada.
Por exemplo, supondo que a empresa possua as seguintes sub-redes:
  • Rede-local: 172.16.0.0/16.
  • Rede-Servidores: 10.1.1.0/24.
  • DMZ (Rede de perímetro): 192.168.60.0/24.

Com as informações acima, deve-se criar um arquivo na pasta de scripts externos do Zabbix (verificar parâmetro ExternalScripts do arquivo zabbix_server.conf), para este artigo, utilizarei o nome trafegointerface.sh, com o conteúdo abaixo.



#!/bin/bash
# Criado por Rafael Oliveira
# Primeiro parametro IP do host, segundo SL (Redes dos servidores), L (Rede local), DMZ (Rede de perimetro)
# terceiro I (Incoming) O (Outgoing), quarto versao do SNMP e quinto comunidade.
COMUNIDADE=$5
VERSAOSNMP=$4
declare RESULTADO=0
if [ "$2" = "L" ]; then
        REDE="172.16";
elif [ "$2" = "SL" ]; then
        REDE="10.1.1";
elif [ "$2" = "DMZ" ]; then
        REDE="192.168.50";
else
        REDE=$1
fi
INDEX=`snmpwalk -v $VERSAOSNMP -c $COMUNIDADE $1 IP-MIB::ipAdEntIfIndex | grep $REDE | cut -d : -f 4 | cut -d " " -f 2`
if [ "$3" = "I" ]; then
        RESULTADO=`snmpwalk -v $VERSAOSNMP -c $COMUNIDADE $1 IF-MIB::ifInOctets.$INDEX | cut -d : -f 4 | cut -d " " -f 2`
else
        RESULTADO=`snmpwalk -v $VERSAOSNMP -c $COMUNIDADE $1 IF-MIB::ifOutOctets.$INDEX | cut -d : -f 4 | cut -d " " -f 2`
fi
echo $RESULTADO

Lembrando que o script deve ser alterado de acordo com as sub-redes contidas na empresa e os respectivos endereços IPs.
Após salvá-lo, vamos supor que desejamos monitorar o tráfego de rede entrante de todos os servidores conectados à rede de perímetro. Desta forma, podemos criar um template, que será associados a todos eles no Zabbix, com um item que possui as seguintes configurações.





Alguns pontos devem ser observados. No campo Key, os valores 2c e public, correspondem, respectivamente a versão do protocolo SNMP e comunidade. Desta forma, devem ser ajustados conforme sua necessidade. Além disso, I indica que o tráfego monitorado é o entrante para monitorar a saída, deve ser alterado para O.
Outro ponto interessante é referente a opção Custom Multiplier, que é 8. Isso deve ser feito desta forma pois o valor contido na MIB é o número de octetos trafegados.
Com isso, pode-se criar gráficos no Zabbix para uma melhor visualização dos valores e, assim, determinar se há algum gargalo de rede naquele servidor.
Abaixo temos um exemplo de um gráfico com tráfego de rede em uma interface.






Um abraço e até próxima.

3 comentários:

  1. Rafael, todo bom?
    Seguinte, e se eu quiser monitorar a interface, mas fazendo uma estatística do que está sendo trafegado. Por exemplo, eu gostaria de visualizar a taxa de utilização da interface, quantos % está sendo usado da minha rede por servidor (seria limitado em, por exemplo, 10Mb).
    Tem como fazer isso com o Zabbix?

    ResponderExcluir
    Respostas
    1. Bem, da forma como fiz no artigo, obtendo os dados da MIB SNMP, o dado fornecido é o número de octetos trafegados. Existe a opção de utilizar o agente do próprio Zabbix, mas não tenho certeza se ele fornece essa informação diretamente, ou ainda você poderia tentar trabalhar com os campos "Units" e "Multiplier". Não lembro se existe uma unit "percentage", por exemplo, e usando o devido multiplicador, talvez seria possível converter os octetos obtidos na MIB para porcentagem.

      Excluir
  2. Rafael, obrigado pelo retorno.
    Mas não consegui encontrar um meio de fazer o que precisava. Como vou utilizar o Weathermap com o Cacti para o Mapa da rede, não há a necessidade de fazer o gráfico da utilização pelo Zabbix.

    ResponderExcluir