Monitorando tráfego de rede no Zabbix utilizando o SNMP.
Autor: RAFAEL OLIVEIRA | Publicado: 2010-05-27T17:32:00-03:00

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&nbsp;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
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;REDE="172.16";
elif [ "$2" = "SL" ]; then
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;REDE="10.1.1";
elif [ "$2" = "DMZ" ]; then
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;REDE="192.168.50";
else
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;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
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;RESULTADO=`snmpwalk -v $VERSAOSNMP -c $COMUNIDADE $1 IF-MIB::ifInOctets.$INDEX | cut -d : -f 4 | cut -d " " -f 2`
else
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;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.&nbsp;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.