You are on page 1of 15

Captulo 3 Instalao do Servidor Zabbix

OBJETIVOS Instalar o servidor Zabbix Instalar o banco de dados. Conguraes iniciais do servidor. Instalar o agente Zabbix. Congurar o agente para enviar informaes ao servidor. Preparar o servidor Apache Congurar o FrontEnd

3.1 Obtendo os fontes do Zabbix


Antes de comear a trabalhar com as diversas partes bsicas da instalao, precisamos baixar o cdigo fonte do Zabbix. Voc sempre pode faz-lo atravs da URL http://www.zabbix.com/download.php, mas o comando abaixo j vai colocar o pacote de fontes no local apropriado dentro da mquina virtual Zabbix Servidor 2.0.
1 2

# cd / usr / src # wget -c http :// downloads . sourceforge . net / project / zabbix / ZABBIX %20 Latest %20 Stable /2.0.5/ zabbix -2.0.5. tar . gz 3 # tar xf zabbix -2.0.5. tar . gz

3.1.1 Preparando o banco de dados


O Zabbix no utiliza recursos como o RRDTools para armazenar dados, ele faz uso apenas de um SGBD ou de um banco de dados mais simplrio (como o sqlite) para

4Linux - www.4linux.com.br armazenar conguraes, hosts, templates, histrico, etc. Por isso precisamos selecionar um dos bancos nativos ou usar ODBC (este ltimo no recomendado). No caso deste curso elegemos o PostgreSQL, um SGBD livre e de alta performance capaz de manipular uma grande quantidade de dados. Apesar da maioria das instalaes de Zabbix estar em MySQL recomendamos fortemente que seja usado o PostgreSQL pois sua robustez se mostrou mais adequada aos tipos de dados que o Zabbix manipula. Embora no parea a princpio, o banco de dados do Zabbix de extrema valia para a empresa, pois ele contm todo o histrico de funcionamento de sua infraestrutura e atravs dele podemos coletar SLAs e informaes de capacity plan. recomendado tambm que seu banco de dados possua um plano de backups regular via PITR Point in Time Recovery.

3.2 Instalao
Para instalar a verso do repositrio do PostgreSQL: No repositrio ocial do Debian o PostgreSQL encontra-se na verso 8.4, como no curso usaremos a verso 9.1, temos que adicionar o repositrio backports.

1 2 3 4

# vim / etc / apt / sources . list deb http :// www . backports . com / debian squeeze - backports main # aptitude update # aptitude install postgresql -9.1

# yum install postgresql9.1-server

3.2.1 Criando o usurio e o banco


Com o banco de dados instalado devemos criar uma base de dados e um usurio com as devidas permisses de acesso ao mesmo. O nome de ambos elementos so totalmente opcionais, mas neste material vamos convencionar que o banco de dados se chamar zabbixdb e o usurio ser zabbix.

Monitoramento de Redes com o Zabbix 2.0.X

10

4Linux - www.4linux.com.br

Muitas documentaes e at o prprio arquivo padro de congurao do zabbix server utiliza o nome do banco como zabbix, mas isso pode causar algumas confuses entre ele e o nome do usurio, foi por isso que optamos pela conveno acima.

Somente o superusurio do PostgreSQL, chamado postgres tem permisso de realizar a criao dos objetos citados acima, logo, para podermos acessar o terminal de console do banco (psql) temos que entrar como usurio postgres no Gnu/Linux e ento usar o comando correto. Note que o prompt de comando ir se alterar indicando que estamos no console do PostgreSQL.

1 2 3 4 5 6

# su - postgres $ psql psql (9.1.7) Digite " help " para ajuda . postgres =#

Agora que conseguimos o acesso como superusurio, vamos primeiro criar o banco de dados. O comando create database ir cuidar desta tarefa. Note que todos os comandos digitados dentro deste console terminam com ponto-e-vrgula (;).

postgres =# CREATE DATABASE zabbixdb ;

Com o banco de dados criado com sucesso vamos criar o usurio e denir sua senha. Para propsito de organizao deste material a senha do banco de dados do zabbix ser zabbix. Ao digitar a senha note que ela no aparece como no quadro de comando abaixo Este apenas um demonstrativo didtico.

