quarta-feira, 28 de novembro de 2012

Linux - Instalando o Zabbix

Nesse post ensinarei como instalar o Zabbix a partir do código fonte. Abaixo o que foi usado para essa instalação e também um passo a passo.

Linux: Ubuntu Server 12.04 (instalação básica e atualização)
Banco de dados: MySQL
Zabbix 2.0.3

Instalar os seguintes pacotes:
apt-get install build-essential mysql-server libmysqlclient15-dev php5 php5-gd php5-mysql snmp libsnmp-dev snmpd libcurl4-openssl-dev fping libcurl3-dev

Adicionar o usuário zabbix e setar uma senha para ele

Mudar para o usuário zabbix e baixar a última versão do zabbix em http://www.zabbix.com/download.php.

Após o download, descompactar o mesmo.

Criar o banco de dados
Logar no mysql como root e criar o database para o zabbix

create database zabbix

Grant
grant all privileges on zabbix.* to zabbix@localhost identified by 'senha-para-o-zabbix';

Executar os seguintes SQLs para criar a estrutura necessária para o Zabbix. Os SQLs encontram-se dentro do diretório descompactado, em database e depois em mysql

Ex:
/home/zabbix/zabbix-2.0.3/database/mysql

Executar na seguinte ordem:

mysql -D -u zabbix -p < schema.sql
mysql -D -u zabbix -p < images.sql
mysql -D -u zabbix -p < data.sql

A cada SQL executado, será pedida a senha do usuário zabbix. A senha é aquela cadastrada previamente no grant acima.

Feito isso, vamos a compilação do Zabbix:

./configure --prefix=/usr --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent


sudo make install

Adicionar ao /etc/services


zabbix_agente         10050/tcp                       # Zabbix
zabbix_trap             10051/tcp                       # Zabbix

Para facilitar o acesso aos arquivos de configuração do agent e do server Zabbix, criei um link para cada um deles em /etc/zabbix:

mkdir /etc/zabbix
chown zabbix:zabbix /etc/zabbix
ln -s /usr/etc/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf
ln -s /usr/etc/zabbix_server.conf /etc/zabbix/zabbix_server.conf

Agora, vamos fazer alguns ajustes nos arquivos acima citados:

vi /etc/zabbix/zabbix_agentd.conf

Verifique se no item Server está setado o ip do servidor:

Server=127.0.0.1

Eu preferi colocar o pid e o log do agent do Zabbix num diretório personalizado ao invés de colocar no /tmp. Para isso, crie o diretório zabbix em /var/log:

mkdir /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix

Edite novamente o /etc/zabbix/zabbix_agentd.conf para alterar a localização do pid e do log:

vi /etc/zabbix/zabbix_agentd.conf

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


Agora vamos editar o /etc/zabbix/zabbix_server.conf. Nele precisamos setar as configurações para acesso ao banco de dados. Os itens a serem configurados são:

DBHost=localhost

DBName=zabbix
DBUser=zabbix
DBPassword="password" (setado no grant executado)

No meu caso, novamente, setei itens PidFile e LogFile para um diretório personalizado:


PidFile=/var/log/zabbix/zabbix_server.pid
LogFile=/var/log/zabbix/zabbix_server.log

Feito isso, vamos copiar os scripts de inicialização para o seu devido lugar. Os scripts usados estão no diretório descompactado com o código fonte do zabbix. No meu caso, em /home/zabbix/zabbix-2.0.3/misc/init.d/debian. São dois arquivos:

zabbix-agent e zabbix-server

Eles devem ser copiados para /etc/init.d e dado permissão de execução para os dois.

chmod 755 /etc/init.d/zabbix-agent
chmod 755 /etc/init.d/zabbix-server

Agora, precisamos editar esses dois arquivos para alterar o local onde estão os executáveis de cada um deles e também onde está o arquivo do pid. Primeiro, editaremos o zabbix_agent. Os dois itens alterados são os a seguir:

vi /etc/init.d/zabbix-agent


DAEMON=/usr/sbin/${NAME}
PID=/var/log/zabbix/$NAME.pid

Agora, vamos editar o zabbix_server:

