Você está na página 1de 19

Integrao Zabbix x GLPI

Instalao do Zabbix em 6 passos

Scripts de Integrao

Instalando GLPI 0.90 dependncias e plugin para integrao com Zabbix

Configurao no servidor Zabbix para criar aes de abertura e fechamento de chamados

Homologando o ambiente (Simulando falha)

Autor: Jder Vasconcelos de Sousa Lima


Email: jaderonline@hotmail.com
Outubro de 2015

Cenrio Proposto
Nesse laboratrio, usaremos as ferramentas:
ISO do DEBIAN 7.9: http://cdimage.debian.org/mirror/cdimage/archive/7.9.0/
Script para instalao do Zabbix verso 2.4.6: http://pillares.net/scripts/zabbix-install.sh
GLPI 0.90: https://github.com/glpi-project/glpi/releases
WebServices Pluign: http://plugins.glpi-project.org/#/plugin/webservices
Scripts: https://www.dropbox.com/sh/2yge9sa3g6rxrhr/AAAdKGmafQYtJ76Ghn2xy62ma?dl=0
Virtualbox 5.0: https://www.virtualbox.org/wiki/Downloads
Putty: http://www.putty.org/

Configurao do laboratrio
host 01: Debian 7.9 + Zabbix 2.4.6
host 02: Debian 7.9 + GLPI 0.90 + PLUGIN (WEBSERVICES 1.6)

Topologia Proposta

Internet

SERVIDOR ZBX
DEBIAN 7.9
IP: 10.52.14.107

SERVIDOR GLPI
DEBIAN 7.9
IP: 10.52.14.101

Instalao do Zabbix em 6 passos


Script e tutorial do Zabbix feito por Halexsando de Freitas Sales.
E-mail: halexsandro@gmail.com

