Giter VIP home page Giter VIP logo

zbx_indicadores_ti_descarte's Introduction

Indicadores de TI - Gestão e Descarte de Eventos

Customização do Zabbix para aferição de indicadores de disponibilidade de serviços de TI, com opção de descarte parcial ou total de eventos do cálculo de disponibilidade e geração de relatórios em PDF.

Essa solução foi apresentada por mim na Zabbix Conference Latin America 2018. Se você não assistiu, pode conferir a apresentação em PDF aqui.

A seguir, procedimentos para instalação e utilização das customizações apresentadas.

1) Pré-requisitos

Antes de mais nada, é importante ressaltar que a customização apresentada aqui foi desenvolvida para a versão 3.2.7 do Zabbix e PHP v7.0. Funciona normalmente para outras versões 3.2.x do Zabbix. Porém, se você tem a versão 3.4, talvez tenha que fazer adaptações no código.

Outra questão importante é que as customizações funcionam buscando um padrão definido de estrutura da árvore de IT Services (Serviços de TI) e nomenclatura de grupos de hosts, e foram desenvolvidas baseadas na estrutura existe no Serpro, onde trabalho. A estrutura adotada e que vai funcionar em todas as customizações é a seguinte:

1.1 Serviços de TI

No menu configurações, Serviços de TI do Zabbix, você acessa a parte de configuração da árvore de TI Services. A partir da raiz, a árvore deve seguir o seguinte padrão: São 6 níveis hierárquicos, sendo que a trigger de medição está associada ao último nível, o nome da trigger.

Serviços 
    <SERVIÇO>
        <CLIENTE>
            <GRUPO-DE-HOSTS>
                <HOST>
                    <TRIGGER>

Veja o exemplo abaixo:

1.2 Grupos de Hosts

Os grupos de hosts do Zabbix também devem seguir a um padrão:

UF_SERVIÇO_CLIENTE

Onde:

  • UF = Unidade federativa de localização do host (Ex. SP, DF, BA, etc)
  • SERVIÇO = Nome ou sigla do serviço (WAN, LAN, IDC, etc)
  • CLIENTE = Nome ou sigla do cliente

Exemplo: SP_WAN_SERPRO

Caso você use padrões diferentes desses, você pode alterar as referências nos arquivos PHP do frontend e scripts.

2) Interface Indicadores de TI

2.1) Instalação dos arquivos da interface customizada

  • Localizar o filesystem de instalação do frontend do Zabbix (por exemplo /var/www/zabbix);
  • Copiar para esse filesystem os arquivos de dentro da pasta frontend:
    • indicadores_ti.php
    • descarte_parcial.php
    • events.php
  • Copiar para dentro do subdiretório /include do frontend do Zabbix o arquivo funcoes_customizadas.php.

2.2) Customização do Menu do Zabbix

Há 3 formas de fazer a customização do menu do Zabbix para incluir o item "Indicadores de TI", que acessará a interface customizada de mesmo nome:

2.1.1) A maneira mais simples: Se você não possui nenhuma customização de menu no seu Zabbix, basta copiar o arquivo menu.inc.php para dentro do subdiretório /include do frontend do Zabbix, substituindo o existente. Mas lembre-se: somente se não tiver nenhuma customização no menu.

Se tiver customizado seu menu, você deverá inserir no arquivo o apontamento para a nova customização. Voce pode fazer isso de duas maneiras:

2.1.2) Executando o patch do menu. Baixe o arquivo menu.patch para o subdiretório /include do frontend do Zabbix e depois execute, nesse local, o seguinte comando:

patch < menu.patch

2.1.3) Caso essa opção não funcione pra você, deverá inserir manualmente a informação no arquivo de menu.

  • Edite o arquivo menu.inc.php, que está dentro da pasta /include do seu frontend.
  • Localize o índice do array com o arquivo srv_status.php e, ao final dessa cadeia, insira a cadeia abaixo, de modo que fique como na imagem a seguir.
# MENU CUSTOMIZADO
                                [        
                                        'url' => 'indicadores_ti.php',
                                        'label' => _('Indicadores de TI'),
                                        'sub_pages' => ['events.php', 'descarte_parcial.php']
                                ],
#

3 Script de sincronismo de IT Services

(Execute primeiro em laboratório para testar o comportamento)

Copie todo o conteúdo da pasta scripts para uma pasta scripts de seu servidor.

Para executar, vá para o diretorio scripts e execute da seguinte forma:

php sincronizaservico.php URL CLIENTE

Onde:

  • URL: Endereço do servidor Zabbix. Pode ser o IP ou a URL mesmo (sem http ou https).
  • CLIENTE: Nome ou sigla do cliente, exatamente como está nos IT Services e nos grupos de host

Exemplo:

php sincronizaservico.php 10.0.0.1 VIVO

Notas:

  • Na linha 18 do script tem uma chamada API que acessa o Zabbix através dessa URL informada. Observe que no comando a URL está com o protocolo https. Caso seu servidor seja http, altere nessa linha.
  • Também nesse comando, você deve informar o usuário do Zabbix que tem acesso API aos hosts e a senha de autenticação desse usuário, substituindo nos campos 'USER' e 'PASSWORD'.

4 Scripts para geração de Relatório de Eventos em PDF

Os arquivos necessários já foram copiados dentro da pasta scripts no Item 3. O script a ser executado é o relatorio_Zabbix.php. Ele tem chamadas includes para outros arquivos que estarão na mesma pasta. A sintaxe de execução é a seguinte:

php relatorio_Zabbix.php URL CLIENTE DATA-INICIO DATA-FIM SERVIÇO [Descartes]

Onde:

  • URL: Endereço do servidor Zabbix. Pode ser o IP ou a URL mesmo (sem http ou https).
  • CLIENTE: Nome ou sigla do cliente, conforme está nos IT Services e Hostgroups;
  • DATA-INICIO: Data de inicio do período de aferição, no formato DD/MM/AAAA. Ex: 01/05/2018;
  • DATA-FIM: Data de fim do período de aferição, no formato DD/MM/AAAA. Ex: 31/05/2018.
  • SERVIÇO: Nome ou sigla do serviço, conforme está nos IT Services e Hostgroups. Ex: LAN, WAN, IDC, etc.;
  • [Descartes]: Parâmetro opcional. Se informado, serão listados no relatório os eventos que foram descartados.

Exemplo:

php relatorio_Zabbix.php servidor.zabbix ITAU 11/04/2018 10/05/2018 WAN

Notas:

  • Por definição, a data de inicio do período de aferição começa À 0h0min e a data de fim do período termina 23h59min;
  • Na linha 242 do arquivo gera_pdf.php tem uma chamada API que acessa o Zabbix através da URL informada. Observe que no comando a URL está com o protocolo https. Caso seu servidor seja http, altere nessa linha;
  • Também nesse comando, você deve informar o usuário do Zabbix que tem acesso API aos hosts e a senha de autenticação desse usuário, substituindo nos campos 'USER' e 'PASSWORD';
  • Você deve criar, na raiz da pasta em que tiver o script, um subdiretório chamado "relatorios" e dentro dele, um subdiretório para cada serviço e dentro de cada serviço, um subdiretório para cada cliente desse serviço. É nesse subdiretório que os arquivos em PDF serão gerados. Deve ficar assim:
/scripts/relatorios/SERVICO/CLIENTE
  • O script também gera, além do PDF, um arquivo no formato CSV, com os mesmos dados, no mesmo local;
  • Você deve criar, na raiz da pasta em que tiver o script, um subdiretório chamado "imagens" e dentro dela, inserir arquivos de imagem com o logotipo dos clientes. O nome do arquivo deve ser o nome ou sigla do cliente, como está nos IT Services e grupos do Zabbix e com a extensão .jpg.

Lembrando mais uma vez que a geração dos dados pode não funcionar perfeitamente no seu ambiente, porque o script foi desenvolvido especificamente para as regras de negócio do Serpro. Talvez tenha que fazer mais alguns ajustes para o seu ambiente. O script foi desenvolvido em PHP e usando a biblioteca livre FPDF e a API do Zabbix.

  • No site da FPDF tem um tutorial para ajudar na utilização da biblioteca e scripts de exemplos.
  • No site do Zabbix tem uma documentação da API.
  • Os arquivos do subdiretório PhpZabbixApi_Library são da biblioteca desenvolvida em PHP para acesso à API do Zabbix por scripts.

FEEDBACK

Baixou? Usou? Funcionou? Deu pau? Consegui adaptar ao seu ambiente?

Me dê seu feedback!

Muito Obrigado!!!

zbx_indicadores_ti_descarte's People

Contributors

ramosluciano avatar

Watchers

James Cloos avatar Victor Hugo Assunção avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.