10
www.mentebinaria.com.br 0x11 - Monitoração de serviços com o Zabbix 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). 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 A pache). 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.

Zabbix

Embed Size (px)

DESCRIPTION

Configuração Zabbix

Citation preview

Page 1: Zabbix

www.mentebinaria.com.br

0x11 - Monitoração de serviços com o Zabbix

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).

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 A

pache). 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.

Page 2: Zabbix

A instalação no Debian Squeeze é simples:

$ sudo apt-get install zabbix-server-mysql zabbix-frontend-php mysql-server apache2

php5

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.

Page 3: Zabbix

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:

$ pgrep zabbix

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:

Page 4: Zabbix

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 distro

s 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:

PS.: 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".

Page 5: Zabbix

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 é 112) 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

Page 6: Zabbix

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.

Page 7: Zabbix

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:

$ sudo /etc/init.d/zabbix-agentd restart

Aguarde alguns instantes e vá novamente à configuração de hosts no servidor Zabbix. S

e 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 a

gente Zabbix. Aproveite e perceba que o Zabbix pode trabalhar com SNMP e IPMI, dis

pensando o uso do agente em alguns casos. Entre no dashboard também e perceba os ale

rtas 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 interesse

m ou, numa melhor prática, criar um templade de acordo com suas necessidades. Falan

do 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.

Page 8: Zabbix

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:

Order Deny, Allow

Allow from localhost 111

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 abaixo habilitará o módulo do Apache mod_status, responsável por prover

informações de monitoração.

$ sudo a2enmod status

Ao acessar este diretório (http://112/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://112/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):

----------------------------------CODE----------------------------------

#!/bin/bash

apache_host="localhost"

rval=0

tmp="/tmp/apache_status"

Page 9: Zabbix

REFRESH=$(wget --quiet -O $tmp http://$apache_host/server-status?auto) case $1 in

'TotalAccesses')

$REFRESH

fgrep "Total Accesses:" $tmp | awk '{print $3}'

rval=$?;;

'TotalKBytes')

$REFRESH

fgrep "Total kBytes:" $tmp | awk '{print $3}'

rval=$?;;

'Uptime')

$REFRESH

fgrep "Uptime:" $tmp | awk '{print $2}'

rval=$?;; 'ReqPerSec')

$REFRESH

fgrep "ReqPerSec:" $tmp | awk '{print $2}'

rval=$?;; 'BytesPerSec')

$REFRESH

fgrep "BytesPerSec:" $tmp | awk '{print $2}'

rval=$?;;

'BytesPerReq')

$REFRESH

fgrep "BytesPerReq:" $tmp | awk '{print $2}'

rval=$?;;

'BusyWorkers')

$REFRESH

fgrep "BusyWorkers:" $tmp | awk '{print $2}'

rval=$?;; 'IdleWorkers')

$REFRESH

fgrep "IdleWorkers:" $tmp | awk '{print $2}'

rval=$?;; *)

echo "ZBX_NOTSUPPORTED"

esac

if [ "$rval" -ne 0 ]; then

echo "ZBX_NOTSUPPORTED"

fi exit $rval

----------------------------------CODE----------------------------------

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".

Page 10: Zabbix

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.