TRATATIVA DE ERROS DE SERVIDORES LINUX USANDO ZABBIX

Faculdade de Tecnologia de Osasco – Prefeito Hirant Sanazar

Curso Superior de Tecnologia em Redes de Computadores

TRATATIVA DE ERROS DE SERVIDORES LINUX USANDO ZABBIX

LUCCAS MONTEIRO CRUZ

Thiago Macedo Cruz

Orientador:
Acacio Luiz Siarkowski

Resumo

A grande complexidade dos ambientes da computação atuais torna a vida dos administradores de redes bem complexa devido à quantidade de informações e tratativas de erros que ocorre em sua administração de redes de computadores. Com virtualizações essa complexidade aumenta ainda mais, com a quantidade de tarefas que são atribuídas para cada ambiente virtual, sendo que alguns ambientes utilizam ferramentas específicas e tendo um maior número de equipamentos para ser monitorados, manter a quantidade de acesso se torna uma tarefa árdua e que induz a erros que podem causar sérios prejuízos.
Este trabalho propõe a criação de uma ferramenta para tratativas de erros que ocorrem diariamente em redes de computadores que são integradas através de uma ferramenta de monitoramento popular. A ferramenta de monitoramento escolhida foi a Zabbix que é amplamente empregada em organizações, uma ferramenta open source.

Palavras-chave: Linux. Zabbix. Pyqt5.

Abstract

The great complexity of today’s computing environments makes the life of network administrators very complex due to the amount of information and error handling that occurs in their management of computer networks. With virtualization, this complexity increases even more, with the number of tasks that are assigned to each virtual environment, with some environments using specific tools and having an amount of equipment to be monitored, maintaining the amount of access becomes an arduous task and that induces mistakes that can cause serious damage.
This work proposes the creation of a tool for dealing with errors that occur daily in computer networks that are integrated through a popular monitoring tool. The monitoring tool chosen was Zabbix, which is widely used in organizations, an open-source tool.

Keywords: Linux. Zabbix. Pyqt5.

Introdução

No inicio da rede de computadores ou como se chamava “centro de computação” que era em torno de duas ou três máquinas em uma empresa ou faculdade com um grande computador sendo o centro para processamento local de dados (KuroseRoss, 2014), agora esse modelo já ultrapassado vem sendo subsistido por redes de computadores no qual tem um grande número de computadores interconectados por uma única tecnologia (Tanenbaum, 2002 Cap.1).

Com o tempo, os servidores conectados a rede mundial de computadores vem cada vez mais provendo serviços críticos que necessitam de uma alta disponibilidade. Para um servidor ter alta disponibilidade é necessário que ele tenha a capacidade de combater falhas de forma automática, desta forma garantindo que o serviço fique no ar o maior tempo possível (Neves, 2012, p. 13).

Para combater falhas de forma automática, é necessário antes detectar a falha, existem softwares de monitoramento que fazem esse trabalho. Porém muitas delas não atuam para resolver o problema de forma automática. Neste trabalho será proposto uma ferramenta gráfica para administradores de redes de computadores para que possam programar o que o servidor deve fazer quando a ferramenta de monitoramento Zabbix acusar um erro.

Vamos utilizar a API do zabbix juntamente com o projeto pyqt-node-editor  de código livre sobre a licença MIT de Pavel Křupala e realizar a integração entre esses dois projetos.

Problema de Pesquisa

Hoje o mundo está ficando cada vez mais sistematizado, cada vez mais recursos de TI se tornam mais vital, a indisponibilidade de algum processo ou recurso vital pode impactar drasticamente no serviço prestado, podendo causar até mesmo sua parada (SANTOS, 2018, p. 4).

Outro problema é por exemplo um grande um ClusterGrupo computadores interligados que trabalham em conjunto, eles podem ser virtuais ou reais. Ferramentas como Promox, VMware ESXi e Microsoft Hyper-V são exemplos de ferramentas para criação de clusters com várias instancias virtualizadas ou empresas como o Santander que roda dockerSoftware de TI “Docker” é uma tecnologia de containerização para criação e uso de containers Linux®. Com o Docker, é possível lidar com os containers como se fossem máquinas virtuais modulares e extremamente leves. mais de 100 contêineres em produção (OpenShift, 2017). Gasta-se muito tempo resolvendo pequenos problemas e realizando tarefas que podem ser automatizadas.

