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