Diário de Viagens e Trabalhos do Pajé
19abr/104

Monitoração de ativos utilizando Zabbix

Já faz algum tempo que trabalho com Zabbix e já foi até tema de palestra no FISL - Forúm Internacional de Software Livre e Consegi - Congresso Internacional de Software Livre e Governo Eletrônico. Sendo assim, nada mais justo do que publicar uma documentação de instalação em português e no detalhe.

Como portei a doc do wiki, podem aparecer erros. Favor me avisar. @edmilsonpaje

Introdução

O objetivo deste trabalho é desenvolver um documento para auxiliar na instalação e configuração da ferramenta de monitoração Zabbix. Esse documento contempla todos os procedimentos para a total implantação do servidor.

OBS: Esse documento foi escrito para servidores Debian GNU/Linux.

Para este ambiente, será utilizada uma máquinas que receberá SGBD MySQL, o servidor de aplicação Zabbix Server e Zabbix Web. A partir deste passo, partimos do principio que já existem um sistema operacional Debian GNU/Linux instalado na máquina. Sendo assim, podemos prosseguir com a instalação das aplicações que irão compor nosso sistema de monitoramento Livre.

Rode o comando para a atualização da lista de pacotes do apt e as atualizações de segurança dos:

# apt-get update
# apt-get dist-upgrade

Inicie a instalação dos serviços e aplicativos necessário para compor a suíte. O comando abaixo instala todas as dependências necessárias para a compilação e instalação de cada aplicação.

# apt-get install mysql-server mysql-client libmysql++-dev gcc make \
apache2 libiksemel-dev libiksemel-utils libsnmp9-dev fping snmpd php5-cgi \
lm-sensors libsysfs2 php5 php5-gd php5-snmp php5-mysql php-pear perl-base \
liburi-perl libapache2-mod-perl2 libwww-perl libtool pkg-config rcconf \
libextutils-pkgconfig-perl libsnmp9-dev libcurl3-dev libgd-text-perl \
libio-zlib-perl libpdf-api2-perl libmysqlclient15-dev libcurl3

Para descrever melhor os principais pacotes que foram instalados, segue uma tabela com uma greve descrição da função de cada pacote.

