quarta-feira, 4 de maio de 2011

Zabbix: personalização de itens para o monitoramento de comutadores de pacotes utilizando o protocolo SNMP


Como o protocolo SNMP é atualmente o padrão para o monitoramento de ativos de rede, a grande maioria dos equipamentos de comutação de pacotes já vêm de fábrica com um agente SNMP instalado em seu hardware, sendo necessária apenas a configuração de alguns parâmetros que deve ser feita pelo administrador/gerente da rede.
Neste artigo, irei descrever passo-a-passo como criar itens no Zabbix para monitorar switches utilizando o protocolo SNMP.

1. Configuração do comutador de pacotes


Primeiramente, é necessário habilitar o suporte ao protocolo SNMP no painel de controle do equipamento que será monitorado. Após isso, deve-se definir os nomes de comunidades.O protocolo SNMP usa o conceito de comunidades para definir a confiabilidade entre o agente e aquele que está requisitando as informações do agente, que pode ser um software de gerência de redes ou alguém disparando comandos SNMP em um determinado nó da rede.
Uma comunidade é, resumidamente, uma variável do tipo string ou,
se quisermos simplificar ainda mais, uma senha que será usada pelo administrador da rede para ter acesso as informações do equipamento, como uptime, tráfego de pacotes e etc. Pode ser definida de três formas: read-only, read-write e trap, sendo que atualmente os comutadores disponíveis no mercado disponibilizam apenas dois campos para o preenchimento, um para definir a comunidade do tipo read-only e outro do tipo read-write.
Uma comunidade read-only permite ler valores de dados, sem modificálos, já uma comunidade read-write permite a leitura e modificação dos valores de dados.

Figura 1 - Tela de configuração do agente SNMP em um switch Cisco Catalyst 2960-S

2. Monitorando OIDs

Muitas vezes, os sistemas de gerência de rede não trazem todos os itens pré-configurados para o monitoramento de todos os equipamentos e serviços utilizadados em um determinado ambiente, portanto, caberá ao gerente da rede configurar esses itens e informar ao sistema de gerência de rede os parâmetros utilizados para acessar as informações necessárias que podem ser disponibilizadas pelo agente. Para descobrir quais são esses parâmetros é necessário usar o SNMP.
Neste caso, será monitorado o tráfego de dados nas portas de um comutador de rede. Para isso, é utilizando o comando snmpwalk, que é utilizado para listar os parâmetros SNMP existentes em um determinado dispositivo de rede.
A sintaxe padrão do snmpwalk é: snmpwalk -v 3 -c comunidade IP, sendo que a função de cada parâmetro utilizado no comando é:
a) snmpwalk: listar os parâmetros SNMP no dispositivo de rede que será monitorado;
b) -v 3: versão do SNMP utilizada pelo agente, pode-se usar as opções -v 1 (SNMP Versão 1), -v 2c (SNMP Versão 2), -v 3 (SNMP Versão 3);
c) -c comunidade: Nome da comunidade SNMP declarada no arquivo de configuração do agente. Precisa ter no mínimo direito de leitura;
d) IP: endereço IP do equipamento que deseja-se ler as informações.
O comando snmpwalk traz uma quantidade enorme de informações sobre o dispositivo requisitado, sendo que muitas dessas informações podem não ser de interesse do administrador da rede em determinado momento, por isso, é possível filtrar as informações que se deseja ter acesso. Neste caso específico, iremos monitorar as portas de um comutador de pacotes, portanto acrescentaremos o parâmetro interfaces ao comando para que ele filtre apenas as informações referentes as interfaces do equipamento. O comando usado para isso será snmpwalk -v 3 -c comunidade IP interfaces.
Para monitorar o tráfego de entrada e saída de dados em uma determinada porta de
um comutador de pacotes deve-se analisar os parâmetros ifInOctets e ifOutOctets gerados pelo comando snmpwalk, onde ifInOctets refere-se ao tráfego de entrada de dados em bps (bits por segundo) em uma determinada porta do comutador e ifOutOctets representa o tráfego de saída de dados, também em bps.

Figura 2 - resultado gerado através do uso do comando snmpwalk