1 2 3 4 5 6 7

postgres =# CREATE ROLE zabbix LOGIN ; postgres =# \ password zabbix Digite nova senha : zabbixdbpw Digite -a novamente : zabbixdbpw

11

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br

interessante denir a senha por password pois assim ela no ca armazenada no histrico de comandos do usurio. Agora precisamos liberar a conexo do servidor ao banco de dados do zabbix, para isso edite o arquivo pg_hba.conf conforme abaixo e acrescente a linha em destaque.
1 2 3 4 5 6

postgres =# \q $ logout # vim / etc / postgresql /9.1/ main / pg_hba . conf host host zabbixdb zabbixdb zabbix zabbix 127.0.0.1/32 ::1/128 md5 md5

Outro ponto importante que merece ateno o IP no qual o PostgreSQL est fazendo binding ports. Reinicie o banco de dados e realize o teste de conexo.
1

# service postgresql restart

1 2 3 4 5

# psql -h localhost -U zabbix -d zabbixdb psql (9.1.7) Digite " help " para ajuda . zabbixdb => \q

Se voc estiver usando a verso 9.0 ou superior do PostgreSQL e um Zabbix abaixo da verso 1.8.6 importante lembrar que o suporte a imagens do Zabbix assume que o banco utiliza a forma antiga de armazenamento bytea (escape em vez de hex). Para congurar o comportamento antigo use o comando ALTER DATABASE zabbixdb SET bytea_output=escape; dentro do console do psql. Isso pode ser congurado no usurio ou no postgresql.conf tambm.

3.3 Carga inicial


Para isso, temos que desempacotar o fonte do Zabbix 2.0.5

Monitoramento de Redes com o Zabbix 2.0.X

12

4Linux - www.4linux.com.br

1 2

# cd / usr / src # tar xvf zabbix -2.0.5. tar . gz

Agora vamos fazer a carga inicial do banco carregando os esquemas, os dados mais bsicos.
1 2 3 4 5

# $ $ $ $

su - postgres cd / usr / src / zabbix -2.0.5/ database / postgresql cat schema . sql | psql zabbix cat images . sql | psql zabbix cat data . sql | psql zabbix

3.4 Concedendo as permisses necessrias ao usurio


Agora o momento de conceder as permisses de acesso nas tabelas. O usurio Zabbix precisa de permisses de SELECT, INSERT, UPDATE e DELETE apenas. Com a sequncia de comandos abaixo voc conseguir ativar todas as permisses necessrias.
1 2

$ psql zabbix zabbixdb => GRANT SELECT , UPDATE , DELETE , INSERT ON ALL TABLES IN SCHEMA public TO zabbix ; 3 zabbixdb = >\ q 4 $logout

Opcionalmente, se voc estiver usando um postgresql anterior a verso 9.0 o procedimento um pouco mais complexo.

1 2 3 4 5

$ psql zabbixdb postgres =# \t postgres =# \a postgres =# \o / tmp / grantzabbix . sql postgres =# SELECT GRANT SELECT , UPDATE , DELETE , INSERT ON schemaname || . || 6 relname || TO zabbix ; FROM pg \ _stat \ _user \ _tables ; 7 postgres =# \o 8 postgres =# \i / tmp / grantzabbix . sql

||

13

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br
9 10

postgres =# \q $ logout

1) O comando \a remove o alinhamento dos elementos na tabela; 2) O \t mostra apenas tuplas, eliminando cabealhos e rodaps; 3) O comando \o grava o output no arquivo denido (/tmp/grantzabbix.sql). Note que preciso de outro \o sem o nome do arquivo para encerrar o output; 4) Este comando em SQL seleciona todas as tabelas do banco de dados e monta uma string com o comando de permisso (GRANT), voc pode ver o contedo deste comando no arquivo /tmp/grantzabbix.sql; 5) O comando \i carrega e executa o contedo do arquivo gerado acima.

3.5 Instalao do servidor Zabbix via cdigo fonte