Pacote Descrição
mysql5-server Utilizado pelo Zabbix para armazenar as informações
mysql5-devel Utilizado pelo Zabbix no ato de sua compilação
Apache2 Utilizado pelo Zabbix e pelo OTRS para hospedar duas páginas
gcc Utilizado pelo Zabbix no ato de sua compilação
make Utilizado pelo Zabbix no ato de sua compilação
iksemel-devel Client do Jabber para o Zabbix
libextutils-pkgconfig-perl Dependência para compilação do Zabbix
snmpd Suporte SNMP para o Zabbix
libsnmp9-dev Dependência para compilação do Zabbix
php Utilizado pelo Apache para rodar o Zabbix
mod-perl2 Dependência do OTRS
snmp Suporte SNMP para o Zabbix (tools

Para obter os pacotes mais novos do Zabbix, acesse a página do projeto em http://www.zabbix.com/download.php ou utilize os passos abaixo para baixar diretamente.

# mkdir /usr/src/zabbix
# cd /usr/src/zabbix
# wget -c http://prdownloads.sourceforge.net/zabbix/zabbix-1.8.2.tar.gz


OBS
: Armazene, de preferência, os códigos sempre dentro do diretório /usr/src e lembre de baixar a última versão estável.

Configurando e instalando o Zabbix

A partir de agora, iniciamos a configuração para compilar e instalar o Zabbix no sistema, bem como torná-lo operacional.
Neste passo, será preparado o sistema operacional, digamos que será um pré configuração para a compilação do Zabbix.

Crie o usuário Zabbix.

# adduser --no-create-home --disabled-password --disabled-login \
--shell=/bin/false zabbix

Como já estão instalados os pacotes apache2 e mysql5-server, reinicie os mesmos para validar o start dos serviços.

# /etc/init.d/httpd stop
# /etc/init.d/httpd start
# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start

Para compilar o Zabbix, descompacte o arquivo com os sources localizados no diretório /usr/src/zabbix.

# cd /usr/src/zabbix/
# tar -xzvf zabbix-1.8.2.tar.gz
# cd zabbix-1.8.2
# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp \
--with-libcurl --prefix=/usr/local/zabbix


Nota:
Observe que estamos habilitando na compilação o Zabbix Server e Agente, suporte a base de dados MySQL, ao protocolo SNMP, ao Jabber e a biblioteca Lib Curl.

Talvez seja necessário utilizar o comando abaixo para a compilação:

# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp
--with-jabber --with-libcurl PKG_CONFIG_PATH=/usr/lib/pkgconfig/ \
PKG_CONFIG=/usr/bin/pkg-config


OBS:
Agora estamos passando por parâmetro os caminhos ( path's ), do pkg-config que é necessário para a compilação do Zabbix.

Será exibido na tela informações sobre a compilação, bem como os recursos que foram habilitados. Segua com a preparação da base de dados MySQL.
No Shell, coloque senha no usuário root.

# mysqladmin -u root password 'NOVA_SENHA'

Crie a base de dados no MySQL.

# mysql -p -u root
> CREATE DATABASE zabbix;

Crie um usuário chamado Zabbix.

 > GRANT ALL privileges ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'senha';

Execute os scripts sql para criar a base de dados Zabbix no MySQL.

# mysql -u zabbix -p zabbix < create/schema/mysql.sql
# mysql -u zabbix -p zabbix < create/data/data.sql
# mysql -u zabbix -p zabbix < create/data/images_mysql.sql

Instale o Zabbix.

# make install

Realize os ajustes finais no Sistema. Edite o arquivo /etc/services e adicione as linhas:

# vi /etc/services

Conteúdo:

zabbix_agent 10050/tcp   # Zabbix Agent
zabbix_trap 10051/tcp   # Zabbix Server

Copie os arquivos de configuração para o diretório /etc/zabbix.

# mkdir /etc/zabbix
# cp misc/conf/zabbix_server.conf misc/conf/zabbix_agent* /etc/zabbix/

Crie os diretórios para armazenagem dos log's e do pid.

# mkdir /var/log/zabbix
# mkdir /var/run/zabbix
# chown zabbix: /var/log/zabbix /var/run/zabbix

Configurando o Zabbix Server. Edite o arquivo /etc/zabbix/zabbix-server.conf .

# vi /etc/zabbix/zabbix_server.conf

Modifique ou descomente as seguintes TAG's:

# Define um Node ID exclusivo
NodeID=0
# Fequencia de envio de alertas
SenderFrequency=30
# Nível do debug no Log File
DebugLevel=3
# Timeout de conecxão com o agente
Timeout=5
# Caminho do arquivo pid do Zabbix Server
PidFile=/var/run/zabbix/zabbix_server.pid
# Caminho do arquivo de log do Zabbix Server
LogFile=/var/log/zabbix/zabbix_server.log
# Tamanho do arquivo de log
LogFileSize=2
# Caminho dos scripts customizados
AlertScriptsPath=/home/zabbix/bin/
# Servidor MySQL
DBHost=localhost
# Nome da base de dados no MySQL
DBName=zabbix
# Usuário da base de dados no MySQL
DBUser=zabbix
# Senha do usuário Zabbix no MySQL
DBPassword=SENHA

O Zabbix está configurado no sistema. Agora configure o Zabbix Server no init padrão do sistema para que inicie automaticamente no boot caso os sistema seja desligado.

# cp  misc/init.d/debian/zabbix-server /etc/init.d/zabbix_server
# chmod a+x /etc/init.d/zabbix_server

Entre no rcconf e habilite o zabbix_server. Edite o arquivo /etc/init.d/zabbix_server e deixe as linhas como o exemplo abaixo:

# vi /etc/init.d/zabbix_server

Conteúdo:

NAME=zabbix_server
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin:/usr/local/sbin
#DAEMON=/etc/init.d/${NAME}
DAEMON=/usr/local/sbin/zabbix_server
DESC="Zabbix server daemon"
PID=/var/run/zabbix/$NAME.pid

Configurando o Font-End do Zabbix Server
Edite o arquivo /etc/php5/apache2/php.ini e inclua as linhas:

# vi /etc/php5/apache2/php.ini

Conteúdo:

date.timezone = America/Sao_Paulo
max_execution_time = 300
post_max_size = 16M
max_input_time = 300

Copie os códigos fontes fontes php para o /var/www.

# cp -r /usr/src/zabbix/zabbix-1.8.2/frontends/php/ /var/www/zabbix
# chown -R www-data:zabbix /var/www/zabbix

Agora seu Front-End esta pré-configurado. Utilizando um browser, entre com o seguinte endereço:

http://MEU_DOMINIO/zabbix/

Será exibida a tela para execução das configurações e validação das configurações anteriores.
Clique em Next.
Na próxima tela será exibido a licença do produto. Selecione a opção "I Agree" e clique em Next.
A próxima tela valida as configurações e os pré-requisitos para execução do Zabbix. Se tudo estiver OK, clique em Next.
Agora vamos a configuração da conexão com a base de dados.
Na opção Type, selecione MySQL.
Na opção Host, escreva localhost.
Na opção Port, deixe padrão (0).
Na opção Name, insira o nome da base de dados no MySQL (zabbix).
Na opção user, insira o nome do usuário com permissão de acesso (zabbix).
Na opção Password, coloque a senha do usuário.
Agora, clique no botão Test Conection para validar as configurações. Se tudo estiver certo, aparecerá um OK verde acima do botão.
Clique em Next.
A próxima tela serve para confirmar as configurações do passo anterior. Clique em Next.
Essa tela confirma se os arquivos de configurações estão OK. Clique em Next.
Será exibida uma mensagem de sucesso na configuração. Se isso acontecer, o Front-End para o Zabbix está configurado corretamente.
Clique em Finish.
Agora ira aparecer a tela de login do Zabbix. Para se logar, utilize o usuário "admin" e deixe o campo senha coloque "zabbix". Clique em Enter.
Clique na aba Admistration e depois no usuário Admin.
Nessa página que será aberta, clique em "Change Password" e se abrirão 2 novos campos, "Password" e "Password (Once Again)". Troque a senha do usuário Admin.

Configurando o Zabbix Agent no Servidor

Como compilamos o Zabbix Agent junto com o servidor, vamos utilizar o mesmo para monitorar o Zabbix Server.
Configure o agente do Zabbix para iniciar automaticamente no Boot do sistema.

# cd /usr/src/zabbix/zabbix-1.6.2
# cp  misc/init.d/debian/zabbix-agent /etc/init.d/zabbix_agent
# chmod a+x /etc/init.d/zabbix_agent

Entre no rcconf e habilite o zabbix_server.

# rcconf

Edite o arquivo /etc/init.d/zabbix_server.

# vi /etc/init.d/zabbix_agent

Conteúdo:

NAME=zabbix_agent
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin:/usr/local/sbin
#DAEMON=/etc/init.d/${NAME}
DAEMON=/usr/local/sbin/zabbix_agentd
DESC="Zabbix server daemon"
PID=/var/run/zabbix/$NAME.pid

Modifique também as linhas abaixo no arquivo /etc/zabbix/zabbix_agentd.conf:

# vi /etc/zabbix/zabbix_agentd.conf

Conteúdo:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log

OBS: No caso do servidor, não é preciso criar os diretório zabbix dentro do /var/run e /var/log, pois já foram criados durante a configuração do server.

Instalando e configurando o Zabbix Agent

Com o servidor instalado, configurado e funcional, é possível iniciar a instalação dos agentes do Zabbix nos sistemas operacionais que serão monitorados.

Zabbix Agent no Debian ou Ubuntu

Para instalar o agente no Debian/Ubuntu é muito simples. Basta baixar o pacote zabbix-agent via apt e configurar o endereço do servidor como segue abaixo:
Instalando o Zabbix Agent.

# apt-get  install zabbix-agent

Será exibida uma tela em dialog, no campo digite o endereço IP do servidor e tele ENTER.

Tudo configurado no agente.

Zabbix Agent no Solaris 10

Baixe do porta do Zabbix a ultima versão dos binários para Solaris 10.
Copie os diretório com o agente através com comando scp para o novo servidor e caso necessário descompacte o mesmo com gunzip e tar xvf. Neste exemplo, estamos utilizando a versão 1.6.2 do agente para Solaris.
Crie o home para o usuário "zabbix".

# mkdir -p /opt/zabbix

Crie um grupo e usuário chamado "zabbix".

# groupadd zabbix
# useradd -s /usr/bin/bash -g zabbix -d /opt/zabbix zabbix

Copie os arquivos binários do Zabbix para /opt/zabbix/bin.

# cp -r /home/paje/zabbix_agents_1.6.2.sol10/bin/ /opt/zabbix/

Permissione o home do usuário.

# chown -R zabbix:zabbix /opt/zabbix

Crie o diretório onde serão armazenados os arquivos de configuração do Zabbix e copie os arquivos de configuração bases.

# mkdir -p /etc/zabbix
# cp /home/paje/zabbix_agents_1.6.2.sol10/etc/* /etc/zabbix/

Crie e permissione também o o diretório onde serão armazenados os logs.

# mkdir -p /var/log/zabbix-agent/
# touch /var/log/zabbix-agent/zabbix_agentd.log
# chown -R zabbix:zabbix /var/log/zabbix-agent/

Coloque no "$PATH" do usuário Zabbix e do Root o diretório bin do Zabbix. Com base no script de init do Linux, crie um para Solaris e coloque no rc3 adicionando  o link para que seja iniciado no boot.

# ln -s /etc/init.d/zabbix_agent /etc/rc3.d/

Inicie o script e tudo deve funcionar.

#  /etc/init.d/zabbix_agent start

Zabbix Agent no Windows 2003 Server

Para se instalar o Zabbix agent em um Windows 2003 Server, baixe o binário para Windows do link abaixo:

http://www.zabbix.com/download.php

Descompacte o arquivo e utilize os binários para a arquitetura que estiver trabalhando. No caso win32. (Extraia os arquivos em c:\) Após baixar o agente, crie um diretório no c:\ chamado zabbix.

OBS: Copie o conteúdo do diretório extraído ( win32 ), para dentro de c:\zabbix.

Após crie um arquivo em c:\zabbix_agentd.conf, e nele coloque o conteúdo a seguir. Lembre que o arquivo não pode ter extensão .txt.
Conteúdo:

Server=XXX.XXX.XXX.XXX
Hostname=localhost
StartAgents=5
DebugLevel=3
PidFile=c:\zabbix\zabbix_agentd.pid
LogFile=c:\zabbix\zabbix_agentd.log
Timeout=3

Onde está XXX.XXX.XXX.XXX deve possuir o IP do servidor Zabbix e onde está localhost pode ficar como localhost ou pode por o nome da máquina caso ela esteja registrada no domínio (existe uma probabilidade de acontecer erros de conexão quando se usa outro nome e não localhost).
O próximo passo é criar no diretório c:\zabbix dois arquivos. Um para o log e outro para o pid.

c:\zabbix\zabbix_agentd.log
c:\zabbix\zabbix_agentd.pid

Agora, siga os procedimentos para instalar o Zabbix Agente no Windows.
Iniciar > Executar > "cmd" > OK

cd c:\zabbix
C:\zabbix\zabbix_agentd.exe --install

NOTA: Observe que existem outros parâmetros para o comando acima. Utilize a opção --help para obter o conjunto de parâmetros válidos.
Neste momento o agente já está instalado e pode ser acionado com o comando:

C:\zabbix\zabbix_agentd.exe --start

Uma forma mais ágil e pratica de manipular o agente do Zabbix no Windows, é utilizar o Painel de Controle do sistema para administrar o funcionamento.
Para acessar, siga as instruções:
Iniciar > Configurações > Painel de Controle > Ferramentas Administrativas > Serviços de Componentes
Agora, clique sobre o item Serviços e será exibida a lista de serviços que estão instalados em sua máquina. Procure item ZABBIX Agent.
Ao abrir esse item é exibida uma janela com os parâmetros básicos de administração do Zabbix. Instalado e funcionando.

Atualização do Zabbix ( Upgrade )

Antes, observe o manual e página de download no site do Zabbix para validar a compatibilidade, não só dos agentes, mas da versão que está sendo atualizada. Algumas vezes é necessário realizar upgrade por upgrade de versão em versão até chegar na desejada.

OBS: A atualização pode ser toda realida através do servidor de aplicação, não sendo necessário entrar no servidor MySQL. Utilize o comando mysql para "rodar" o script sql na base.

NOTA: Caso os backups da base de dados não existam, aconcelho tirar um dump com o comando mysqldump, evitando assim possíveis perdas.

Atualizando o Zabbix Server e Client
Copie os códigos para entro de /usr/src e descompacte o arquivo para iniciarmos o upgrade.
Ex:

# cp -r /media/pendrive/zabbix-1.8.2 /usr/src
# cd /usr/src/zabbix-1.8.2/
# tar -xzvf zabbix-1.8.2.tar.gz
# cd zabbix-1.8.2

Com os serviços parados, proceguimos com a compilação da aplicação. Esse procedimento é o mesmo utilizado para instalação.
Para atualizar a aplicação, pare todos os serviços realacionados a ele.

# /etc/init.d/zabbix_server stop
# /etc/init.d/zabbix_agent stop
# /etc/init.d/apache2 stop

Para compilar e configurar, utilize:

# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl \
--prefix=/usr/local/zabbix
# make install

Como as configurações e ajustes já estão feitas no sistema, não é necessário realizar auterações.

NOTA: Valide se existem novas funcionalidades na nova versão e se existe a mecessidade de habilitá-las no zabbix_server.conf e zabbix_agent.conf e não esqueça de incluir nesta documentação.

Os binários estão compilados e instalados, agora seguimos com a atualização da base MySQL.

OBS: Não existe a necessidade de drop nos indexes nem atualização para a base nas versões 1.8.x para 1.8.2.

Atualização do Zabbix server, client e MySQl concluída.

Atualizando o Zabbix Web

Agora é preciso atualizar a aplicação web para que seja possível vizualizar os eventos via browser.
Ajuste o arquivo php.ini.

# vi /etc/php5/apache2/php.ini

Conteúdo:

post_max_size = 16M
max_input_time = 300

Primeiro , remova o backup antigo e faça um novo.

# cd /var/www
# rm -rf zabbix-old
# cp -r zabbix zabbix-old

Agora copie os novos arquivos.

# cp -r /usr/src/zabbix-1.8.2/zabbix-1.8.2/frontends/php/ /var/www/zabbix
# cp -r zabbix-old/conf/zabbix.conf.php zabbix/conf
# chown -R www-data:zabbix /var/www/zabbix

Upgrade concluído com sucesso.

Agradecimentos

Ao @victorhugopa pela correção da senha "zabbix" na tela de login da aplicação.
Aos amigos colaboradores do Data Center onde trabalho pelos testes , não só neste, mas em todos os manuais que escrevo.

Comentários (4) Trackbacks (0)
  1. E aí Pajé,
    Tudo certo?
    Assisti a sua apresentação no FISL11 e gostei bastante, parabéns!

    Tenho algumas dúvidas em relação a monitoramento:

    1.Sobre o Zabbix, quanto tempo vc demorou para colocar tudo funcionando(Zabbix monitorando pelo menos 1 servidor/serviço)? Teve alguma dificuldade em utilizar a ferramenta?

    2.De que forma vc avalia, pelo monitoramento, a carga de um servidor, ou o momento de aumentar algum dos recursos dele? Pergunto isso, pois trabalho com um servidor virtualizado (Ubuntu+vmware) que de vez em quando apresenta muito I/O por executar VMs que possuem ferramentas Oracle, mas não sei como identificar esses picos.
    Tem alguma ideia que possa me ajudar?

    Desde já obrigado!
    Abraço,
    Felipe.

  2. Olá Felipe.. desculpe a demora em responder.

    Para instalar hoje um servidor completo com LAMP e Zabbix você deve levar aproximadamente um dia. Isso vai depender das configurações e ajustes que serão necessários de acordo com seu ambiente.
    Neste caso das vms eu aconselho migrar para Xen utilizando partições em LVM. Isso com certeza vai dar mais performance. Agora o que pode ser feito é criar um item de monitoração que analise o I/O da VM e informe quando o mesmo estiver chegando a um nível elevado, isso é, um status de aviso antes que o serviço “frite” de verdade.

    Abraços.

  3. Camarada Paje, Saudações Corinthianas!

    Então.. esse tutorial não funfa com o debian 6 – squeeze, aparentemente o debian não possue o pacote setup.php e mesmo inserindo o arquivo em questão, aparentemente ele não é reconhecido. Segue a descrição do erro.

    Quando tiver um tempo tenta atualizar esse tutorial com o debian 6 + zabbix 2.0, que será de grande valia pra comunidade. Andei pesquisando e existem vários tutoriais, porém cada um de um jeito e sem grande credibilidade.

    Segue o erro:

    zabbix include_once(): Failed opening ‘setup.php’ for inclusion (include_path=’.:/usr/share/php:/usr/share/pear’)[/usr/share/zabbix/instal.php:29]

    Grande Abraço!

    Rafael Nunes

  4. Salve Rafa.
    Não sei se você já conseguiu… estou ai cara… precisando de algo é só me chamar.
    Esse arquivo setup.php faz parte da interface web que está dentro do tarball baixado do site e esse erro me parece alguma dependência não instada.
    Abraços.


Leave a comment


*

Sem trackbacks