sexta-feira, 19 de fevereiro de 2016

Atualização Zabbix 2.x para 3.0

Bom dia galera, 
Segue meu script de atualização do Zabbix da versão 2.4 pra 3.0. 
Este servidor Zabbix rodava em um servidor Debian 7, Mysql 5.1 e Zabbix Server 2.4 porem esses procedimentos funcionarão para qualquer zabbix 2.x.

1. Tirar um snapshot antes de qualquer procedimento(caso seu servidor seja uma VM).

2. Baixe o source da versão mais nova do zabbix.

http://www.zabbix.com/download.php

3. Pare todos os processos referentes ao zabbix

a. #service zabbix-agent stop
b. #service zabbix-server stop

4. Verifique se ainda existe algum processo do zabbix rodando
a. ps -ef | grep -i zabbix
5. Descompacte o source do zabbix e entre no diretorio.
a. #tar -xzvf zabbix-3.0.tar.gz
b. #cd zabbix-3.0

6. Compilar a nova versão:

a. #./configure --enable-server --enable-agent --enable-java --with-mysql --with-libcurl --with-net-snmp --with-openipmi --with-ssh2 --with-libxml2 --with-jabber
b. #make install

7. Reveja os arquivos de configuração em /etc/zabbix/zabbix_server.conf

8.Inicie o serviço do zabbix para dar inicio a atualização do banco, esta parte deve ser acompanhada pelo log do zabbix para saber quando termina a atualização.

a. #service zabbiz-server start
b. #tail –f /var/log/zabbix/zabbix_server.log

9. Instalar o novo Frontend, va até o diretório que estão os arquivos de instalação do zabbix, você deve copiar os arquivos para o apache e depois configurar as permissões das pastas.

a. #mv /var/www/zabbix /var/www/zabbix-2.x.bkp
b.#mkdir /var/www/zabbix
c. #cp -a /home/root/zabbix-3.0/frontends/php/* /var/www/zabbix
d. #cd /var/www/
e. #chown -R www-data:www-data zabbix

10. Acesse a aplicação do zabbix através do navegador em http://ipounomedoservidor/zabbix e siga os passos abaixo:

a. Na tela de Welcome clique em avançar.
b. Na tela Check of pre-requesites verificar se todos os requesitos estão OK, se sim avançar, se não, deve tratar os erros.
c. Na tela Configure DB connection preencher o nome do banco de dados, usuário do banco de dados e senha.
d. Na tela Zabix Server Details avançar.
e. Na tela Pre-Installaton summary avançar.
f. Na tela Pre-Installaton summary avançar.
g. Na tela install verificar se foi criado o arquvio de configuração, se sim, clique em finish

11. Se tudo correr como esperado o zabbix esta atualizado e pronto pra continuar usando.

Espero ter ajudado.

Muito Obrigado e até a próxima!

sexta-feira, 5 de fevereiro de 2016

Rotacionar Log do TomCat(catalina.out)



Fala Galera,
   
     Quem administra servidores tomcat, com varias aplicações sempre sofre com o arquivo catalina.out que não para de encher o tempo todo, e sempre acaba lotando sua partição /usr. Pois bem, neste post irei rapidamente lhe mostrar como resolver esse problema rotacionando este log.

      O único pre-requisito pra este procedimento é que você tenha espaço suficiente dentro do seu /usr porque durante o rotacionamento o SO vai criar um novo arquivo do catalina.out compactado, e só depois disso ele ira apagar o arquivo original e criar um novo zerado. No meu caso eu tive que fazer um backup do arquivo catalina.out pra outra partição, restartar o tomcat pra que ele pudesse criar um outro catalina.out e só depois disso pedir para que fizesse o rotacionamento, tive que fazer isso por que eu não tinha espaço em disco suficiente.

       Bem, verificado se existe espaço em disco, vamos para os procedimentos que foram realizados no DEBIAN 7(Wheezy).

1- Crie um arquivo de texto dentro do seu /etc/logrotate.d/tomcat com o seguinte conteúdo:

/usr/local/tomcat/logs/catalina.out { #Ajuste este caminho para o endereço correto do catalina.out, caso não seja este. 

 copytruncate  #Permite o aproveitamento do arquivo de log antigo, limando o mesmo em vez de remove-lo.
 daily              #Freqüência que o logrotate é executado pode ser semanal ou mensal também.
 rotate 7          #Configura quantos arquivos rotacionados serão guardados, o ultimo arquivo é apagado.
 compress       #Comprime os arquivos rotacionados em gzip.
 missingok      #Se o arquivo de log não existir ele passa para o próximo sem erros.
 size 50M         #Limite do tamanho de cada log, quando o catalina.out chega a este tamanho ele rotaciona.
}


OBS:     Este procedimento normalmente pode ser utilizado para qualquer outro arquivo de log, desde que você ajuste as opções e os apontamentos corretamente.


      Apos isto feito você pode executar manualmente o logrotate, ou pode aguardar um dia, pois o arquivo esta configurado para rodar diariamente.
   
      Para rodar manualmente execute:

# logrotate /etc/logrotate.conf 

      Para rodar manualmente forçando a execução:

# logrotate  --force /etc/logrotate.conf 

      Para rodar manualmente forçando e mostrando todos os detalhes da execução:

# logrotate  --force --verbose /etc/logrotate.conf 

Quando executar ou aguardar o horário da execução automática, o logrotate, ira criar um arquivo compactado chamado: catalina.out.1.gz e ira limpar o catalina.out. Na segunda execução ele ira renomear o catalina.out.1.gz para catalina.out.2.gz e compactar o novo catalina.out para catalina.out.1.gz, limpar o catalina.out, e assim por diante.

Dessa forma abaixo:


É isso galera, este é um problema que acontece bastante comigo, porque normalmente o pessoal se esquece de configura esse rotacionamento e acaba sempre acontecendo da partição /usr lotar, e as aplicações rodando no tomcat pararem.

Até a próxima! 

Valeu!

Marckson Junior

Referencias:

https://blog.tuannh.com/config-logrotate-for-nginx-with-custom-log-path/
http://www.dicas-l.com.br/arquivo/utilizando_logrotate.php
http://linuxcommand.org/man_pages/logrotate8.html

quarta-feira, 10 de junho de 2015

Como configurar o AUTO DISCOVERY no ZABBIX

       




No dia a dia de quem administra um Zabbix Server existe uma atividade muito repetitiva que é a de criar hosts, adicionar este host em um grupo e a um template especifico. Porem existe um recurso no Zabbix chamado Discovery, este recurso realiza o auto descobrimento de novos hosts na sua rede. Então o Zabbix acha automaticamente uma maquina na rede, cria um host para esta maquina, e realiza outras atividades bem como coloca-la em um grupo e em um template especifico. Fazendo com que o analista não precise ficar criando hosts diariamente. Primeiro vou mostrar o processo de criação de um host manualmente. Para isso você, após logado no zabbix vai precisar ir em "Configuration" => "Hosts" e depois clicar em "Create host".
       
                     

          Os principais campos aqui são:

     

  • Host Name: Nome do host que foi configurado no agente do Zabbix.
  • Groups: Adicione os grupos que você deseja inserir o host.
  • Agent Interface: Entre com o IP e nome DNS do host.
  • SNMP interface: Accione uma interface SNMP caso o host possua SNMP.

         Siga para a aba Templates.



          Aqui você deve escolher um template e adiciona-lo. E então clique em ADD para adicionar o Host. 

          Done! O host foi criado fácil e rapidamente.

          Mais o grande problema aqui é que esta tarefa você deverá fazer repetidamente durante todo o tempo em que você continuar como administrador de um Zabbix Server. Então para facilitar sua vida vamos configura o recurso de descoberta automática simples.

          Vá para a aba "Configuration" => "Discovery" e clique em "Create discovery rule".



      Nesta tela você ira criar uma regra de descoberta, ela ira definir como uma maquina será descoberta.


          Preencha os seguintes campos e deixe o resto como padrão:

          Nome: Nome da regra

          IP range:  Aqui coloque uma faixa de IP onde as maquinas que você deseja descobrir estão, exemplo como esta na própria imagem, ali o zabbix ira procurar por maquinas que estejam na faixa de ip 192.168.0.1 até 192.168.0.254.

          Delay: Aqui é o intervalo de tempo entre cada tentativa de descoberta em segundos.

          Checks:  Aqui estão a regra de descobrimento em si. Clique em New e abaixo ira aparecer um novo formulário.