Objetivo Geral

O projeto ao ser concluído terá uma ferramenta para o administrador de redes flexível, em que ele pode desenhar tratativas em uma interface gráfica, sem ter que necessariamente usar muito códigos escritos, e que fica visualmente mais amigável para o administrador da rede.

Ter uma ferramenta gráfica fácil de usar, com sua lógica usando a estrutura em nodes com na figura 1:

Figura 1 — Interface Gráfica do NodeEditor
Interface Gráfica do NodeEditorElaborado Pelos Autores (2020)

Esse programa vai tratar erros capturados por Zabbix usando sua lógica.

Objetivos Específicos

Os objetivos deste trabalho são:

  • Desenvolver um ambiente gráfico para executar rotinas ao detectar problemas
  • Integrar a ferramenta ao Zabbix

Metodologia

Pesquisa exploratória. Fonte de pesquisa secundária. Pesquisa Qualitativa. 

Referencial Teórico

(Basicamente documentação do qt 5, python. Livro consumindo api do zabbix.)

Introdução AO Zabbix

O Zabbix é uma solução de monitoramento distribuído de código aberto que nasceu oriundo de um software interno de banco em 1988 e em 2001 foi lançado sobre a conduta da licença (GPL), criado por Alexei Vladishev e atualmente é desenvolvido e suportado pelo Zabbix. SIA, atualmente o Zabbix está na versão 5.0 LTS monitorando muitos mais do que apenas rede, com ele é possível monitorar ativos de TI num geral, servidores e aplicações web (VLADISHEV, Alexei, 2020).

Com o Zabbix temos a possibilidade de monitorar vários parâmetros e integridade de uma rede e a integridade dos servidores como na figura 1.0. Podemos configurar alertas através de um mecanismo de notificações flexíveis através do e-mail para qualquer evento, permitindo reações a devidos erros na rede. Zabbix também oferece diversas recursos de relatórios baseados em dados armazenados que é ideal para planejamento de capacidade. A partir da versão 2.2.0 o Zabbix deu suporte a monitoramento de ambientes VMware.

O Zabbix e suas configurações são acessados através de um front-end baseado na web que se configurado adequadamente garante um ótimo recurso para o controle e integridade da rede e servidores, que podem ser avaliados em qualquer local garantindo assim um ótimo monitoramento da infraestrutura de TI (Zabbix, 2020).

API Zabbix

A API do Zabbix utiliza o protocolo JSON-RPC 2.0 que consiste em métodos separados para fazer requisições e receber respostas codificadas usando o formato JSON que é um formato de texto completamente independente de linguagem, mas usa convenções familiares aos programas da família C de linguagens, incluindo C, C++, C#, Java, JavaScript, Perl, Python e muitas outras como no exemplo da Figura 2.0, tornando JSON uma linguagem ideal de intercâmbio de dados (JSON, 2020).

Figura 2 — Requisição no formato JSON
Requisição no formato JSONConsumindo (2016)

A API do Zabbix foi introduzida a partir da versão 1.8. trazendo assim a criação de relatórios personalizados não disponíveis na interface web e possibilidade de desenvolvedores tirar proveitos disto, pode ser feito integração de software de terceiros. Deste modo vamos desenvolver nosso projeto de conclusão de curso utilizando este recurso para integrar com o node editor e conseguir fazer tratativas de erros comuns que ocorrem esporadicamente ou diariamente.

A API do Zabbix é fornecida como parte da interface web, a figura 2.1 demonstra como está presente em sua arquitetura.

Figura 3 — Arquitetura API zabbix
Arquitetura API zabbixConsumindo (2016)

Através da API podemos coletar um série de informações do zabbix pelos diversos métodos que possui a sua API, conseguimos por exemplo solicitar uma relação de hosts que o zabbix está monitorando, segue exemplo:

Figura 4 — Exemplo de Solicitação de Host Zabbix
Exemplo de Solicitação de Host ZabbixOs autores (2020)

Triggers