No servidor ZABBIX
1 PASSO: Abra o terminal de comandos e se torne o root digitando o comando 'su' e em seguida
informando a senha de administrador do sistema.
2 PASSO: Baixe o script atravs do comando abaixo:
#wget http://pillares.net/scripts/zabbix-install.sh
3 PASSO: -Torne o script um executvel com o comando abaixo:
#chmod +x zabbix-install.sh
4 PASSO: Execute o script com o comando abaixo:
#./zabbix-install.sh
5 PASSO: O comando intuitivo e realizar algumas perguntas. Ao fim da instalao, abra o navegador de
internet no Servidor Zabbix e digite o seguinte endereo:
http://127.0.0.1/zabbix
6 PASSO: Agora sero solicitadas algumas informaes do Frontend Zabbix (interface WEB). As
informaes so os usurios de banco de dados, geralmente o root (recomendado apenas para laboratrio)
e senha 123456 (depende do que voc informou durante a execuo do script.
7 PASSO: Por fim, acesse o zabbix com os seguintes usurios e senhas:
user: admin
pass: zabbix

Requisitos para integrao no servidor zabbix


Antes de baixarmos e parametrizarmos os scripts, devemos suprir as dependncias instalando o seguinte
pacote:

php-xmlrpc

Debian:
#apt-get install php5-xmlrpc

Vamos verificar no arquivo de configurao do [zabbix_server.conf] e [zabbix_agentd.conf] o


parmetro e local onde vai ficar nossos scripts de integrao, tambm vamos aproveitar e liberar o agente
para disparar comandos remotos:
Caso no saiba a localizao use o comando abaixo:
# find / -name zabbix

[zabbix_server.conf]

Habilitando comandos remotos no agente:


[zabbix_agentd.conf]

Vamos reiniciar os servios:

Verificando os logs do zabbix_server:

Verificando os logs do agente:

Scripts de Integrao
ack_zabbix_glpi.py o script que faz o reconhecimento do evento no Zabbix via API.
tickets_zabbix_glpi.php o script que faz abertura e fechamento de tickets no GLPI utilizando o plugin
Webservices.
zabbix_api.py a API Zabbix

Baixe os arquivos de preferncia no arquivo /tmp, conforme figura abaixo:

Movendo os arquivos e concedendo as permisses para usurio zabbix usar os scripts, conforme figura
abaixo:

Parametrizando o script
Vamos Editar o arquivo : [tickets_zabbix_glpi.php], conforme figura abaixo:
$user: Conta do usurio GLPI
$password: Senha do usurio
$xmlhost: IP Servidor GLPI
$xmlurl: No altere
$category: Nao altere
$watcher: Nao altere
$watchergroup: No altere
$sqlhost: IP banco de dados do GLPI
$sqldb: Nome do bando de dados do GLPI
$sqluser: Usurio Mysql com acesso a
base
$sqlpwd: Senha usurio MYSQL
$path_zabbix: Diretorio onde esto os
scripts necessrios para a integrao.

Obs: Atente-se para o o diretrio padro e o ip do seu servidor GLPI, bem como base de dados, usurio e
senha do Mysql

Instalando GLPI 0.90 dependncias e plugin para integrao com Zabbix


No servidor GLPI
Acesse o terminal do servidor GLPI via putty, faa o login como root e execute os comandos
abaixo para atualizar o sistema, instalar os servios de WEB, Base de Dados(MYSQL), PHP e
dependncias:
#apt-get update
#apt-get -y install apache2 php5 libapache2-mod-php5 php5-gd php-net-socket php5-ldap php5-curl php5xmlrpc php-soap
# apt-get -y install --force-yes php5-mysql mysql-server mysql-client libmysqld-dev

Baixando GLPI 0.90 e o PLUGIN WebServices (integrao com API do GLPI)


#cd /tmp/
#wget -c https://github.com/glpi-project/glpi/releases/download/0.90/glpi-0.90.tar.gz
#wget -c --no-check-certificate http://forge.glpi-project.org/attachments/download/2099/glpiwebservices-1.6.0.tar.gz

Instalando o GLPI no sistema


#tar xvf glpi-090.tar.gz
#mv glpi /var/www/
#chown -R www-data:www-data /var/www/glpi/

Instalao do plugin Webservice 1.6 compatvel com a verso mais nova do GLPI 0.90
#tar xvf glpi-webservices-1.6.0.tar.gz
#mv webservices/ /var/www/glpi/plugins/
#chown -R www-data:www-data /var/www/glpi/pluguins

Criando um Banco de dados para o comportar os dados do GLPI


#mysql -u root -p
#create database glpiDB;
#create user 'glpiuser'@'localhost' identified by 'senha';
#grant all on glpiDB.* to glpiuser with grant option;

Acessar o GLPI via WEB e finalize as configuraes:


http://ip_do_servidor/glpi

Instalando e habilitando plugin no GLPI

Acesso o menu: [Configurar/Plug-ins] depois clique em [ Instalar e Habilitar] conforme figura abaixo:

Depois acesse o : [Configurar/WebServices] vai ser apresentado a tela abaixo, vamos adicionar um novo
webservice, Para isso clique no smbolo +

Altere os parmetros conforme figura abaixo:

Nome: Zabbix
Enable services: Sim
Compression enable: No
Log connections: Histrico
Debug: No
Sql pattern for services: .*
Ipv4 Range: IP_GLPI IP_ZBX

Liberando conexes remotas para banco de dados do GLPI


Edite o arquivo [/etc/mysql/my.cnf]
Procule a linha: [bind localhost]
e troque para:
[bind 0.0.0.0]

Obs: Use somente para fins didtico (testes), pois com essa alterao voc est liberando seu servio de
mysql a aceitar qualquer origem de conexo. No recomendando para servidores em PRODUO

Reiniciando o servio de mysql

Configurao no servidor Zabbix para criar aes de abertura e fechamento de


chamados
No servidor ZABBIX (Via Interface WEB)
PASSO1 : V para o [Menu Configuraes] [Aba Aes]

PASSO 2: Boto no canto superior direito [criar ao]

PASSO 3: Criaremos uma ao para Abertura de Chamado


Nome: [Abrir chamado], os outros campos podemos deixar como o padro do Zabbix

PASSO 4: Na aba [Condies] tambm vamos deixar o padro do Zabbix, reparem que essa condio que
vai disparar a ao que vamos configurar, ou seja, quando o valor da trigger for igual a incidente, vamos
criar uma ao para abertura de um ticket no sistema de service desk, no nosso caso, o GLPI.

PASSO 5: Na aba [Aes], vamos configurar de acordo com os campos abaixo.


Vamos clicar em [nova] de acordo com a figura abaixo:

E na prxima janela, configuremos como segue abaixo:

Durao padro do passo da operao vamos deixar como [60 segundos]


Tipo da operao: [Comando Remoto]
Lista de Alvo: [Host] [Zabbix Server]
Tipo: [Script Personalizado]
Executar em: [Agent Zabbix]
Comando:
php /usr/lib/zabbix/externalscripts/tickets_zabbix_glpi.php eventhost="{HOSTNAME}" event="DOWN"
state="{TRIGGER.STATUS}" hostproblemid=0 lasthostproblemid=0 servico="{TRIGGER.NAME}"
triggerid="{TRIGGER.ID}" eventzabbix="{EVENT.ID}"

OBS: Atente-se para o caminho(path) do seu script, no exemplo o /usr/lib/zabbix/externalscripts

Criando ao para fechamento de Chamado GLPI

Vamos usar a opo uma opo interessante no zabbix, chamado clone, onde vamos aproveitar algumas
configurao do ao criada anteriormente [Abrir Chamado]

1 PASSO: Clique na opo [Abrir Chamado]

Com a janela aberta, clique no boto [clonar], pronto, j estamos no clone e procederemos com as
configuraes.

2 PASSO: Mude o nome para [Fechar Chamado]

3 PASSO: Mudar condio, agora o Valor da tigger = OK, ou seja, s vai ser disparado alguma ao caso
uma trigger esteja com esse status.

4 PASSO: Nessa tela s vamos mudar a opo: Comando; Esse segue abaixo.

# php /usr/lib/zabbix/externalscripts/tickets_zabbix_glpi.php tickets_zabbix_glpi.php


eventhost="{HOSTNAME}" event="UP" state="{TRIGGER.STATUS}" hostproblemid=1
lasthostproblemid=1 servico="{TRIGGER.NAME}" triggerid="{TRIGGER.ID}" eventzabbix="{EVENT.ID}"

HOMOLOGANDO A INTEGRAO
SIMULANDO ABERTURA E FECHAMENTO DE TICKET AUTOMTICO
Vamos simular uma falha de conexo com o host Zabbix Server, para isso voc deve adicionar o
template ICMP Ping no host a ser monitorado, conforme abaixo:

Esse template constitudo de 3 itens, e todos usam o protocolo ICMP para coleta,
especificamente o item ICMP ping usado para saber a disponibilidade de um host (tcnica no muito
confivel) .

Basicamente o host zabbiz usa um ICMP Echo Request e espera como resposta do dispositivo a ser
monitorado um ICMP Echo Reply, num intervalor configurado de 60 segundos para determinar se um host
est no AR ou no.
O que vamos fazer bloquear esse pacotes com firewall iptables e simular a queda do host.

Comando para simular a dropagem do protocolo icmp do tipo echo request

#iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Vamos ao DASHBOARD do Zabbix e observe que na figura tivemos um incidente [Zabbix server is
unavailable by ICMP] a ser reconhecido, e ele j executou uma ao. Isso significa que o ticket foi aberto.
Clicando na data e horrio do evento, obtemos informaes detalhadas sobre o mesmo, conforme pode ser
visualizado na figura abaixo

Vamos ao DASHBOARD do GLPI e vamos verificar o ticket criado no GLPI, a figura abaixo exibe o
ticket de ID 8 aberto e com status de novo e a descrio do problema com o nmero do evento gerado
no Zabbix.

Visualizao pelo dashboard personalizado.

Agora vamos limpar as regras do iptables, para que o ping volte ao normal, assim simulamos que o
host monitorado vai est no ar novamente.

Comando: # iptables -F

Na foto abaixo podemos visualizar que o problema foi resolvido e o zabbix j est monitorando o
host novamente.

Detalhes do status do incidente.

Voltemos ao DASHBOARD do GLPI e vamos verificar o ticket criado no GLPI anteriormente com id
8, conforme figura abaixo agora este aparece com status de Solucionado.

Visualizao pelo dashboard personalizado, nenhum novo chamado.

Enjoy