sexta-feira, 10 de outubro de 2008

Passo-a-Passo: Instalando o Zabbix no CentOS 5

Palestrei dia 07/10/08 na Jornada Acadêmica da FAC 2 e resolvi transformar a apresentação (Zappix na Prática - FAC II) neste artigo.

Sobre a escolha do SO:
Escolhi o CentOS por ser um SO Corporativo e ao mesmo tempo fácil de administrar para a maioria das pessoas, pois os procedimentos são os mesmos para Fedora, Red Hat Enterprise e CentOS.

Requisitos para a Instalação do Zabbix (CentOS):

Apache httpd 2.2.3-11.el5.centos
Php php-5.1.6-20.el5_2.1
Módulos Php:
php-gd-5.1.6-20.el5_2.1
php-bcmath-5.1.6.-20.el5_2.1
php-common-5.1.6.-20.el5_2.1
MySQL mysql-5.0.45-7.el5
MySQL Server mysql-server-5.0.45-7.el5
MySQL Devel mysql-devel- 5.0.45-7.el5
Net-Snmp net-snmp-5.3.1-19.el5
Net-Snmp-Devel net-snmp-devel-5.3.1-24.el5_2.1
Net-Snmp-Utils net-snmp-utils-5.3.1-19.el5
Net-Snmp-Libs net-snmp-libs-5.3.1-19.el5
Zabbix zabbix-1.4.5-2. el5
Zabbix Web zabbix-web-1.4.5-2. el5
Zabbix Agent zabbix-agent-1.4.5-2. el5

Resolvendo as Dependências:
Precisamos suprir as dependências de pacotes antes de instalarmos o Zabbix:

# yum -y install mysql-devel net-snmp-devel php-common php-gd php-bcmath


Irá surgir uma tela semelhante a esta:

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
net-snmp-devel i386 1:5.3.1-24.el5_2.1 updates 1.8 M
php-bcmath i386 5.1.6-20.el5_2.1 updates 32 k
php-gd i386 5.1.6-20.el5_2.1 updates 113 k
Updating:
mysql-devel i386 5.0.45-7.el5 base 2.4 M
php-common i386 5.1.6-20.el5_2.1 updates 154 k
Installing for dependencies:
beecrypt-devel i386 4.1.2-10.1.1 base 160 k
elfutils-devel i386 0.125-3.el5 base 52 k
elfutils-devel-static i386 0.125-3.el5 base 78 k
elfutils-libs i386 0.125-3.el5 base 105 k
Updating for dependencies:
mysql i386 5.0.45-7.el5 base 4.1 M
mysql-server i386 5.0.45-7.el5 base 9.7 M
php i386 5.1.6-20.el5_2.1 updates 1.1 M
php-cli i386 5.1.6-20.el5_2.1 updates 2.1 M
php-ldap i386 5.1.6-20.el5_2.1 updates 35 k
php-mysql i386 5.1.6-20.el5_2.1 updates 84 k
php-pdo i386 5.1.6-20.el5_2.1 updates 62 k

Transaction Summary
=============================================================================
Install 7 Package(s)
Update 9 Package(s)
Remove 0 Package(s)

Total download size: 22 M

Installed: net-snmp-devel.i386 1:5.3.1-24.el5_2.1 php-bcmath.i386 0:5.1.6-20.el5_2.1 php-gd.i386 0:5.1.6-20.el5_2.1
Dependency Installed: beecrypt-devel.i386 0:4.1.2-10.1.1 elfutils-devel.i386 0:0.125-3.el5 elfutils-devel-static.i386 0:0.125-3.el5 elfutils-libs.i386 0:0.125-3.el5
Updated: mysql-devel.i386 0:5.0.45-7.el5 php-common.i386 0:5.1.6-20.el5_2.1
Dependency Updated: mysql.i386 0:5.0.45-7.el5 mysql-server.i386 0:5.0.45-7.el5 php.i386 0:5.1.6-20.el5_2.1 php-cli.i386 0:5.1.6-20.el5_2.1 php-ldap.i386 0:5.1.6-20.el5_2.1 php-mysql.i386 0:5.1.6-20.el5_2.1 php-pdo.i386 0:5.1.6-20.el5_2.1
Complete!