Em alguns casos a distribuio Gnu/Linux que voc escolher pode possuir em seu repositrio uma verso satisfatria do Zabbix disponvel. Se for este o caso, timo Simplesmente instale o pacote e comece a congurar. No entanto isso nem sempre verdade e pode ser necessrio uma verso mais recente (devido a recursos novos, etc.) na sua soluo de monitoramento. Para suprir esta necessidade preciso compilar o Zabbix a partir de seu cdigo fonte. Esta sesso toda dedicada ao processo de criar os binrios, cobrindo quais dependncias devem ser instaladas e como escolher os recursos a serem compilados. Via de regra se algum tipo de recurso no se mostrar necessrio a princpio no o ative, isso gera binrios mais leves (com menos cdigo embutido) e alivia o consumo de memria em servidores com altas cargas de mtricas sendo monitoradas. Para comear, vamos instalar os dois pacotes mais bsicos para compilao de fontes no Debian, o build-essential, make e o java. O primeiro um meta pacote que ir instalar todos os pacotes mnimos de compilao de fontes (compilador, linkeditor, cabealhos do kernel e da libc, etc.) e o segundo um automatizador de compilao. No terminal do zabbixsrv rode os seguintes comandos.
1 2 3 4 5

# aptitude install build - essential make pkg - config openjdk -6 - jdk # cd / usr / src / zabbix -2.0.5 # ./ configure -- help | less

O congure um script gerado a partir do autotools, que um conjunto de ferra-

Monitoramento de Redes com o Zabbix 2.0.X

14

4Linux - www.4linux.com.br mentas para facilitar a compilao de fontes em C. A opo help fornecida acima ir listar todas as opes que podemos ativar ou no para compilar o Zabbix. Note que o congure no compila nada ele apenas prepara a cama para realizar a compilao com o make. Na tabela a seguir esto as opes relevantes do congure para a nossa tarefa. Opo do congure

15

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br

Tabela 3.1: Opes de compilao Descrio Ativa a compilao do servidor. No caso presente iremos ativar esta opo, quando formos compilar apenas o agente iremos desabilit-la. - -enable-proxy Compila os binrios para sistemas distribudos. Como neste curso no abordaremos o sistema de proxy, vamos deixar essa opo desabilitada. - -enable-agent Compila os binrioss para os agentes. uma excelente idia sempre deixar esta opo ativada. Mesmo em servidores dedicados do Zabbix uma boa prtica monitorar a prpria mquina. - -enable-ipv6 Compila suporte a IPV6. Embora no seja absolutamente necessrio , dado o esgotamento de endereos IP da IANA, o 6 logo ser necessrio. - -enable-static Ativa a gerao de binrios de forma esttica. recomendado deixar esta opo desligada. - -with-ibm-db2 Ativa o suporte do banco de dados IBM-DB2. Vamos deixar desabilitado uma vez que usaremos o PostreSQL. - -with-mysql Ativa o suporte do banco de dados mysql. Vamos deixar desabilitado uma vez que usaremos o PostreSQL. - -with-oracle Ativa o suporte do banco de dados oracle. Vamos deixar desabilitado uma vez que usaremos o PostreSQL. - -with-postgres Ativa o suporte do banco de dados PostgreSQL. - -with-jabber Ativa suporte a servidores Jabber permitindo que o Zabbix envie alertas atravs deste servio de mensagens instantneas. - -with-odbc Ativa o suporte do banco de dados odbc. Vamos deixar desabilitado uma vez que usaremos o PostreSQL. - -with-net-snmp Ativa suporte a monitoramente vai SNMP usando a biblioteca net-snmp do unix. - -with-ucd-snmp Ativa suporte a monitoramente vai SNMP usando a biblioteca ucd. - -with-ssh2 Ativa suporte a monitoramente vai SSH e vericao de status de um servio de conexo remota segura. - -with-openipmi Ativa suporte a comandos de monitoramento de hardware por IPMI. - -with-ldap Ativa suporte a autenticao via LDAP e vericao de status de um servio de diretrios remotos . - -prex=diretrio Dene localicao da instalao do Zabbix. - -mandir=/usr/share/man Aponta a localizao correta da pgina de manual, assim podemos usar o comando man para acessar as opes dos binrios do Zabbix. Opes do congure - -enable-server Monitoramento de Redes com o Zabbix 2.0.X 16