Em "Check type" você pode escolher as seguintes opções : FTP, HTTP, HTTPS, ICMP Ping, SNMP, Zabbix Agent e etc. Essas opções são a forma como o zabbix server ira tentar se comunicar com o host, para "descobri-los" Nos escolheremos Zabbix agent, assim o Zabbix ira descobri qualquer host que já esteja com o zabbix agent instalado e configurado.

Em key, você devera colocar algum item, que o zabbix agent possa reconhecer, como exemplo eu utilizei a key system.uname, assim qualquer agent que consiga responder por este item ira se encaixar na regra.

Clique em Add para adicionar a regra.
    
Aguarde o tempo de delay escolhido no quadro acima, e depois vá em Monitoring => Discovery, nesta tela ira aparecer os hosts que foram descobertos por esta regra.  Veja na imagem abaixo que no meu teste foram descobertos 2 Hosts.


Agora vamos criar uma Action, que ira criar de fato os hosts, depois ira coloca-los em um grupo especifico e em um template especifico, no meu caso ele ira coloca-los no grupo de Servidores Linux e adicionar também o template Linux a eles.

Vá para "Configurar" => "Actions",  no Dropdown ao lado escolha "Discovery" e depois clique em create action.

          
Neste formulário apenas Digite o nome para a action, ex: Descobrimento Linux. E vá para a aba Conditions.


Aqui você escolhe as condições para que o host descoberto se encaixe nesta Action. No caso da imagem, vai se encaixar nesta regra qualquer host, que no item system.uname tenha o valor "Linux", e O status de descobrimento(Discovery status) esteja UP e o host o tipo do serviço escolhido na regra de descobrimento(Service Type) tenha sido Zabbix Agent. Então caso o host descoberto, se enquadre nesta regra, sera aplicado as Operações escolhidas na próxima Aba que é exatamente a aba Operations.

Vá para a Aba Operations. 
Na Aba Operations, clique em new, para que seja aberto o formulário para adicionar Operações.


Através desta tela criaremos 3 regras:

  1. Criar o Host, 
  2. Adiciona-lo ao grupo de Linux 
  3. Ligar o host ao template Linux.

Para a primeira regra, apenas clique em new e em Operation Type escolha a opção "Add host" e depois clique em Add, assim como na imagem abaixo.


Para a segunda regra clique novamente em New e em em Operation Type escolha a opção "Add to host group". Logo em seguida em "Add to host Groups" Escolha o grupo que deseja adicionar o host, clique em add e depois em update para atualizar a regra geral.


Para a terceira regra clique novamente em New e em "Operation Type" escolha a opção "Link to template" e em Link with templates escolha o template desejado, no nosso caso o "Template_Linux", depois clique em add e logo depois em update para novamente atualizar a regra geral.


As tres regras estão prontas e devem ficar como na imagem abaixo:




Caso tenha sito tudo feito como descrito acima, espere mais uma vez o tempo de intervalo de cada verificação para que o zabbix possa processar as regras de discovery e as Actions.

Agora para se certificar que alguma maquina tenha sido criada vá em "Configuration" => "Host Group" e verifique o grupo "Discovered Hosts" este é o grupo padrão no qual todas as maquinas descobertas irão. Alem dos grupos que você configurou. Caso deseje você pode remover os hosts deste grupo depois que eles já tiverem ido para seus grupos corretos.



Pronto, o recurso esta configurado e funcionando. Porem existem outras dezenas de formas de fazer este mesmo procedimento, vai de sua preferencia fazer do jeito que você quer ou precisa. Este foi apenas um exemplo simples de utilização. 

Uma forma bem pratica de utilizar esta configuração é caso você também utilize o Puppet em sua infraestrutura, com o puppet trabalhando junto com o zabbix, é possível automatizar a instalação do agente, pois uma vez que esta regra de descobrimento necessita do agente instalado você ainda terá o trabalho de instala-lo e configura-lo.