Adicionando o EPEL (Extra Packages for Enterprise Linux):
O EPEL é um repositório confiável onde podemos encontrar os pacotes nas versões que precisamos:

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

# yum -y install foo

Instalando do Zabbix:

# yum -y install zabbix zabbix-web zabbix-agent

Irá surgir uma tela semelhante a esta:

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
zabbix i386 1.4.5-2.el5 epel 2.1 M
zabbix-agent i386 1.4.5-2.el5 epel 199 k
zabbix-web i386 1.4.5-2.el5 epel 933 k
Installing for dependencies:
fping i386 2.4b2-7.el5 epel 30 k
iksemel i386 1.2-13.el5 epel 47 k

Transaction Summary
=============================================================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 3.3 M

Installed: zabbix.i386 0:1.4.5-2.el5 zabbix-agent.i386 0:1.4.5-2.el5 zabbix-web.i386 0:1.4.5-2.el5
Dependency Installed: fping.i386 0:2.4b2-7.el5 iksemel.i386 0:1.2-13.el5
Complete!

Criaremos agora base de dados zabbix, vamos setar as permissões e importar os dados do Zabbix para o banco:

Iniciando o Banco de dados:
# service mysqld start

Entrando no Banco de dados:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

Criando a base de dados:
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

Definindo os privilégios:
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 row affected (0.00 sec)

Saindo do Banco de dados:
mysql> exit
Bye

Importando as tabelas do Zabbix para dentro do banco:
# mysql -D zabbix < /usr/share/doc/zabbix-1.4.5/dbinit/schema/mysql.sql
# mysql -D zabbix < /usr/share/doc/zabbix-1.4.5/dbinit/data/data.sql
# mysql -D zabbix < /usr/share/doc/zabbix-1.4.5/dbinit/data/images_mysql.sql

Iniciando o servidor Web:

# service httpd start

Abra um Browser e acesse:

http://localhost/zabbix/setup.php

Com isso, irá abrir o assistente de configuração do zabbix!

Bem Vindo


Licença GPL V2


Pré-requisitos

Para resolvermos estes erros precisamos acertar alguns parâmetros no php.ini:
# vi /etc/php.ini

date.timezone = "America/Sao_Paulo"
max_execution_time = 300

Após alterarmos os parâmetros precisamo reiniciar o Apache:
# service httpd restart


Pré-requisitos


Conexão com o Banco

Alterando o usuário de conexão com o Banco:
Observe que ele tenta se conectar com o usuário root e sem senha, mas precisamos mudar para o usuário zabbix, com a senha zabbix.

Conexão com o Banco


Resumo das informções de conexão com o Banco


Arquivo zabbix.conf.php

Corrigindo o zabbix.conf.php:
Primeiro clique em "save configuration file" e salve o arquivo no Desktop.

Observação: A tela diz para salvar em /usr/share/zabbix/conf/, porém:

# ls -las /usr/share/zabbix/conf/zabbix.conf.php
0 rwx rwx rwx 1 root root 38 Out 3 16:31 /usr/share/zabbix/conf/zabbix.conf.php -> ../ ../ ../ ../etc/zabbix/zabbix.conf.php

Veja que é um link para: /etc/zabbix/zabbix.conf.php

Por isso vamos fazer um backup do arquivo original:
# mv /etc/zabbix/zabbix.conf.php /etc/zabbix/zabbix.conf.php.orig

E depois mover o arquivo que salvamos no Desktop para o local correto:
# mv ~/Desktop/zabbix.conf.php /etc/zabbix


Arquivo de configuração OK


Finalizando


Login

Observe nesta tela acima que temos uma série de mensagens inúteis no topo, vamos remove-las:
# vi /etc/zabbix/zabbix.conf.php

Apague as seguintes linhas:
# This file is a place-holder. When you run through the zabbix # web setup, a proper configuration file should be generated # for you to drop in this location.

Recarregue a página:


Login

Logue como admin sem senha
Observação: Na versão atual (1.6) a senha padrão é zabbix

Entre em Reports // Status os ZABBIX

Observe que o Status do Zabbix está como No (Não está rodando)

Iniciando o Zabbix:
# service zabbix start
# service zabbix-agent start