4Linux - www.4linux.com.br

3.5.1 Dependncias de compilao.


Ao executar o comando abaixo, colete cada erro que aparecer e aponte na tabela o pacote que deve ser instalado para resolver a dependncia. Isto vai servir de referncia para voc em futuras instalaes e tambm tem como inteno ensinar a lidar com erros de dependncias de compilao.

./ configure -- prefix =/ opt / zabbix -2.0.5 -- mandir =/ usr / share / man -enable - server 2 -- enable - proxy -- enable - agent -- enable - ipv6 -- with - postgresql -- with - jabber -- with - libcurl 3 -- with - net - snmp -- with - ssh2 -- without - openipmi -- with - ldap -- enable java

Erro

Tabela 3.2: Tabela de dependncia Dependncia

Voc pode otimizar os binrios tornando o Zabbix mais rpido mas dependente de uma CPU compatvel se voc exportar as variveis de ambiente CFLAGS e CXXFLAGS com o seguinte valor -O2 -pipe -march=native, antes de executar o congure. Se voc estiver usando um sistema de 32 bits acrescente ainda -fomit-frame-pointer. Cuidado com outros ags de compilao Voc pode acabar com um binrio defeituoso

Soluo da tabela de dependncia.

# aptitude install postgresql - server - dev -9.1 libssh2 -1 - dev libopenipmi - dev 2 libsnmp - dev libksemel - dev libcurl4 - gnults - dev

17

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br

3.6 Compilando e instalando


Agora que o congure chegou ao ponto nal e todas as dependncias foram resolvidas hora de executar a compilao com o comando make. Na verdade o make no um compilador, ele apenas chama os comandos necessrios para construir os binrio atravs de um arquivo Makele que foi gerado pelo congure. Execute conforme abaixo, os comandos. No nal o comando ln ir criar um link simblico para /opt/zabbix. Isso uma boa prtica para ajudar a trocar as verses do Zabbix durante uma migrao, apontando o link para a pasta com os novos binrios, enquanto mantemos os anteriores para o caso de um downgrade emergencial.

Voc pode substituir o -j2 por outro nmero para acelerar a sua compilao se voc tiver mltiplos cores. Uma regra geral 2xCores+1.

1 2 3 4

# # # #

make -j2 make install ln - svf / opt / zabbix -2.0.5 / opt / zabbix tree / opt / zabbix

O comando tree vai mostrar a hierarquia de diretrios e arquivos abaixo do caminho da instalao. A tabela abaixo tem o descritivo de cada um deles.

Caso no esteja instalado, execute : # aptitude install tree

Monitoramento de Redes com o Zabbix 2.0.X

18

4Linux - www.4linux.com.br

Binrio zabbix_get zabbix_sender

zabbix_agent

zabbix_agentd zabbix_server

Tabela 3.3: Comandos do Zabbix Funcionalidade Utilitrio para realizar consultas nos agentes via linha de comando. Utilitrio para envio de traps para o servidor Zabbix. necessrio criar um item do tipo Zabbix Trap para lidar com estes eventos.til para alertar incidentes instantneamente para o servidor como o nicio, trmino ou erro de um backup. Agente para ser usado com o super deamon xinetd ou similar. No necessrio na maioria das vezes e ser removido do diretrio. O daemon do agente do Zabbix que ca na memria a espera das requisies do servidor. O daemon do servidor do Zabbix. Este o componente principal de toda a infraestrutura.

preciso remover o zabbix_agent , uma vez que iremos usar apenas o daemon zabbix_agentd. Tambm uma boa prtica no manter os smbolos de depurao nos binrios de produo. O comando strip ir retirar estes smbolos e o executvel nal ser ligeiramente menor em tamanho (o que ajuda a consumir menos memria tambm).

1 2

# rm / opt / zabbix -2.0.5/ sbin / zabbix_agent # strip -- strip - all / opt / zabbix -2.0.5/*/*