As Triggers são expressões lógicas de dados coletados que representam o estado do sistema em relação aos dados coletados, o estado de um triggers é recalculado toda vez que o Zabbix server recebe um valor que o afeta que pode ter os estados descritos na Tabela 1.0.

Tabela 1 — Tabela de estado das Triggers

ValorDescrição
OKEstado normal da Trigger.
IncidenteAlgo ocorreu, por exemplo, “CPU não iniciada”. 

Zabbix (2020)

Qt FrameWork

O Qt é um WidgetToolKit ou Framework, multiplataforma de código aberto, com suporte a diferentes linguagens de programação como, por exemplo C++ e Python.

Devido o seu suporte multiplataforma ele é encontrado em muitos sistemas operacionais e até mesmo sistemas embarcados, é utilizado por várias empresas como Samsung, Panasonic e Philips.

O QT é composto em módulos que são na verdade pequenas bibliotecas, a imagem a seguir mostra alguns dos principais módulos do QT:

Fluxograma 1 — Qt Essentials módulos
Qt Essentials módulosElaborado Pelos Autores (2020)

Cada módulo tem sua função, veja a seguir quais são:

Core: Módulo principal do QT, ele fornece suporte para processamento de eventos, meta-objetos, E / S de dados, processamento de texto e encadeamento. Ele também traz várias estruturas, como a estrutura Animação, a estrutura State Machine e a estrutura Plugin (Pavel StrakhovWitold WysotaLorenz Haas, 2018, p. 5) ;

GUI: Possui o suporte básico para geração de janelas, widgets para o usuário;

Widgets: Ele estende o módulo GUI, para gerar botões, caixas de texto, Labels, caixas de diálogo;

Network: Oferece suporte a redes IPV4 e IPV6 usando TCP e UDP;

Multimídia: Permite que os programadores acessem arquivos de áudio e vídeo para reproduzir ou gravar conteúdo;

SQL: Possibilita a manipulação de bancos de dados SQL.

Como pode ver o QT é um Framework poderoso com muitos módulos além dos descritos. Ele contém uma gama enorme de módulos que facilitam a sua usabilidade.

Ele é muito fácil para trabalhar com interfaces, veja um exemplo de um programa simples feito em Python usando o QT:

Figura 5 — Exemplo de Código em Python usando QT
Exemplo de Código em Python usando QTElaborado Pelos Autores (2020)

 Esse código serve para gerar uma janela  com uma caixa, note o resultado na figura 7:

Figura 6 — Janela gerada usando QT
Janela gerada usando QTElaborado Pelos Autores (2020)

O QT juntamente com python é muito simples e poderoso ao mesmo tempo, é a uma escolha muito boa para desenvolver o projeto.

Programa de Tratativa de erro com estrutura node Editor

A ideia com o protótipo em sua essência é juntar o 3 ferramentas, zabbix, shell script e estrutura de nó. Em uma unica ferramenta fácil de manipular, visualmente simples de compreender. Veja na imagem a seguir a interface.

Figura 7 — Proposta para interface
Proposta para interfaceElaborado Pelos Autores

Como pode ver nessa proposta para a interface vai existir vários menus, pois a ideia é que ele seja bastante “volátil” e “procedural”.

No canto direito você pode perceber que existe um menu chamado “Adicionar” nele será listado por categoria todos os Nodes que podem ser criados e adicionados na grid.

Tipos de Nodes

Nodes de entrada

Figura 8 — Node de login zabbix
Node de login zabbixElabora Pelos Autores (2020)

Esse node vai servir para pedir as credenciais do zabbix para poder utilizar a api do zabbix.

Figura 9 — Node para capturar trigres zabbix
Node para capturar trigres zabbixElabora Pelos Autores (2020)

Figura 10 — Node para execução de Shell Script
Node para execução de Shell ScriptElabora Pelos Autores (2020)

Exemplo de aplicabilidade

Imagine a seguinte situação em seu servidor linux.

O seu servidor é de aplicação web que usa o apache, e ele está sendo monitorado pelo zabbix.

Em um determinado momento o zabbix acusa que o serviço apache não está funcionando. Qual seria então a sua primeira tentativa para restabelecer o apache? Talvez você tente reiniciar o serviço com o comando;

