Mapa integrado a API do Zabbix, mostrando geograficamente a localização e os problemas de cada grupo de hosts.
Conteúdo
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.
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.
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.
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.
Os principais frameworks e bibliotecas utilizados foram os seguintes:
Para rodar e configurar uma cópia local da aplicação siga os seguintes passos:
-
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.
Considerando que o Node.js e Yarn já estão instalados.
-
Clonar o repositório;
git clone https://github.com/rockchico/mapbix.git
-
Instalar pacotes;
cd mapbix yarn install
-
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*
- Gerar um build da aplicação
yarn build
- Iniciar o servidor
yarn start-server
Após este processo o Mapbix pode acessado usando http://< host >:< porta >
Considerando que o docker engine já está instalados.
-
Clonar o repositório;
git clone https://github.com/rockchico/mapbix.git
-
Configurar os parâmetros do .env, conforme o item 4. da seção anterior.
-
Rodar a aplicação ;
cd mapbix
docker-compose -f docker-compose.prod.yml --env-file .env.production up
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.
- 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
MIT © Rockchico
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