No aconselhvel executar daemons de sistema com o usurio root, por isso vamos criar um grupo e usurio de nome zabbix para que o servio entre na memria como usurio no privilegiado. O nome do usurio que o Zabbix usa hadcoded, ou seja, ele programado dentro do cdigo fonte e no pode ser alterado via congurao. Desse modo sempre temos que criar o usurio com o nome zabbix, j o nome do grupo totalmente opcional.

1 2

# groupadd zabbix # useradd -g zabbix -m -s / bin / bash zabbix

19

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br Ambos os daemons, do agente e do servidor, precisam de dois diretrios para armazenar os logs e o arquivo de PID. Com os comandos abaixo crie e d as permisses necessrias para ambos.

1 2

# mkdir / var /{ log , run }/ zabbix -p # chown zabbix . / var /{ run , log }/ zabbix -R

3.7 Servios de rede


Acrescente ao /etc/services (caso no exista) o mapeamento de portas do Zabbix Agent e Zabbix Trapper.

1 2 3 4 5 6

# vim / etc / services zabbix - agent zabbix - agent zabbix - trapper zabbix - trapper 10050/ tcp 10050/ udp 10051/ tcp 10051/ udp Zabbix Zabbix Zabbix Zabbix Agent Agent Trapper Trapper

Estas entradas permitem que programas como wireshark e netstat reconheam as portas do Zabbix.

3.8 Arquivos de congurao


Os arquivos de congurao do Zabbix acompanham os seus fontes, mas a 4Linux preparou um conjunto de arquivos para uso em produo com uma organizao melhorada. Ao invs de simplesmente colocar todas as conguraes em um nico arquivo, os parmetros foram distribudos em grupos lgicos separados em vrios arquivos e diretrios.

1 2 3 4 5 6 7 8 9

# # # # # # # # #

