integração zabbix x glpi

19
Integração Zabbix x GLPI Instalação do Zabbix em 6 passos Scripts de Integração Instalando GLPI 0.90 dependências e plugin para integração com Zabbix Configuração no servidor Zabbix para criar ações de abertura e fechamento de chamados Homologando o ambiente (Simulando falha) Autor: Jáder Vasconcelos de Sousa Lima Email: [email protected] Outubro de 2015

Upload: vinicius-souza

Post on 01-Feb-2016

640 views

Category:

Documents


41 download

DESCRIPTION

Integração

TRANSCRIPT

Integração Zabbix x GLPI

Instalação do Zabbix em 6 passos

Scripts de Integração

Instalando GLPI 0.90 dependências e plugin para integração com Zabbix

Configuração no servidor Zabbix para criar ações de abertura e fechamento de chamados

Homologando o ambiente (Simulando falha)

Autor: Jáder Vasconcelos de Sousa Lima

Email: [email protected]

Outubro de 2015

Cenário Proposto

Nesse laboratório, usaremos as ferramentas:

ISO do DEBIAN 7.9: http://cdimage.debian.org/mirror/cdimage/archive/7.9.0/

Script para instalação do Zabbix versão 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/

Configuração do laboratório

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 GLPIDEBIAN 7.9IP: 10.52.14.101

SERVIDOR ZBXDEBIAN 7.9IP: 10.52.14.107

Instalação do Zabbix em 6 passos

Script e tutorial do Zabbix feito por Halexsando de Freitas Sales.

E-mail: [email protected]

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 através do comando abaixo:

#wget http://pillares.net/scripts/zabbix-install.sh

3 PASSO: -Torne o script um executável 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 instalação, abra o navegador de

internet no Servidor Zabbix e digite o seguinte endereço:

http://127.0.0.1/zabbix

6 PASSO: Agora serão solicitadas algumas informações do Frontend Zabbix (interface WEB). As

informações são os usuários de banco de dados, geralmente o root (recomendado apenas para laboratório)

e senha 123456 (depende do que você informou durante a execução do script.

7 PASSO: Por fim, acesse o zabbix com os seguintes usuários e senhas:

user: admin

pass: zabbix

Requisitos para integração no servidor zabbix

Antes de baixarmos e parametrizarmos os scripts, devemos suprir as dependências instalando o seguinte

pacote:

php-xmlrpc

Debian:

#apt-get install php5-xmlrpc

Vamos verificar no arquivo de configuração do [zabbix_server.conf] e [zabbix_agentd.conf] o

parâmetro e local onde vai ficar nossos scripts de integração, também vamos aproveitar e liberar o agente

para disparar comandos remotos:

Caso não saiba a localização use o comando abaixo:

# find / -name zabbix

[zabbix_server.conf]

Habilitando comandos remotos no agente:

[zabbix_agentd.conf]

Vamos reiniciar os serviços:

Verificando os logs do zabbix_server:

Verificando os logs do agente:

Obs: Atente-se para o o diretório padrão e o ip do seu servidor GLPI, bem como base de dados, usuário e

senha do Mysql

Scripts de Integração

Baixe os arquivos de preferência no arquivo /tmp, conforme figura abaixo:

Movendo os arquivos e concedendo as permissões para usuário zabbix usar os scripts, conforme figura

abaixo:

Parametrizando o script

Vamos Editar o arquivo : [tickets_zabbix_glpi.php], conforme figura abaixo:

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

$user: Conta do usuário GLPI

$password: Senha do usuário

$xmlhost: IP Servidor GLPI

$xmlurl: Não altere

$category: Nao altere

$watcher: Nao altere

$watchergroup: Não altere

$sqlhost: IP banco de dados do GLPI

$sqldb: Nome do bando de dados do GLPI

$sqluser: Usuário Mysql com acesso a

base

$sqlpwd: Senha usuário MYSQL

$path_zabbix: Diretorio onde estão os

scripts necessários para a integração.

Instalando GLPI 0.90 dependências e plugin para integração com Zabbix

No servidor GLPI

Acesse o terminal do servidor GLPI via putty, faça o login como root e execute os comandos

abaixo para atualizar o sistema, instalar os serviços de WEB, Base de Dados(MYSQL), PHP e

dependências:

#apt-get update

#apt-get -y install apache2 php5 libapache2-mod-php5 php5-gd php-net-socket php5-ldap php5-curl php5-

xmlrpc php-soap

# apt-get -y install --force-yes php5-mysql mysql-server mysql-client libmysqld-dev

Baixando GLPI 0.90 e o PLUGIN WebServices (integração 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/glpi-

webservices-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/

Instalação do plugin Webservice 1.6 compatível com a versão 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 configurações:

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 símbolo +

Altere os parâmetros conforme figura abaixo:

Nome: Zabbix

Enable services: Sim

Compression enable: Não

Log connections: Histórico

Debug: Não

Sql pattern for services: .*

Ipv4 Range: IP_GLPI – IP_ZBX

Obs: Use somente para fins didático (testes), pois com essa alteração você está liberando seu serviço de

mysql a aceitar qualquer origem de conexão. Não recomendando para servidores em PRODUÇÃO

Liberando conexões 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]

Reiniciando o serviço de mysql

Configuração no servidor Zabbix para criar ações de abertura e fechamento de

chamados

No servidor ZABBIX (Via Interface WEB)

PASSO1 : Vá para o [Menu Configurações] – [Aba Ações]

PASSO 2: Botão no canto superior direito [criar ação]

PASSO 3: Criaremos uma ação para Abertura de Chamado

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

PASSO 4: Na aba [Condições] também vamos deixar o padrão do Zabbix, reparem que essa condição é que

vai disparar a ação que vamos configurar, ou seja, quando o valor da trigger for igual a incidente, vamos

criar uma ação para abertura de um ticket no sistema de service desk, no nosso caso, o GLPI.

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

PASSO 5: Na aba [Ações], vamos configurar de acordo com os campos abaixo.

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

E na próxima janela, configuremos como segue abaixo:

Duração padrão do passo da operação vamos deixar como [60 segundos]

Tipo da operação: [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}"

Criando ação para fechamento de Chamado GLPI

Vamos usar a opção uma opção interessante no zabbix, chamado clone, onde vamos aproveitar algumas

configuração do ação criada anteriormente [Abrir Chamado]

1 PASSO: Clique na opção [Abrir Chamado]

Com a janela aberta, clique no botão [clonar], pronto, já estamos no clone e procederemos com as

configurações.

2 PASSO: Mude o nome para [Fechar Chamado]

3 PASSO: Mudar condição, agora o Valor da tigger = OK, ou seja, só vai ser disparado alguma ação caso

uma trigger esteja com esse status.

4 PASSO: Nessa tela só vamos mudar a opção: 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 INTEGRAÇÃO

SIMULANDO ABERTURA E FECHAMENTO DE TICKET AUTOMÁTICO

Vamos simular uma falha de conexão com o host Zabbix Server, para isso você deve adicionar o

template ICMP Ping no host a ser monitorado, conforme abaixo:

Esse template é constituído de 3 itens, e todos usam o protocolo ICMP para coleta,

especificamente o item ICMP ping é usado para saber a disponibilidade de um host (técnica não muito

confiável) .

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 não.

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 ação. Isso significa que o ticket foi aberto.

Clicando na data e horário do evento, obtemos informações 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 descrição do problema com o número do evento gerado

no Zabbix.

Visualização 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.

Visualização pelo dashboard personalizado, nenhum novo chamado.

Enjoy