Tecnologia

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

Por: , março 11, 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.

 

  • Receba nosso conteúdo em primeira mão.