Verificando o status do serviço:
# service zabbix status
zabbix_server está parado

# service zabbix-agent status
zabbix_agentd (pid XXX XXX ...XXXX) está rodando

O Zabbix Server não está rodando, por isso vamos verificar os logs:
# cat /var/log/zabbix/zabbix_server.log
2946:20081004:141745 Starting zabbix_server. ZABBIX
1.4.5.
2946:20081004:141745 **** Enabled features ****
2946:20081004:141745 SNMP monitoring: YES
2946:20081004:141745 WEB monitoring: YES
2946:20081004:141745 Jabber notifications: YES
2946:20081004:141745 IPv6 support: NO
2946:20081004:141745 **************************
2946:20081004:141745 Failed to connect to database: Error: Access denied for user 'zabbix'@'localhost' (using password: NO) [1045]

Corrigindo o zabbix_server.conf:
# vi /etc/zabbix/zabbix_server.conf
Altere o paramêtro:
DBPassword=zabbix

Observação: Na tela do assistente nós só testamos a conexão, mas é neste arquivo que fazemos a configuração definitiva.

Verificando o status do serviço:
# service zabbix status
zabbix_server (pid XXX XXX ...XXXX) está rodando

# service zabbix-agent status
zabbix_agentd (pid XXX XXX ...XXXX) está rodando

Recarregue a tela:

Observe que o Status do Zabbix está como Yes (Está rodando)

Colocando os serviços para iniciar automáticamente:
# ntsysv

Marque as opções:
[*] httpd
[*] mysqld
[*] zabbix
[*] zabbix-agent


Ntsysv

Instalação dos Agentes:

Red Hat Enterprise / Fedora / CentOS:
# yum -y install zabbix-agent

Agente Plataforma *nix:

Criar um usuário chamado zabbix, este usuário não precisa de shell:
# adduser
Username: zabbix
Shell: nologin

Criar um diretório chamado zabbix em /etc:
# mkdir /etc/zabbix

Faça o download do agente no site do Zabbix:

Descompacte o arquivo:
# tar -xzvf zabbix_agents_XXX.tar.gz

Entre no diretório que foi descompactado:
# cd zabbix_agents

Copie todo o conteúdo para o diretório /etc/zabbix:
# cp * /etc/zabbix

Altere as permissões deste diretório para o usuário zabbix e grupo users:
# chown -R zabbix:users /etc/zabbix

Precisamos configurar o arquivo zabbix_agentd.conf:
# vi /etc/zabbix/zabbix_agentd.conf

Conteúdo mínimo do arquivo:
Server=IP do Servidor do Zabbix

Hostname=Nome da máquina Cliente

StartAgents=5

DebugLevel=3
# Specifies debug level
# 0 - debug is not created
# 1 - critical information
# 2 - error information
# 3 - warnings (default)
# 4 - for debugging (produces lots of information)

PidFile=/var/tmp/zabbix_agentd.pid

LogFile=/tmp/zabbix_agentd.log

Timeout=3

Executando o agente:
# /etc/zabbix/zabbix_agentd

Verificando a execução do serviço: # ps -e | grep zabbix
16182 ? 00:00:00 zabbix_agentd
16183 ? 00:00:00 zabbix_agentd
16184 ? 00:00:05 zabbix_agentd
16185 ? 00:00:05 zabbix_agentd
16186 ? 00:00:05 zabbix_agentd

Agente Plataforma Windows:

Faça o download do agente no site do Zabbix:

Descompactar o arquivo

Copiar o diretório zabbix para C:\zabbix

Copiar o arquivo zabbix_agentd.conf para C:\zabbix_agentd.conf

Conteúdo mínimo do arquivo zabbix_agentd.conf:

Server=IP do Servidor do Zabbix

Hostname=Nome da máquina Cliente

StartAgents=5

DebugLevel=3

PidFile=c:\zabbix\zabbix_agentd.pid

LogFile=c:\zabbix\zabbix_agentd.log

Timeout=3

Executando o agente:
Duplo cliquem em c:\zabbix\zabbix_agentd.exe

Como esta tela fica em execução, qualquer pessoa que tenha acesso à máquina pode fechar esta janela, intencionalmente ou não, por isso o ideal é que o agente do zabbix rode como um serviço da máquina.

