|
|
Uma importante parte da pós-implementação de um produto é a monitoração constante. Primeiro porque é a partir dela que o administrador do sistema obterá dados para servir de parâmetros numa anlálise e segundo porque, quando enfrentando problemas, o troubleshooting é bastante facilitado quando a monitoração bem feita existe.
Geralmente os serviços comumente utilizados em ambientes UNIX-like possuem interfaces que informam dados sobre o que está ocorrendo. Cabe aos administradores de sistemas e redes saber capturar esta informação, armazenar e manter num formato padronizado para consultas estastísticas ou em tempo real. O problema é que cada serviço utiliza uma forma diferente para prover tais informações e geralmente o sysadmin precisa escrever longos scripts para atingir o nível de inteligibilidade necessário na organização dessas informações, geralmente um script para cada serviço. É aí que entra o Zabbix, um poderoso software livre com a proposta de monitorar e alertar quando um sistema ou serviço não está de acordo com regras pré-definidas, além de manter uma base de dados com histórico de alteração dos dados coletados, podendo gerar inclusive gráficos valor/tempo com essas informações. Sem dúvida, uma tarefa essencial para o administrador. Neste artigo mostrarei como instalar e configurar o Zabbix num ambiente Debian GNU/Linux (Squeeze). Boa leitura!
Basicamente, o Zabbix é dividido em quatro partes. São elas:
Servidor Um daemon que deve ser instalado no seu servidor de monitoração (e não no servidor que será monitorado, até porque é possível monitorar serviços em vários servidores diferentes). Ou seja, você deve dedicar, na sua rede, uma máquina para ser o servidor Zabbix, nem que seja virtual.
Agente Este sim, é um daemon para ser instalado nas máquinas que serão monitoradas. Vamos exemplificar no artigo apenas uma máquina para ser monitorada (Debian Lenny com Apache). Este agente recolhe as informações dos serviços e SO e envia, pela rede, para o servidor do Zabbix.
Backend O banco de dados que o Zabbix utilizará para armazenar os dados coletados. Os repositórios do Debian possuem binários do Zabbix para PostgreSQL e MySQL mas sendo compilado a partir do código-fonte, o Zabbix também pode ser configurado para trabalhar com bancos de dados Oracle ou SQLite. O backend não precisa ficar na mesma máquina que o servidor Zabbix, mas neste artigo vamos adotar que sim. Usaremos uma base MySQL.
Frontend Uma interface feita em PHP, que roda no servidor do Zabbix. Esta interface facilita a visualização dos dados e permite gerar gráficos e outros itens de forma rápida. Dessa forma, acessar o Zabbix significa digitar o nome DNS ou o IP do servidor do Zabbix no navegador de qualquer máquina da rede que tenha acesso.
O Zabbix pode monitrar um software/hardware que envie dados pelo protocolo SNMP, mas não é só isso. Com o agente, é possível monitorar praticamente qualquer serviço de software. Veremos isso mais adiante.
A instalação no Debian Squeeze é simples:
Conforme é perceptível, instalamos o binário do Zabbix referente ao MySQL, o frontend em PHP, o servidor MySQL, o Apache e o PHP (ambos para abrigarem o frontend do Zabbix).
O pacote Debian possui um conjunto de scripts prontos para ajudar na configuração inicial. Ao final da configuração do Apache e MySQL Server, a tela abaixo será exibida:
Se o seu sitema estiver em português, esta tela também estará. Ela pergunta justamente se queremos fazer com o dbconfig, de forma automática, ou manualmente via MySQL Console ou outra ferramenta. Escolha "Yes" para poupar trabalho de criação e configuração da nova base de dados.
Agora a senha do usuário root do MySQL é requisitada. Digite-a.
A próxima tela pedirá uma senha para o usuário "zabbix", que será criado no servidor MySQL, para ter acesso à nova base, de mesmo nome. É bom escolher uma senha. No nosso exemplo para o artigo, colocamos a senha "zabbix" (sem aspas).
Na tela a seguir, é necessário informar qual base de dados o frontend utilizará. No nosso caso, MySQL. A senha do usuário zabbix no BD, que você criou na tela anterior, será requisitada novamente.
Finalizada a instalação, o serviço já deve estar no ar. Para conferir, comande:
Deverão ser mostrados na tela vários PIDs de processos do Zabbix, indicando que ele está no ar. O Zabbix é bem rigoroso para subir. Tudo deve estar bem ajustado.
Configuração Para o frontend funcionar bem, é preciso configurar alguns itens no arquivo php.ini. Localize os itens abaixo e faça-os ficar como apresentados:
date.timezone = "America/Sao_Paulo" post_max_size = 16M max_execution_time = 300 max_input_time = 300
O Zabbix usa arquivos de configuração que armazena em /etc/zabbix (no caso de distros baseadas em Debian). São eles:
/etc/zabbix/apache.conf - cria um alias para o frontend do Zabbix no Apache. /etc/zabbix/dbconfig.php - configura o backend para o frontend. /etc/zabbix/zabbix_server.conf - configuração geral do Zabbix server.
Recomendo que você leia todos os arquivos, com calma. Os dois primeiros arquivos são simples e curtos. Já o terceiro, exige um pouco de atenção. Por hora, nos atendemos as seguinte opções:
ListenPort=10051 Por padrão o Zabbix server escuta na porta 10051 (o agente enviará informações para o servidor nesta porta), mas pasta descomentar e alterar este valor, se for o caso. No artigo, manteremos o padrão. DBHost, DBName, DBUser e DBPassword Configurações do backend. Como o debconf já fez isso pra gente, deve estar correto, mas é bom que você saiba onde alterar, caso precise.
As outras opções fogem do escopo deste artigo. Em sua maioria, são opções de tuning e configuração multi-nó (um pool de servidores Zabbix), que talvez seja tema de um próximo artigo. ;)
Abra um navegador e acesse http://localhost/zabbix para abrir a página inicial do frontend. Você deve ver uma página como na imagem abaixo:
O usuário padrão de administração do Zabbix é admin e a senha é zabbix.
Por enquanto, o Zabbix não está monitorando nada. Após fazer login como administrador, confira na aba "Monitoring > Dashboard" as estatísticas gerais. Para que haja monitoração, é preciso criar o host no Zabbix server e instalar o agente na máquina que será monitorada. Vamos primeiro criar o host:
Vá até a aba "Configuration > Hosts".
Nesta tela, aperecerá somente um host pré-cadastrado, que é o próprio servidor Zabbix (sim, ele pode ser monitorar-se). Se você seguiu o artigo, este servidor apresenta um status "Not monitored". Isso acontece porque não instalamos o agente no Zabbix server pois a idéia do artigo é monitorar uma máquina remota (cenário mais comum).
Na extrema direita, abaixo do formulário de busca, há um botão "Create host". Clique nele para adicionarmos um novo host (a máquina que queremos monitorar).
Uma tela para preenchermos as informações sobre o novo host será aberta. Nela, precisamos de basicamente nome, endereço IP (no nosso caso, o IP da máquina a ser monitorada é 192.168.56.2) ou nome DNS, porta onde o agente está escutando e pelo menos um grupo de hosts template associado.
Template, no Zabbix, é um dos itens mais importante a ser aprendido. Um template é um conjunto de regras específicas para um produto que efetua sua monitoração. O Zabbix já vem com templates pré-definidos para monitor alguns serviços de sistemas GNU/Linux e Windows. Vamos aproveitar que boa parte do trabalho já foi feito e utilizar um template pré-definido para Linux (já que nosso host monitorado roda Debian) e para monitorar o Apache nele, criaremos um template novo mais à frente.
Portanto, antes de salvar o host e criá-lo efetivamente, temos que associá-lo a um template. Vá no menu da direita e clique no botão "Add" para linkar o host com pelo menos um template.
Surgirá uma janela que navega entre os grupos de templates existentes e permite escolher um template já criado. O único grupo pré-definidos que possui templates é justamente o grupo "Templates" (com o perdão da redundância). Escolha-o e perceba que vários templates serão exibidos para escolha.
Marque apenas o template "Template_Linux", como na imagem abaixo e clique no botão "Select", no fim da página. Depois pode salvar o host.
A monitoração deste host ainda não está completa, nem funcionando, por dois motivos: falta instalar o agente na máquina e falta criar um template para monitorar o Apache, certo?
Instalação do agente O agente é ainda mais fácil de ser instalado, como creio esperar-se. Como o cliente é um Debian, bata instalar o pacote zabbix-agent mas também pode ser compilado do fonte. Depois de instalado, um arquivo de configuração é criado: /etc/zabbix/zabbix_agentd.conf. É nele que vamos configurar o agente.
No cenário mais básico, basta configurar a opção Server com o IP do servidor Zabbix. No nosso caso, o servidor é 192.168.56.1, então a linha fica:
Server=192.168.56.1
Agora é só reiniciar o agente para aplicar as novas configurações:
[codecitation="brush: bash;"} $ sudo /etc/init.d/zabbix-agentd restart {/codecitation}
Aguarde alguns instantes e vá novamente à configuração de hosts no servidor Zabbix. Se tudo correr bem com a comunicação entre as máquinas, o ícone do Zabbix na coluna "Availability" deve ficar verde. Isso significa que o host está sendo monitorado por um agente Zabbix. Aproveite e perceba que o Zabbix pode trabalhar com SNMP e IPMI, dispensando o uso do agente em alguns casos. Entre no dashboard também e perceba os alertas que o Zabbix informa. Como dito, o Template_Linux monitora vários serviços que não estou utilizando neste host como servidores de e-mail e SSH. Por isso cabe à você excluir as monitorações de serviços que não interessem ou, numa melhor prática, criar um templade de acordo com suas necessidades. Falando em template...
Agora temos monitoração de tudo que o Template_Linux monitora, mas ainda não temos Apache. Chegou o momento de criarmos um template para o Apache, para isto, vamos revisar o funcionamento do Zabbix:
- O agente recolhe informações e num intervalo de tempo pré-definidio as envia para o servidor Zabbix (porta de destino padrão é 10051). - O servidor recebe essas informações e armazena no backend (banco de dados), mas ele também verifica, num intervalo de tempo pré-definido, se o agente está no ar (porta de destino padrão é 10050). - Para verificar se o status de um alerta é verde ou vermelho, o servidor Zabbix envia um comando, que está definido no template, para o agente. Este o recebe e executa um comando equivalente, localmente, filtra a resposta e devolve para o servidor Zabbix. Dependendo da regra que existir no servidor, essa resposta significará um alerta vermlho (problema) ou verde (normal).
Então, já que vamos monitar o Apache, precisamos de um comando local (de SO) que nos permita obter informações sobre o Apache. E não estou falando de número do processo ou processamento consumido, mas sim de estatísticas no nível da aplicação como tráfego entrante e sainte, threads, etc.
Aí entra a pesquisa. Antes de monitrar um serviço/software no Zabbix, você tem que levantar como é feita uma monitoração manual no produto. Qualquer produto que se preze permite alguma forma de monitoração manual, mesmo que mínima. No caso do Apache, é preciso carregar o mod_status e configurá-lo (geralmente /etc/apache2/mods-available/status.conf). Mãos à obra:
Configure o arquivo /etc/apache2/mods-available/status.conf para permitir acesso ao diretório virtual server-status a partir do localhost e do servidor Zabbix, deixando a ordem de acesso assim:
Agora configure o modo extendido deste módulo, adicionando a opção "ExtendedStatus On" (sem aspas) ao arquivo de configuração principal (apache2.conf ou httpd.conf).
O comando acima habilitará o módulo do Apache mod_status, responsável por prover informações de monitoração.
Ao acessar este diretório (http://192.168.56.2/server-status) você verá uma página HTML cheia de informações sobre o Apache. Se passar um parâmetro especial para esta URL (http://192.168.56.2/server-status?auto), verá simplesmente um texto compacto com as informações, menos bonito que a página HTML, mas mais atraente para que as informações sejam capturadas:
Certo, mas como pegamos essas informações e enviamos para o servidor Zabbix? Basta fazer um script. :)
Aí entra em jogo a criatividade do administrador de sistemas e o poder de scripting. Uma maneira simples é usar o wget (já que os dados estão num servidor web) para capturar e tratar tais informações. Aqui usei um script assim (achei na Wiki do Zabbix e alterei um pouco):
Salve este script como zabbix_apache.sh no diretório /etc/zabbix/ da máquina a ser monitorada e adicionete a seguinte linha ao arquivo /etc/zabbix/zabbix_agentd.conf:
UserParameter=apache[*],/etc/zabbix/zabbix_apache.sh \$1
Dessa forma, toda vez que o agente rodar, vai executar este comando definido pelo usuário. Este comando chama o script, que coletará as informações de status e devolverá para o agente, que por sua vez, enviará ao servidor.
Voltando ao servidor Zabbix, vamos criar o nosso template. Vá em "Configuration > Hosts" e escolha "Templates" no menu drop-down da direita. Depois clique no botão "New template" para inserir as informações do novo template. Insira apenas o nome como "Template_Apache_Linux" e clique em "Save".
O tempalte está zerado. Vamo adicionar o que é preciso:
- Clique em "Applications" e adicione uma application chamada "Apache2" (sem aspas). - Clique em "Items" e adicionar um item TotalAccesses como mostra a figura abaixo:
Repita o passo anterior, criando um item para cada informação, sendo elas: TotalKBytes, Uptime, ReqPerSec, BytesPerSec, BytesPerRec, BusyWorkers e IdleWorkers. Respeite o caso das letras, ok?
Ao final da adição dos itens, você deverá ter uma lista completa com todos os itens sendo monitorados. Se o agente já estiver em funcionamento, os itens estão verdes no servidor.
Bem, esta foi uma rápida introdução ao Zabbix. Existem recursos especializados como triggers, gráficos e contra-medidas que o Zabbix é capaz de fazer, mas isso vai ficar para um artigo futuro. Boa monitoração! :) |
Últimos artigos
- Serviços Google via linha de comando (264 hits)
- Monitoração de serviços com o Zabbix (1073 hits)
- Recuperando mensagens do Outlook Express com Linux (238 hits)
- Flash Player 10 nativo para Linux 64-bits (342 hits)
- D-Link DWA-125 no Ubuntu 10.04 (Lucid Lynx) (1101 hits)
- Opera Web Browser - o seu próximo navegador (871 hits)
- Como remover vírus de pen drive (2890 hits)
- Go - A linguagem de programação do Google (917 hits)
- Como usar cartuchos recarregados na HP C5180 (1117 hits)
- Expressões regulares no Mediation (770 hits)
Artigos mais lidos
- Sniffing com o Wireshark (14705 hits)
- Controle de dispositivos com a porta paralela (9487 hits)
- Mascarando o endereço MAC da placa de rede (8135 hits)
- Remoção manual de vírus (6293 hits)
- Ghost pela rede (5972 hits)
- Tudo sobre o GRUB (5429 hits)
- Criando um layout para seu website (4076 hits)
- Extensões perigosas no Windows (3648 hits)
- Entendendo um ataque man-in-the-middle (3352 hits)
- BackTrack - uma distribuição hacker (3272 hits)

















