sexta-feira, 22 de maio de 2015

COMO SEPARAR O ZABBIX-SERVER DO BANCO DE DADOS

O monitoramento de serviços de TI com Zabbix, causa uma coleta de dados muito grande e que so tente a aumentar, sempre estamos adicionando novos monitoramentos e nosso banco de dados sempre esta crescendo. Chega uma hora que seu Zabbix começa cair a performance, os gráficos começam a demorar mais para serem gerados e atualizados, a navegação nas paginas do Zabbix fica lenta dentre outros. Para melhorar esta situação, podemos fazer varias configurações para melhorar a performance, até que o servidor realmente fica no seu limite. Então uma boa pratica para melhorar a performance do seu servidor é dividi-lo. Isso mesmo, dividi-lo em 2, um servidor de aplicação/front-end e um servidor para o banco de dados. Assim você divide a carga dos serviços, e então um não vai interferir no outro. Fica até mais fácil para fazer troubleshooting. Neste tutorial mostrarei como fazer essa divisão. O que será necessário?

  • zabbix-server,  (Debian 7) – Servidor Zabbix antigo, onde há o banco de dados e aplicação juntos.
    • OBS: Caso você ainda não tenha um zabbix-server instalado clique aqui para criar seu zabbix-server seguindo outro tutorial.
  • zabbix-bd, (Debian 7) – Servidor que sera instalado o mysql e receberá o backup dos dados de zabbix-server.
 
Passo 01 – Fazendo os backups necessários
 
Para fazer a coisa com segurança iremos fazer o backup do banco de dados e do arquivos de configuração do zabbix-server. Mais antes pare o serviço do zabbix-server, ele só voltara a iniciar quando já tivermos migrado.

service zabbix-server stop
mysqldump -uroot -p zabbix > /root/bkp.database.db
cp /etc/zabbix/zabbix_server.conf /root/

Agora devemos enviar o backup do banco para o novo servidor de banco de dados.

scp -P 2022 /root/bkp.database.db root@ipdoservidormsysql:/tmp/

Passo 02 - Instalando o banco de dados

Vamos instalar o mysql no zabbix-db.

Aptitude update
Aptitude install mysql-server

Será exibido a seguinte tela solicitando a senha de root do mysql. Digite a senha e guarde-a.




Agora vamos configurar o mysql-server para permitir conexões remotas, para que o zabbix-server consiga usa-lo como servidor de banco de dados.

Permitir conexoes remotas no arquivo de configuração do mysql.

vim /etc/mysql/my.cnf
Procure por Bind-address = 127.0.0.1, comente esta linha e substitua por bind-address = 0.0.0.0.

#bind-address       = 127.0.0.1
bind-address = 0.0.0.0

Restarte o serviço do mysql.

service mysql restart

Com o Mysql Server instalado, precisamos criar o banco de dados, dar as devidas permissões para o usuário zabbix  e restaurar o backup anteriormente feito no zabbix-server.

 
mysql -u root -p  #Será solicitado a senha que acabamos de criar.
create database zabbix;
use zabbix;
GRANT ALL ON zabbix TO 'zabbix'@'ip-ou-%' IDENTIFIED BY 'password';

OBS: onde tem ip-ou-%, significa que você tem que digitar ali o ip da maquina que terá acesso ao mysql, ou caso queira que qualquer maquina tenha acesso, digite só o %, ficando 'zabbix@%'.
Em /etc/hosts.allow digite a linha abaixo.
mysqld: ip_servidor_mysql

Pra testar se a permissão foi dada corretamente, vamos logar no zabbix remotamente, do servidor zabbix-server execute este comando para se logar remotamente no mysql do zabbix-db.

mysql -uroot -p -h ip_servidor_mysql

Com a conexão feita com sucesso vamos pra frente. Caso não tenha conseguido acessar remotamente, reveja os últimos passos.

Agora vamos restaurar o backup feito em zabbix-server em zabbix-db.

Para isto vá até onde esta o arquivo de backup e execute os comandos para restaurar o banco.


cd /tmp #entre no diretorio onde esta o backup
mysql -u root -p -h localhost zabbix < bkp.database.db #restaure o banco
mysql-u root -p #conecte-se ao mysql
use zabbix; #selecione o banco do zabbix
show tables; # verifique se as tabelas foram criadas.

A parte do banco de dados esta pronto.

Passo 03 - Reconfigurar o zabbix-server

Acesse o servidor zabbix-sever e vamos editar o seu arquivo de configuração principal,

vim /etc/zabbix/zabbix_server.conf
DBHost=ip_servidor_mysql #Descomente e configure com o ip do Mysql Server
DBName=zabbix
DBUser=root
DBPassword=password

Passo 04 - Reconfigurando o Front-End.

Acesse o zabbix pelo brownser, ele deve estar informando que não esta rodando assim como na imagem abaixo.






Agora você deve ir  na aba administrativo e depois em Installation, como na figura abaixo.


 




Esta pagina abrira para que você comece as configurações.












Clique em Next





Nesta tela confira as configurações do PHP e clique em Next.






Aqui você deve configurar no campo Database Host com o ip do servidor mysql, o nome da base de dados, usuário e senha, caso tenham sido alterados. Clique em Next.




 

 
Nesta tela é possível dar um nome ao host do zabbix server, porem é opcional. Clique em Next.





 

 

 
Reveja as configurações utilizadas e clique em next.







Nesta ultima tela sera informado que o arquivo de configuração do PHP foi criado, e então voce pode finalizar. Apos isso inicie o serviço do zabbix-server e veja que o servidor esta no ar novamente.
service zabbix-server start





 

Pronto, o zabbix server foi re-estabelecido, de forma que o banco de dados esta sendo mantido pelo servidor zabbix-db enquanto o serviço em si esta rodando no zabbix-server.

Espero ter ajudado!
Muito Obrigado e até a Proxima.


Referencias:
http://www.vivaolinux.com.br/dica/Configurando-acesso-remoto-em-servidores-MySQL/
https://www.zabbix.com/documentation/2.4/pt/manual
https://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html

8 comentários:

  1. Otimo Post Marckson Junior!! Vc é fera.

    ResponderExcluir
  2. Obrigado, (Da Colômbia)

    Alejandro Gomez E

    ResponderExcluir
  3. Bom dia eu estou no processo de migração do bando de dados do Zabbix 3.0 para um servidor separado.
    Já fiz o novo banco, fiz dump do banco antigo e restaurei no novo, e estou com o novo banco pronto para receber a conexão do Zabbix.
    Porém, a opção instalação que existia no Zabbix 2.4 não existe no 3.0. Gostaria de saber como faço para reconfigurar a conexão ao banco?

    ResponderExcluir
  4. Bom dia Marckson,

    Esta era a informação que faltava para separar o frontend do servidor de banco de dados. Muito obrigado. Agora vou realizar a atualização da versão 2.4 para 3.0.

    ResponderExcluir
  5. Mark, não estou conseguindo chamar http://localhost/zabbix/setup.php.
    poderia me ajudar, por favor?

    ResponderExcluir
  6. Fiz esse trabalho no zabbix 3.2 aparentemente tudo normal, mas não está atualizando as informações em tela. E quando clico em Administration > Queue exibe a mensagem: CANNOT DISPLAY ITEM QUEUE

    DETAILS PERMISSION DENIED

    ResponderExcluir
  7. Muuuuuuuuuito obrigado amigo, que post radical continue com essa vontade de compartilhar seu conhecimento, assim como eu, você ajuda muitos juniors de TI. Grato, ótimo post!!!!!!!!!!

    ResponderExcluir