DEVOPS na prática: Instalando ZABBIX (2.2.2) + MySQL

Mais um post de DEVOPS, demonstrando uma instalação bem simplificada do Zabbix na versão 2.2.2 e banco MySQL com...

Dextra

View posts by Dextra
Somos especialistas em desenvolvimento de software sob medida para negócios digitais. Pioneiros na adoção de metodologias de gestão ágil, combinamos processos de design, UX, novas tecnologias e visão de negócio, desenvolvendo soluções que criam oportunidades para nossos clientes. A Dextra faz parte da Mutant, empresa B2B líder no mercado brasileiro e especialista em Customer Experience para plataformas digitais.
Data de publicação: 11/03/2014

Mais um post de DEVOPS, demonstrando uma instalação bem simplificada do Zabbix na versão 2.2.2 e banco MySQL com o Chef Solo.

O Zabbix é uma ferramenta (Open Source) de monitoramento muito eficaz e bastante utilizada no meio organizacional, com ele é possível coletar informações de todos dispositivos de uma rede, essas informações podem ser coletadas através de scripts, via agente ou até mesmo através do protocolo SNMP.

Informações importantes:

* Cookbook install and configure: Zabbix Server 2.2.2 + MySQL
* Test: Ubuntu Server 12.04.3 LTS
* Database Name: zabbixdb (user: zabbix / pass: zabbix)
* Root MySQL password: zabbix
* Zabbix Interface: admin / zabbix

Preparando ambiente e executando a receita:

1 – Instale o client do GIT para baixar a receita:

# apt-get update
# apt-get install git-core

2 – Instale o Chef Solo:

# curl -L https://www.opscode.com/chef/install.sh | bash

3 – Faça o download e configure a estrutura do Chef:

# wget http://github.com/opscode/chef-repo/tarball/master
# tar -zxvf master
# mv opscode-chef-repo-f9d4b0c/ /opt/chef-repo
# mkdir /opt/chef-repo/.chef

Configure Cookbook Path

Adicione a seguinte linha no arquivo “/opt/chef-repo/.chef/knife.rb”:

cookbook_path [ '/opt/chef-repo/cookbooks' ]

Adicione as seguintes linhas no arquivo “/opt/chef-repo/solo.rb”:

file_cache_path "/opt/chef-solo"
cookbook_path "/opt/chef-repo/cookbooks"

4 – Realize o download da receita:

# git clone https://github.com/mantellatto/chef_zabbix.git -l /opt/chef-repo/cookbooks/zabbix

5 – Crie o arquivo JSON para execução da receita (/opt/chef-repo/zabbix.json) e adicione a seguinte linha:

{ "run_list": [ "recipe[zabbix]" ] }

6 – Agora, basta executar a receita baixada:

# chef-solo -c /opt/chef-repo/solo.rb -j /opt/chef-repo/zabbix.json

7 – Após o fim do processo de execução da receita, verifique o status do serviço e acesse a interface do Zabbix através de um browser, o mesmo já deve estar funcionando:

# ps -ef | grep zabbix
http://[IP]/zabbix

Logo abaixo, segue a receita comentada:

# Cookbook Name:: zabbix
###### Instalando dependências e serviços ######
package "build-essential" do
  action :install
end
package "apache2" do
  action :install
end
package "php5" do
  action :install
end
package "php5-curl" do
  action :install
end
package "php5-dev" do
  action :install
end
package "php5-mysql" do
  action :install
end
package "php5-gd" do
  action :install
end
package "php5-xmlrpc" do
  action :install
end
package "openipmi" do
  action :install
end
package "libssh2-1" do
  action :install
end
package "libssh2-1-dev" do
  action :install
end
package "libssh2-php" do
  action :install
end
package "fping" do
  action :install
end
package "libcurl3" do
  action :install
end
package "libcurl4-openssl-dev" do
  action :install
end
package "libiksemel3" do
  action :install
end
package "libiksemel-dev" do
  action :install
end
package "libssh2-php" do
  action :install
end
package "snmp" do
  action :install
end
package "libmysqld-dev" do
  action :install
end
package "libmysqld-pic" do
  action :install
end
package "libmysqlclient-dev" do
  action :install
end
###### Criando usuário e grupo ######
group "zabbix" do
  action :create
end
user "zabbix" do
  action :create
  gid "zabbix"
  system true
end
###### Configurando MySQL ######
#mysql server usuario: root / senha: zabbix
bash "install_mysql_server" do
  user "root"
  ignore_failure true
  code <<-EOH
   (echo "mysql-server-5.5 mysql-server/root_password password zabbix" | debconf-set-selections && echo "mysql-server-5.5 mysql-server/root_password_again password zabbix" | debconf-set-selections && apt-get -y --force-yes install mysql-server-5.5)
  EOH