#service apache2 restart

Talvez isso não resolva o problema, porém, vamos trabalhar com a hipótese que o apache voltou a operar quando o comando foi executado. Note, para que essa tratativa fosse feita, foi necessário a intervenção de alguém que executasse o comando. Não seria então possível desenvolver algo que trata-se esse erro automaticamente?

Se nos trazermos essa estrutura para um estrutura de nós, talvez fique da seguinte forma:

Figura 11 — Exemplo de aplicabilidade do Node
Exemplo de aplicabilidade do NodeElaborado Pelos Autores (2020)

Primeiramente deve se informar o login do zabbix para que a api possa trabalhar, o nó “Zabbix – Erro” será o responsável de monitorar e acionar uma sequência de nó quando um incidente acontecer, no caso foi selecionado o incidente, quando o incidente “Apache2 is down” acontecer, o nó SystemD será acionado e executará o comando:

#service apache2 restart


Ficou muito mais fácil, e essa é a ideia, simplificar a administração de servidores linux.




Conclusão

Aqui você irá escrever a conclusão do seu trabalho.

Referências

JSON. JSON Data Interchange Standard. U.S.A. 1 p. Disponível em: https://www.json.org/json-en.html. Acesso em: 27 mai. 2020.

KuroseJim ; RossKeith . Redes de computadores e a internet: uma abordagem top-down. 6. ed. Pearson, 2014.

OpenShift e Docker – Diolinux Entrevista Jeferson Fernando, canal Linux Tips. Direção de DioLinux. DioLinux, 2017. Entrevista (5). Disponível em: https://www.youtube.com/watch?v=xUoC0wgGgW4&ab_channel=Diolinux. Acesso em: 28 nov. 2020.

Os autores. própria. 2020.

Pavel Strakhov; Witold Wysota; Lorenz Haas. Game Programming using Qt 5 Beginner’s Guide. 2. ed. [s.l.]: Packt, 2018.

SANTOSARTHUR SILVA. MONITORAMENTO DE REDES USANDO O ZABBIX. Porto Alegre, 2018. Trabalho de Conclusão de Curso (TÉCNICOEM INFORMÁTICA)Faculdade de Tecnologia Alcides Maya . Disponível em: http://raam.alcidesmaya.com.br/index.php/projetos/article/view/82/80. Acesso em: 28 nov. 2020.

Diego de ; NevesVinicius Hiuri. CLUSTER DE ALTA DISPONIBILIDADE EM LINUX. Santa Bárbara d’Oeste, 2012. Trabalho de Conclusão de Curso (Redes de Computadores)Faculdade Politec . Disponível em: http://www.mariolb.com.br/blog/_static/TCC/TCC-ClusterAltaDisponibilidadeEmLinux-Diego-Vinicius-2012.pdf. Acesso em: 28 nov. 2020.

Tanenbaum Andrew S.. Redes de computadores . 4. ed. Amsterdam, Holanda: Editora Campus, 2002.

Visão Geral. In: Lima Janssen dos Reis . Consumindo a API do Zabbix com Python. 1. ed. Rio de Janeiro: Brasport, 2016, p. 4-5.

Visão Geral. In: Lima Janssen dos Reis . Consumindo a api do zabbix com python. Rio de Janeiro: Brasport, 2016. cap. 1, p. 5.

VladishevAlexei . Entrevista com Alexei Vladishev, CEO da Zabbix: Zabbix. Pense em TI. 2020. 1 p. Disponível em: https://penseemti.com.br. Acesso em: 20 mai. 2020.

Zabbix. What is Zabbix: Metric collection. Zabbix. [s.l], 2020. Disponível em: https://www.zabbix.com/features. Acesso em: 25 jun. 2020.

APÊNDICE A — Subtitítulo do apêndice

Apêndices tem objetivo de melhorar a compreensão textual, ou seja, completar ideias desenvolvidas no decorrer do trabalho.

ANEXO A — Subtitítulo do anexo

Anexos são elementos que dão suporte ao texto, mas que não foram elaborados pelo autor.

feito

Use agora o Mettzer em todos
os seus trabalhos acadêmicos

Economize 40% do seu tempo de produção científica