terça-feira, 19 de julho de 2011

Configurando o Zabbix Agent para iniciar automaticamente em servidores CentOS e derivados

No post anterior, demonstrei como configurar o agente do Zabbix para iniciar automaticamente no Debian e em distribuições derivadas, como o Ubuntu.
Essa configuração não é tão simples em todas as distribuições e, como será visto a seguir, no CentOS e distribuições derivadas, como o Trixbox, é um pouco mais complicado, mas também não é nada de outro mundo.

Acesse a pasta /etc/init.d
cd /etc/init.d

Utilizaremos o editor de texto vi para criar o script. Nesse caso, nomeei o arquivo como zabbix_starter.sh:
vi zabbix_starter.sh

Adicione as seguintes linhas no arquivo:
#!/bin/bash
# chkconfig: 2345 95 20
# description: zabbix starter
# This script executes the zabbix agent on the system boot
# processname: zabbix_starter.sh
/usr/local/sbin/zabbix_agentd


Dentro do diretório /etc/init.d, digite:
chmod 755 zabbix_starter.shIsso dará as permissões necessárias para o arquivo ser executado.
Como root, execute o chkconfig para adicionar o script na inicialização do sistema:
sudo /sbin/chkconfig --level 2345 zabbix_starter.sh on

Confira se tudo ocorreu da maneira certa e o script irá ser executado na inicialização:
/sbin/chkconfig --list

Relatório gerado pelo comando /sbin/chkconfig --list
A figura acima mostra que o script zabbix_starter.sh está ativo nos runlevels 2, 3, 4 e 5. O que significa que o script será inicializado com o sistema.
Clique aqui para maiores informações sobre como funciona o runlevel no Linux.


Troubleshooting

Em alguns servidores eu me deparei com a seguinte mensagem de erro:
service doesn't support chkconfig

Esse erro ocorre porque existe um rótulo SELinux que não permite que o arquivo seja executado na inicialização do sistema.
Muitos serviços são executados com seu próprio rótulo SELinux e como o script que criamos não o possui, não irá ser executado.
Para resolver isso, iremos utilizar os seguintes comandos:
chcon system_u:object_r:initrc_exec_t:s0 zabbix_starter.sh

Configurando o Zabbix Agent para iniciar automaticamente no Debian e derivados

Quem trabalha com o Zabbix sabe bem o quanto essa ferramenta é poderosa no que se refere a gerência de redes de computadores, mas como nem tudo é perfeito, o Zabbix tem um inconveniente: toda vez que um servidor Linux é reiniciado é preciso acessar o servidor e "dar um start" no agente.
O problema é pior ainda quando ocorre queda de energia e todos os servidores monitorados são desligados, daí é aquela odisséia de ir em servidor por servidor para iniciar o agente.
Para evitar esse trabalho de presidiário, irei mostrar nesse tutorial como configurar o Zabbix Agent para iniciar junto com os principais processos do sistema. É um procedimento bastante simples, mas que economiza um bom tempo do administrador da rede.

1. Acesse a pasta /etc/init.d
cd /etc/init.d
2. Utilizaremos o editor de texto vim para criar o script. Nesse caso, nomeei o arquivo como zabbix_starter.sh
vim zabbix_starter.sh
3. Adicione as seguintes linhas no arquivo:
#!/bin/bash
/usr/local/sbin/zabbix_agentd
4. Dentro do diretório /etc/init.d, digite:
chmod 755 zabbix_starter.sh
Isso dará as permissões necessárias para o arquivo ser executado.
5. Por último, iremos utilizar o comando update-rc.d para atualizar os diretórios rc.d, adicionando o script na inicialização do sistema:
update-rc.d zabbix_starter.sh defaults



terça-feira, 7 de junho de 2011

Projeto de Lei 5476/2001 - cancelamento da assinatura do telefone fixo

Recebi essa informação por e-mail e resolvi passar adiante, afinal, essa é uma das poucas "correntes" que vale a pena. Acho que todo mundo que quer acabar com essa palhaçada das operadoras de telefonia cobrarem taxas abusivas de "manutenção de serviço" devem fazer a sua parte, ligar para o 0800 619619 e votar no Projeto de Lei nº 5476 de 2001. Este projeto está tramitando na Comissão de Defesa do Consumidor e, se aprovado, o projeto passará a ser lei e cada um pagará somente pelas ligações telefônicas efetuadas, acabando com esse roubo que é a assinatura mensal.É só ligar para 0800 619619 e quando a secretária eletrônica atender, digite 1, 1, 1. Assim você votou a favor do cancelamento da taxa de telefone fixo. Trata-se de um serviço da Câmara dos Deputados Federal e funciona das 8 às 20h. Quanto mais pessoas ligar, maior a chance de ser aprovado.Esse tipo de assunto NÃO é veinculado na TV ou no rádio porque eles não têm interesse e não estão preocupados com isso. Portanto, nós temos que correr atrás, afinal, quem paga somos nós.Lembre-se, é ligação 0800, você não estará perdendo nada, só terá a ganhar.
Divulgue isso, pois quanto mais pessoas se mobilizar, melhores serão os resultados.

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.