Vamos analisar um dos parâmetros gerados pelo snmpwalk:

IF-MIB::ifInOctets.10101 = Counter32: 3316021136

a) IF-MIB::ifInOctets.10101: este parâmetro se refere ao tráfego de entrada de dados (ifInOctets) na porta 1 do comutador (10101). Note que este é um parâmetro utilizado pelo modelo Cisco Catalyst 2960-S. Ao executar um comando snmpwalk em modelos e ou marcas diferentes os parâmetros obtidos serão diferentes. Por exemplo, em um comutador D-Link, o parâmetro utilizado é ifInOctets.1. No caso específico do comutador da Cisco que está sendo utilizado neste estudo, é possível identificar as portas analisando os dois últimos digitos após ifInOctets, como é possível notar na figura 2.
b) Counter32: define que o parâmetro usa uma variável de 32 bits com valor mínimo de 0 e máximo de 2
32-1. É basicamente utilizado para rastrear informações, como o número de octetos enviados e recebidos em uma interface ou o número de erros e descartes encontrados em uma interface.
c) 3316021136: é o resultado gerado. Indica que estão entrando 3316021136 bps na porta 1 do comutador.

3. Criação de template para monitoramento de comutadores CISCO Catalyst 2960-S

O Zabbix é uma NMS (Network Management System) que trabalha com o conceito de itens e templates.Um item é formado por um conjunto de campos onde é informado ao Zabbix os dados necessários para que ele faça as requisições ao agente, seja este agente SNMP ou o próprio agente do Zabbix. Em um item são definidos quais parâmetros de uma MIB serão monitorados (CPU, interfaces, uptime, etc).Uma template é uma coleção de itens. Este conceito facilita consideravelmente o trabalho do gerente da rede. Por exemplo, em um ambiente onde se possui vários switches do mesmo modelo e se necessita monitorar os mesmos parâmetros, como o tráfego de rede de cada uma das portas, o procedimento se resumirá em criar os itens uma única vez e salvá-los como template. Após isso, bastará adicionar os demais switches na template para que todos eles herdem as configurações predefinidas, não havendo a necessidade de repetir o processo de criação de itens para cada um dos switches monitorados.
Para criar uma template no Zabbix basta clicar na aba Configuração, Hosts, selecionar a opção Templates e clicar em Criar Templates. Após, basta preencher os campos conforme a imagem abaixo.

Figura 3 - Tela de edição de template do Zabbix

a) Nome: nome que será atribuído à template que está sendo criada;b) Grupos: permite adicionar grupos de hosts relacion
ados à template;c) Novo grupo: caso o grupo que se deseja adicionar ainda não exista, basta preencher este campo para a criação de um novo grupo;d) Hosts|Templates: permite adicionar os hosts que herdarão os itens definidos na template.


4. Criação de itens para monitoramento de comutadores CISCO Catalyst 2960-S

Para criar um item, basta clicar na aba Configuração, Hosts, selecionar a opção Itens e clicar em Criar item. Após isso, deve-se preencher os campos conforme a imagem abaixo.
Figura 4 - Tela de edição de item do Zabbix

Para configurar um item, é preciso ter em mãos algumas informações adquiridas anteriormente com o uso de comandos SNMP. a) Tipo: Versão do agente SNMP;b) Comunidade SNMP: Nome da comunidade. Deve ser a mesma comunidade configurada no equipamento;c) SNMP OID: Valor adquirido com o uso do comando snmpwalk;Ex.: IF-MIB::ifInOctets.10101, IF-MIB::ifInOctets.10102, etc.d) Chave: Chave do valor que será lida (ifInput.1, ifOutput.1, etc);e) Unidades: Unidade que será exibida as informações (bps, B, etc);f) Intervalo atualização (em seg): Tempo de atualização dos gráficos;
g) Armazenar valor: define se o valor será armazenado como Delta (alterações/seg), Delta (alterações simples) e Sem alterar, que foi a opção escolhida neste estudo de caso, pois os demais valores, quando utilizados, não corresponderam ao resultado gerado pelos comandos SNMP.