quinta-feira, 3 de outubro de 2013

Monitoramento de VMs com Zabbix 2.2

Introdução:
Uma das grandes novidades da versão 2.2 é a possibilidade de monitoramento de máquinas virtuais de forma automatizada pelo recurso LLD (Low Level Discovery).

Advertencia:
Para esse tutorial estou usando a versão alpha do Zabbix, mais especificamente a 2.1.6 (sétimo alpha).

Apesar de funcional para demonstração do recurso essa versão não deve ser utilizada em produção.

Preparação do Ambiente:
Utilizei o Sistema Operacional CentOS 6.4 na opção de instalação minimal.

Após isso instalei os repositórios epel e remi:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

É preciso habilitar o remi depois de instalado:
# vi /etc/yum.repos.d/remi.repo
Altere a linha enabled=1

Atualizar o sistema:
# yum update -y

Desativar SeLinux e Firewall 

Instalação do Zabbix:
 Para realizar a instalação do Zabbix podemos seguir esse tutorial, modificando alguns detalhes.

Suprir as Dependências:
Na seção suprir as dependências, vamos acrescentar alguns pacotes, pelo fato de estar usando o CentOS Minimal, e o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
# yum -y install ntsysv make wget bind-utils httpd php php-common php-mysql php-gd php-bcmath php-mbstring php-xml mysql mysql-server mysql-devel net-snmp net-snmp-devel net-snmp-utils net-snmp-libs gcc curl curl-devel libxml2-devel libxml2

Atenção na hora de realizar o download dos fontes para escolher a versão correta (Alpha Releases).

Configurar e Compilar os Códigos Fontes (Sources):
Na seção configurar e compilar os códigos fontes, precisamos adicionar o novo pré-requisito utilizado no monitoramento de VMs a libxml2.
./configure --enable-server --with-mysql --with-net-snmp --with-libcurl --enable-agent --with-libxml2

Observe na saída final a linha de Flags de Compilação:
Compiler flags:        -g -O2  -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC  -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1        -I/usr/include/rpm -I/usr/local/include -I/usr/lib/perl5/CORE -I. -I/usr/include   -I/usr/include/libxml2

Todo o resto do processo permanece inalterado.

Conhecendo os Templates Disponíveis:

Templates Disponíveis
Configurando o Host:
Faça a configuração normal do host, acrescente o template e as seguintes macros:
{$URL}: https://<IP-address>/sdk (URL do vCenter / ESX / ESXi)
{$USERNAME}: Usuário
{$PASSWORD}: Senha

Se estiver na dúvida sobre esses dados, acesse https://<IP-address> e clique em Browse datastores in this host's inventory, teste seu usuário e senha, se der certo é esse usuário e senha que você vai usar ;-)
Testando credencias
Exemplos de Dados Coletados:

Dados do servidor ESXi
VMs Descobertas Automaticamente
VM Windows
VM Linux

VMs descobertas automáticamente
 Considerações Finais:
Usei uma máquina ESXi 5.1 com o template Template Virt VMware vSphere.
Você pode ir no template em Discovery e baixar o intervalo default de 3600 segundos (1 hora) para 300 segundos (5 minutos), para agilizar os testes.

Fonte e Agradecimentos:
Agradeço ao 九龍真乙 @qryuu por ter disponibilizado essa apresentação, eu vinha realizando vários testes sem sucesso, pois não sabia o que colocar na variável {$URL}, mas graças a ele esse tutorial foi possível.