Então utilizando as duas ferramentas juntas você terá o puppet instalando e configurando automaticamente o agent do zabbix, e logo em seguida o zabbix já ira descobrir o host, cria-lo, e coloca-lo no seu respectivo grupo e template. Processo totalmente automatizado.

Valeu!

quarta-feira, 27 de maio de 2015

COMO INSTALAR O ZABBIX-AGENT

Neste tutorial mostrarei como instalar facilmente o agente do zabbix. Estes procedimentos foram realizados no Linux Debian 7. No linux existe duas boas maneiras de instalar o agente do zabbix, uma é através do Zabbix Packages, outra forma é através do Zabbix Sources, onde você devera compilar sua própria instalação. Através do zabbix package você precisara baixar o instalador dos repositórios oficiais do zabbix, e ira instalar o agente através do aptitude. E usando o Zabbix Sources você deverá compilar o agente.


Zabbix Packages:


Na pagina de downloads do zabbix(link) baixe o instalador dos repositórios de pacotes do Zabbix, apos baixar vamos instalar os repositórios, atualizar a lista de pacotes do sistema operacional e exibir os pacotes disponíveis com o nome zabbix.

wget wget http://repo.zabbix.com/zabbix/2.4/debian/pool/main/z/zabbix-release/zabbix-release_2.4-1+wheezy_all.deb #Baixa o instalador do repositorios.
aptitude update #Atualiza lista de pacotes
aptitude search zabbix # Exibe lista de pacotes com o nome zabbix



Esta é a lista de pacotes que o ultimo comando acima deve retornar.

BB  zabbix-agent                                            - network monitoring solution - agent
p   zabbix-frontend-php                                    - network monitoring solution - PHP front-end
p   zabbix-get                                                 - network monitoring solution - get
p   zabbix-java-gateway                                   - network monitoring solution - java-gateway
p   zabbix-proxy-mysql                                    - network monitoring solution - proxy (using MySQL)
p   zabbix-proxy-pgsql                                     - network monitoring solution - proxy (using PostgreSQL)
p   zabbix-proxy-sqlite3                                   - network monitoring solution - proxy (using SQLite3)
i   zabbix-release                                            - Zabbix official repository configuration
p   zabbix-sender                                            - network monitoring solution - sender
p   zabbix-server-mysql                                    - network monitoring solution - server (using MySQL)
p   zabbix-server-pgsql                                     - network monitoring solution - server (using PostgreSQL)


Com isto vamos instalar o pacote zabbix-agent.

Aptitude install zabbix-agent –y

Para configurar o agente edite o arquivo /etc/zabbix/zabbix_agent.conf. Configure o parâmetro Server.
Server=ip_servidor_zabbix 

Restarte o serviço do zabbix agent.

service zabbix-agent restart

Zabbix Sources


Na pagina de download do Zabbix, va até a sessão Zabbix Sources e baixe os arquivos da versão que você deseja, no nosso caso baixamos a versão 2.4.

wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz?r=&ts=1432747571&use_mirror=nbtelecom -O zabbix-2.4.5.tar.gz

Caso o arquivo seja salvo com algum nome estranho, renomeie o mesmo para zabbix-2.4.5.tar.gz.
tar xzvf zabbix_agents_2.4.4.linux2_6_23.amd64.tar.gz
cd zabbix-2.4.5
Compile o zabbix agent.

./configure --enable-agent
Copie o script de inicialização para o /etc/init.d/, de permissão de execução ao script e configure para ele iniciar automaticamente junto com o so.

cp misc/init.d/debian/zabbix-agent /etc/init.d/
chmod +x /etc/init.d/zabbix-agent
update-rc.d zabbix-agent defaults
Crie um link simbolico do arquivo de configuração para o /etc para facilitar a administração do agente.

cd /etc
ln -s /usr/local/etc/ /etc/zabbix
Para configurar o agente edite o arquivo /etc/zabbix/zabbix_agent.conf. Configure o parâmetro Server.

Server=ip_servidor_zabbix 


Agora basta iniciar o serviço do zabbix-agent

service zabbix-agent start


Pronto, zabbix agent instalado.

Espero ter ajudado!
Muito Obrigado e até o próximo post.

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