end
###### Fazendo download do Zabbix e descompactando ######
bash "download_zabbix" do
  user "root"
  code <<-EOH
    wget http://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.2/zabbix-2.2.2.tar.gz -O /tmp/zabbix-2.2.2.tar.gz
    tar -zxf /tmp/zabbix-2.2.2.tar.gz -C /srv/
  EOH
end
###### Criando database e importando SQL's ######
bash "create_database" do
  user "root"
  ignore_failure true
  code <<-EOH
    mysql -uroot -pzabbix -e "create database zabbixdb;"
    mysql -uroot -pzabbix -e "grant all privileges on zabbixdb.* to zabbix@localhost identified by 'zabbix';"
    mysql -u zabbix -pzabbix zabbixdb < /srv/zabbix-2.2.2/database/mysql/schema.sql
    mysql -u zabbix -pzabbix zabbixdb < /srv/zabbix-2.2.2/database/mysql/images.sql
    mysql -u zabbix -pzabbix zabbixdb < /srv/zabbix-2.2.2/database/mysql/data.sql
  EOH
end
###### Configurando, compilando e instalando o Zabbix ######
bash "install_zabbix" do
  user "root"
  code <<-EOH
   (cd /srv/zabbix-2.2.2/ && ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-snmp --with-libcurl --with-ssh2 && make install)
  EOH
end
###### Arquivos de inicialização e configuração do serviço ######
cookbook_file "/etc/services" do
  source "services"
  mode 0644
  owner "root"
  group "root"
end
cookbook_file "/usr/local/etc/zabbix_agentd.conf" do
  source "zabbix_agentd.conf"
  mode 0644
  owner "root"
  group "root"
end
cookbook_file "/usr/local/etc/zabbix_server.conf" do
  source "zabbix_server.conf"
  mode 0644
  owner "root"
  group "root"
end
cookbook_file "/etc/php5/apache2/php.ini" do
  source "php.ini"
  mode 0644
  owner "root"
  group "root"
end
service "apache2" do
 action :restart
end
cookbook_file "/etc/init.d/zabbix-agent" do
  source "zabbix-agent"
  mode 0755
  owner "root"
  group "root"
end
cookbook_file "/etc/init.d/zabbix-server" do
  source "zabbix-server"
  mode 0755
  owner "root"
  group "root"
end
service "zabbix-server" do
 action :start
end
service "zabbix-agent" do
 action :start
end
bash "updaterc" do
  user "root"
  ignore_failure true
  code <<-EOH
   update-rc.d -f zabbix-server defaults
   update-rc.d -f zabbix-agent defaults
  EOH
end
bash "create_dir_apache" do
  user "root"
  ignore_failure true
  code <<-EOH
   mkdir /var/www/zabbix
   cp -a /srv/zabbix-2.2.2/frontends/php/* /var/www/zabbix/
   chown -R www-data:www-data /var/www/zabbix/
  EOH
end

Essa receita e os passos de configuração estão disponíveis também no Github:

https://github.com/mantellatto/chef_zabbix

A intenção desse post foi mostrar como é fácil você ter um plano de continuidade utilizando receitas (Chef) para instalação e configuração de serviços, isso vai facilitar bastante quando você precisar restaurar um serviço danificado, apenas executando uma receita e fazendo um restore do banco de dados.

 

Dextra

View posts by Dextra
Somos especialistas em desenvolvimento de software sob medida para negócios digitais. Pioneiros na adoção de metodologias de gestão ágil, combinamos processos de design, UX, novas tecnologias e visão de negócio, desenvolvendo soluções que criam oportunidades para nossos clientes. A Dextra faz parte da Mutant, empresa B2B líder no mercado brasileiro e especialista em Customer Experience para plataformas digitais.

Comentários

  1. daniel cardoso4 de fevereiro de 2015

    Gostaria de saber se vocês tem algum tutorial ou manual passo-a-passo para entender melhor os “cookbooks” do chef e como eles funcionam. obrigado.

    Responder

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

sete + 16 =

Posts relacionados

  1. Sobre a Dextra

    Somos especialistas em desenvolvimento de software sob medida para negócios digitais. Pioneiros na adoção de metodologias de gestão ágil, combinamos processos de design, UX, novas tecnologias e visão de negócio, desenvolvendo soluções que criam oportunidades para nossos clientes.

  2. Categorias

Scroll to top