Gerando um serviço do Windows:
zabbix_agentd.exe -i

Observe que o próprio agente do zabbix já possui uma série de opções.

Verificando o status do serviço do zabbix:
Iniciar // Painel de Controle // Ferramentas administrativas // Serviços:

Serviço do Agente do Zabbix

Verificando as propriedades do serviço:
Duplo clique em ZABBIX Agent

Propriedades do serviço no Windows

Removendo o serviço:
zabbix_agentd.exe -d

Observe que o próprio agente do zabbix já possui uma série de opções.

Verificando se o serviço do zabbix foi removido:
Iniciar // Painel de Controle // Ferramentas administrativas // Serviços:

Verificando que o Agente do Zabbix foi removido

Referências:
Site do Zabbix:
http://www.zabbix.com

Licença Zabbix:
http://www.zabbix.com/licence.php

Manual do Zabbix:
http://www.zabbix.com/documentation.php

Site da Comunidade Brasileira:
http://www.zabbixbrasil.org

Lista da Comunidade Brasileira:
http://br.groups.yahoo.com/group/zabbix-brasil

Artigos:
http://www.linuxchix.org.br/files/evento/2005/palestras/zabbix.pdf
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=3951
http://www.dicas-l.com.br/dicas-l/20070728.php
http://www.slacklife.com.br/article.php?sid=1498
http://gentoo-wiki.com/HOWTO_Zabbix

11 comentários:

Roberto Fuzinato disse...

cara esse tutorial é 100%...parabens, mas eu estou com um problema...o zabbix ta rodando certinho, mas ele nao esta criado os graficos e nem os mapas...sabe oq pode ser?

Alan MeC Lacerda disse...

Excelente texto campeão! Muito bom.

camila disse...

Estou instalando o zabbix na minha empresa, só que quando eu chego na parte 3. Check of pre-requisites, tem duas opções que estão " Fail", a opção "PHP databases support" e a opção PHP MB string" e eu não sei aonde devo configurar. Me ajude !?

André Déo disse...

Camila já resolveu o problema?

Se não acesse:
http://zabbixbrasil.org/wiki

Mila disse...

André, já resolvi este problema...
agora estou com outro.
Criei um gráfico no zabbix para monitorar o espaço livre do dirétório /boot, ae eu fiz um teste criando um monte de arquivos dentro deste diretorio ( ele ta cheio, não tem mais espaço) só que não está chegando e-mail pra mim, tipo pra me avisar que o diretório está cheio.Além de criar a "ação", eu devo fazer mais alguma coisa???? Tipo na hora de criar o gráfico tem que configurar alguma coisa referente á isso???

André Déo disse...

Mila,

Vc tem que criar uma trigger, mas de qualquer forma...

Se cadastre e acessse o histórico da lista, que temos exemplos disso lá, o endereço é:
http://br.groups.yahoo.com/group/zabbix-brasil/

Abraços,

Gilcério Maduro disse...

parabéns pelo tutorial, estava configurando o zabbix aqui mas faltava um modulo do php que não vi ninguém citar nem na documentação do 1.8 mas achei aqui no seu blog. Mto obrigado =D

André Déo disse...

Gilcério,

Muito obrigado cara.... Se quiser mais documentação visite o Wiki da Comunidade Brasileira:
http://www.zabbixbrasil.org/wiki/tiki-index.php

Déo

info disse...

Gostei muito do post, mas comigo num deu certo uma coisa qndo fui checar os pre-requisitos o PHP timezome da erro aparfece fail, ja tentei de tudo mas ainda não consegui resolver, me ajude pq preciso desse servidor no meu provedor de internet.

aguardo respostas!

André Déo disse...

info,

Se o seu problema é o php timezone é só seguitr o que tá no post:
"Para resolvermos estes erros precisamos acertar alguns parâmetros no php.ini:
# vi /etc/php.ini

date.timezone = "America/Sao_Paulo"
max_execution_time = 300"

Altere o parametro acima e reinicie o apache.

Abraços,

info disse...

consegui resolver mas não coloquei as "aspas" e deu tudo certo!
deixei assim oh!!

date.timezone = America/Sao_Paulo

vlw pela força.