rockchico / mapbix

Mapa integrado a API do Zabbix, mostrando geograficamente a localização e os problemas de cada grupo de hosts.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Logo

Mapbix

Mapa integrado a API do Zabbix, mostrando geograficamente a localização e os problemas de cada grupo de hosts.

Tela Inicial

Conteúdo
  1. Sobre o projeto
  2. Iniciando
  3. Uso
  4. Roadmap
  5. Licença
  6. Contato

Sobre o projeto

A principal característica da aplicação é a exibição das informações do Zabbix de uma forma geograficamente distribuída. É possível cadastrar os grupos de hosts do Zabbix que serão exibidos e atribuir coordenadas de latitude e longitude. Além disso é permitido especificar o host principal do grupo e os itens que representam o tráfego de upload/download bem como a disponibilidade relacionada a perda de pacotes/tempo de resposta de cada grupo.

Tela cadastro grupo

Tela lista grupos cadastrados

O host principal é, por exemplo, um roteador ou switch que fornece conexão externa do grupo. Desta forma, quando há um problema neste equipamento com a severidade “Desastre”, o mapa exibe um alerta piscante para chamar a atenção. Já os itens relativos ao tráfego e disponibilidade são utilizados para a montagem dos gráficos de banda e disponibilidade de cada grupo.

Após o cadastro os grupos são apresentados na "Lista de Grupos", acessível através do segundo botão na barra superior. São exibidos o nome e um indicador da severidade de host mais grave encontrada dentro daquele grupo.

Tela lista grupos

Ao clicar em um item da lista, o mapa é apontado automáticamente para localização do grupo. São exibidas também a lista de todos os problemas, gráficos e informações.

Tela informações do grupo

O mapa consulta a API do zabbix a cada minuto, obtendo assim as informações referentes aos hosts e triggers, de acordo com os grupos configurados. Desta forma a aplicação faz somente requisições ao zabbix através do back-end, salvando as informações em uma espécie de cache. Com isso ao abrir o mapa no navegador, a aplicação cliente consulta os dados do cache, ao invés de fazer uma requisição direta à API do Zabbix.

Construído com

Os principais frameworks e bibliotecas utilizados foram os seguintes:

Iniciando

Para rodar e configurar uma cópia local da aplicação siga os seguintes passos:

Pré-requisitos

  • Antes de tudo é necessário um ambiente Zabbix. Se você não possui um ambiente funcional, uma alternativa é a utilização das imagens Docker disponibilizadas pela própria Zabbix SIA. Um completo passo a passo da instalação e utilização pode ser vista neste artigo.

  • A aplicação pode ser instalada através de containers Docker. São disponibilizados arquivos docker-compose e Dockerfile que descrevem o processo de build das imagens e inicialização do container. Desta forma se faz necessário a instalação prévia do Docker Engine, de acordo com o seu sistema operacional.

  • Outra maneira possível é a instalação local da aplicação. Assim, como prerequisitos serão necessários Node.js versão 14.06 ou superior e o gerenciador de pacotes Yarn.

Instalação Local

Considerando que o Node.js e Yarn já estão instalados.

  1. Clonar o repositório;

    git clone https://github.com/rockchico/mapbix.git
  2. Instalar pacotes;

    cd mapbix
    yarn install
  3. Configurar .env;

  • Faça uma cópia do .env.exemplo para .env.production

    cp .env.exemplo .env.production
  • Criar token Mapbox e configurar mapa.
    Criar uma conta no site Mapbox e obter um token de acesso. Após o cadastro no site, na sessão Tokens de Acesso é possível criar um novo token para utilização.

    MAPBOX_TOKEN=<token mapbox>
  • Informar o ponto central, latitude e longitude no formato graus e decimais do grau, onde o mapa deve ser centralizado;

    Ex: latitude: -14.235004 e longitude: -51.925282

    MAP_CENTER_LATITUDE=<latitude>
    MAP_CENTER_LONGITUDE=<longitude>
  • Setar a porta que a aplicação deve ouvir e o nome que será exibido na barra superior do mapa;

    PORT=
    APP_NAME=
  • Configurar o usuário e senha para login na aplicação.

    APP_USER=mapbix
    APP_PASSWORD=mapbix
  • Especificar NEXTAUTH_URL com o URL canônica do site em produção e a NEXTAUTH_JWT_SECRET, string utilizada para fazer o hash dos tokens, assinar cookies e gerar as chaves criptográficas.

    NEXTAUTH_URL=http://localhost:3030
    NEXTAUTH_JWT_SECRET=d879f9ddb3e6e178cfa0d4c425265852
  • Por fim é ncessário informar dados de acesso a API do Zabbix

    ZABBIX_API_URL=http://<servidor>:<porta>/api_jsonrpc.php
    ZABBIX_API_USER=<user>
    ZABBIX_API_PASSWORD=<senha>
  • É possível ainda especificar um filtro de grupos, para limitar o uso dentro da aplicação.

    Ex: Busca somente grupos cujo nome inicia por Matriz ou Filial

    ZABBIX_API_GROUPS_SEARCH=Matriz*,Filial*
  1. Gerar um build da aplicação
yarn build
  1. Iniciar o servidor
yarn start-server

Após este processo o Mapbix pode acessado usando http://< host >:< porta >

Instalação via container

Considerando que o docker engine já está instalados.

  1. Clonar o repositório;

    git clone https://github.com/rockchico/mapbix.git
  2. Configurar os parâmetros do .env, conforme o item 4. da seção anterior.

  3. Rodar a aplicação ;

cd mapbix
docker-compose -f docker-compose.prod.yml --env-file .env.production up

Uso

Segue um pequeno vídeo mostrando a criação de um grupo no zabbix e como fazer com que ele seja exibido no Mapbix.

Oq1lxfZoko.mp4

Primeiramente é criado o grupo "Filial Estrela" (Estrela é a minha cidade natal 😊 ) no Zabbix e em seguida o host "Roteador_Estrela" é associado a este grupo.

A partir disto, no Mapbix, já é possível cadastrar este grupo para exibição no mapa. Após efetuar login na aplicação, com as credenciais informadas nos parâmetros de configuração APP_USER e APP_PASSWORD, clicamos em "ADICIONAR GRUPO".

No formulário de cadastro são informados o grupo, o host principal, os itens referentes ao histórico dos gráficos e as informações de latitude e longitude.

Feito isso, o grupo já está registrado. Basta agurdar a sincronização do cache, em torno de 1m, para que o grupo seja exibido no Mapbix.

Roadmap

  • Tradução para o Inglês;
  • Migrar o código para TypeScript;
  • Autenticar acesso da aplicação através da API Zabbix.
  • Permitir a configuração da quantidade de valores do histórico que são utilizadas para montagem dos gráficos
  • Permitir a configuração do tempo de atualização do cache Mapbix
  • Ao excluir um grupo no Zabbix, removê-lo do Mapbix se ele estiver cadastrado
  • Melhorar o tratamento de erros da aplicação

Licença

MIT © Rockchico

Contato

Se você curtiu o projeto e gostaria de fazer alguma personalização ou adaptação para o seu ambiente de monitoramento, segue aí o meu contato:

Francisco Schwertner - rockchico@gmail.com

Requisitar funcionalidades / Reportar Bugs

About

Mapa integrado a API do Zabbix, mostrando geograficamente a localização e os problemas de cada grupo de hosts.

License:MIT License


Languages

Language:JavaScript 98.7%Language:CSS 1.0%Language:Shell 0.3%