vi /etc/init.d/zabbix-server

DAEMON=/usr/sbin/${NAME}
PID=/var/log/zabbix/$NAME.pid

Vamos, enfim, colocar o zabbix_agent e o zabbix_server para serem inicializados durante a inicialização do SO:

update-rc zabbix-server defaults
update-rc zabbix-agent defaults

Configurando a interface web


Primeiramente é necessário criar um diretório dentro de /var/www.

mkdir /var/www/zabbix

Agora vamos copiar os arquivos do diretório /home/zabbix/zabbix-2.0.3/frontends/php para o diretório criado:

cp -a /home/zabbix/zabbix-2.0.3/frontends/php/* /var/www/zabbix/

Feito isso, agora precisamos editar o arquivo /etc/apache2/sites-enabled/000-default para incluir o alias que dará acesso à interface de monitoramento do Zabbix. Adicionar nesse arquivo os dados abaixo:


Alias /zabbix /var/www/zabbix/

<Directory /var/www/zabbix/>
  AllowOverride FileInfo AuthConfig Limit Indexes
  Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
  <Limit GET POST OPTIONS PROPFIND>
    Order allow,deny
    Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS PROPFIND>
    Order deny,allow
    Deny from all
  </LimitExcept>
</Directory>

O próximo passo agora é editar o php.ini. Para isso, faça:

vi /etc/php5/apache2/php.ini

Será necessário alterar os dois itens abaixo:

max_execution_time = 300
date.timezone = America/Sao_Paulo

A lista com os timezone suportados por ser encontrada no http://br2.php.net/manual/en/timezones.php

Para que as últimas alterações sejam utilizadas, é necessário reiniciar o serviço apache2.

service apache2 restart

Finalmente, podemos agora acessar a interface web. Para isso, acesse pelo browser preferido o endereço como no exemplo abaixo:

http://<IP_DO_SERVIDOR_ZABBIX>/zabbix

No wizard que aparecerá, clique em next e veja se existe alguma alteração recomendada a ser feita. No meu caso, precisei fazer as alterações as abaixo:

post_max_size de 8MB para 16MB
max_input_time de 60 para 300

Essas alterações foram feitas no php.ini. O mesmo arquivo que editamos para alterar max_execution_time e date.timezone.

Feitas as alterações necessárias, reinicie o apache2 novamente e acesse novamente o servidor. Clique no botão "Retry" e verifique se todos os itens da lista estão com um "Ok" verde na frente. Se sim, clique em next.

Na tela seguinte, adicione as informações do banco de dados:


Database type: MySQL
Database host: localhost
Database name: zabbix
User: zabbix
Password: <senha> (senha setada no grant do começo da instalação)

Clique em "Test connection". Estando tudo certo, siga em frente.

Na tela seguinte, caso seja necessário, adicione as informações necessárias:


Host: localhost
Port: 10051
Name: <nome_do_servidor>

Clicando em next serão exibidas algumas informações sobre o servidor. Estando tudo certo, clique em next novamente.

Na tela seguinte, aparecerá uma mensagem dizendo que não conseguiu criar o arquivo /var/www/zabbix/conf/zabbix.conf.php. Faça o download do mesmo e copie ele para o diretório citado.

Em seguida, retorne à interface web do zabbix e clique em "retry". Feito isso, será exibida uma tela com algumas mensagens e uma delas será:

"Congratulations on successful instalation of Zabbix frontend"


Clique em finish e você será redirecionado para a interface web do Zabbix. Agora será necessário instalar o agente nos servidores e depois adiciona-los via interface web no Zabbix. Mas isso ficará para um próximo post.

Usuário e senha padrão para acesso à interface web:

username: admin
password: zabbix

Divirta-se! :)


sexta-feira, 29 de julho de 2011

Linux - Relendo a tabela de partições

Para fazer com que a tabela de partições seja relida sem precisar reiniciar o linux, use o comando partprobe ou hdparm como descrito abaixo:

# partprobe /dev/hdx ou /dev/sdx

ou

# hdparm -z /dev/sdax

Substitua o x pela letra correspondente ao hd no qual se deseja fazer a releitura.