cd ~/ conf / zabbix / tar xf zabbix - server - config . tar . bz2 -C / opt / zabbix / etc tar xf zabbix - agent - config . tar . bz2 -C / opt / zabbix mv / opt / zabbix / default / etc mv / opt / zabbix / init .d / etc chown root . zabbix / opt / zabbix / etc -R find / opt / zabbix / etc - type d - exec chmod 0750 {} \; find / opt / zabbix / etc - type f - exec chmod 0640 {} \; chmod 0750 / opt / zabbix / share / zabbix / externalscripts /* / etc / init . d / zabbix -*

Monitoramento de Redes com o Zabbix 2.0.X

20

4Linux - www.4linux.com.br 1) Note que o grupo dos diretrios e seus arquivos foram apontados para zabbix. O dono continuou a ser o root; 2) Todos os diretrios tiveram a permisso de acesso global revogada, nenhum usurio do sistema tem que acessar esta pasta exceto o do Zabbix (existem informaes sensveis como senhas em text/plain nestes arquivos). Tambm, apenas o root tem direitos de gravao nessas pastas o grupo zabbix tem apenas acesso de leitura. 3) Os arquivos seguem a mesma lgica que os diretrios. O Zabbix por padro procura pelos seus arquivos em /opt/zabbix/etc, a partir dos arquivos principais (zabbix_server.conf e zabbix_agentd.conf) outros arquivos foram chamados e inseridos na congurao. A tabela abaixo demonstra como caram organizados os diretrios e seu contedo.

Tabela 3.4: Diretrios e arquivos do Agente do Zabbix Diretrio ou Arquivo Descrio /opt/zabbix/etc/agent.d Diretrio para conguraes extras do agente.(carregado pelo arquivo principal) /opt/zabbix/etc/agent.d/activechecks.conf Congurao de checagens ativas do agente. /opt/zabbix/etc/agent.d/logs Congurao de logs (local, nvel de debug) do agente. /opt/zabbix/etc/agent.d/passivechecks.conf Congurao de checagens passivas do agente. /opt/zabbix/etc/agent.d/remote_commands.conf Congurao de recebimento de comandos remotos no agente. /opt/zabbix/etc/agent.d/userparams.conf Conguracao para parametros personalizados pelo usuario. /opt/zabbix/etc/zabbix_agentd.conf Arquivo principal de congurao do agente.

Tabela 3.5: Diretrios de scripts do Zabbix Diretrio Descrio /opt/zabbix/share/zabbix/alertscripts Diretrio para scripts de alertas externos. /opt/zabbix/share/zabbix/externalscripts Diretrio para scripts de extenso do agente do Zabbix.

21

Monitoramento de Redes com o Zabbix 2.0.X

4Linux - www.4linux.com.br

Tabela 3.6: Diretrios e arquivos do Servidor do Zabbix Diretrio ou Arquivo Descrio /opt/zabbix/etc/server.d Diretrio para conguraes extras do servidor.(carregado pelo arquivo principal) /opt/zabbix/etc/server.d/activechecks.conf Conguracoes para coletas ativas (que partem dos agentes para o servidor) /opt/zabbix/etc/server.d/alerts.conf Opcoes de conguracoes de alertas do Zabbix. /opt/zabbix/etc/server.d/cache.conf Opcoes de cache do Zabbix server. /opt/zabbix/etc/server.d/database.conf Congurao do back and do banco de dados do servidor Zabbix. /opt/zabbix/etc/server.d/external.conf Conguracao para recursos externos do servidor. /opt/zabbix/etc/server.d/housekeeping.conf Conguracao de housekeping do servidor do Zabbix. /opt/zabbix/etc/server.d/jmx-gateway.conf Conguracao de acesso ao JMX Gateway. /opt/zabbix/etc/server.d/logs.conf Congurao de logs (local, nvel de debug) do agente. /opt/zabbix/etc/server.d/node.conf Conguracao de node. /opt/zabbix/etc/server.d/passivechecks.conf Conguraes para coletas passivas (que parter do servidor para os agentes) /opt/zabbix/etc/server.d/proxy.conf Congurao de monitoramento distribudo do servidor. /opt/zabbix/etc/zabbix_server.conf Arquivo principal de congurao do servidor. No deixe de fazer o procedimento das permisses, ele vai tornar a sua instalao do Zabbix muito mais segura. Para nalizar vamos congurar o sistema para apontar o PATH para o link simblico de instalao. Isso vai facilitar o acesso aos comandos.

1 2 3 4 5

# vim / etc / profile .d/ zabbix - path . sh export PATH =" $PATH :/ opt / zabbix / sbin :/ opt / zabbix / bin " # . / etc / profile # zabbix_get -- help # zabbix_agentd -- help

Monitoramento de Redes com o Zabbix 2.0.X

22

4Linux - www.4linux.com.br

3.9 Testando sua instalao


Utilize o manual do zabbix_agentd para descobrir como listar as mtricas suportadas pelo ambiente e como testar um delas individualmente. Depois inicie o agente, veja o contedo do arquivo de logs e use os comandos ps e netstat para ver quais os processos que ele iniciou e em quais portas eles se vincularam. Depois do trmino com o agente vamos congurar o servidor conforme os passos a seguir e realizar o mesmo procedimento de inicializao e pesquisa que no agente.

1 2 3 4 5 6

# vim / etc / zabbix / server .d / database . conf DBHost =127.0.0.1 DBPort =5432 DBName = zabbixdb DBUser = zabbix DBPassword = zabbixdbpw

1) O endereo IP ou nome DNS do servidor que esta com o banco de dados. Como no nosso cenrio o banco e o servidor Zabbix esto na mesma mquina virtual utilizamos o endereo de loopback; 2) A porta TCP de acesso do banco. Esta a porta padro do PostgreSQL; 3) Nome do banco de dados que criamos no incio do captulo; 4) Nome do usurio que criamos e demos permisso; 5) Senha do usurio acima. Colocando os scripts no boot da mquina virtual.

1 2

# insserv -v zabbix - agent # innserv -v zabbix - server

Agora execute os scripts de inicializao dos daemons conforme indicado abaixo.

1 2

# service zabbix - server start # service zabbix - agent start

Verique se as ltimas linhas do log indicam se ambos iniciaram corretamente e tambm se todos os processos esto na memria.

1 2 3

# tail -n1 / var / log / zabbix / zabbix_server . log 1203:20110207:092633.044 server # 1 started [ DB Cache ] # tail -n1 / var / log / zabbix / zabbix_agentd . log

23

Monitoramento de Redes com o Zabbix 2.0.X

You might also like