Pular para o conteúdo
Todos os projetos
Full StackDadosDevOps

Monitor de Rede Municipal

Painel em tempo real da rede de uma prefeitura: SNMP, quedas, banda por porta e dois anos de histórico.

Tipo
Monitoramento de rede em tempo real
Status
Em produção
Ano
2026
Cliente
Prefeitura de Rio Pomba/MG
Papel
Autoria: requisitos, decisões operacionais e validação em produção
Tela principal do projeto Monitor de Rede Municipal

Código-fonte privado. Este estudo de caso apresenta as principais funcionalidades, a interface e a arquitetura em alto nível.

Visão geral

O que é este projeto.

Serviço Node.js que consulta dezenas de roteadores MikroTik e o firewall OPNsense a cada dez segundos, mostra o estado no painel, alerta com som e guarda histórico em SQLite — entregue como executável único para Windows.

Contexto

A Prefeitura de Rio Pomba/MG liga dezenas de prédios públicos — escolas, postos de saúde, secretarias e câmeras — por roteadores MikroTik do provedor. Não havia visão central: a queda era descoberta quando alguém ligava, e não existia histórico para cobrar o fornecedor.

Objetivo

Ver em segundos quem está fora, ser avisado sem fadiga de alarme, guardar histórico longo com disponibilidade honesta e instalar de forma trivial.

O problema

Sem mapa do que está fora, sem banda por ponto, sem histórico de quedas e com uma máquina Windows comum, sem toolchain pesada, para hospedar a solução. Os equipamentos são de terceiros: somente leitura.

A solução

Um coletor ICMP + SNMP v2c com concorrência limitada, máquina de estados anti-falso-positivo, cálculo de banda por delta de contadores de 64 bits, painel web em JavaScript puro com WebSocket e gráficos SVG, histórico em três camadas e empacotamento como executável único (Node SEA).

Pontos monitorados
Dezenas de prédios públicos
Ciclo de coleta
10 segundos
Retenção
Até 24 meses
Entrega
Executável único

Funcionalidades

O que o sistema faz.

Do cadastro simples ao que exige regra, transação e recuperação de falha.

  • Grade de pontos ordenada por gravidade, atualizada via WebSocket
  • Detecção de queda só quando ping e SNMP falham em dois ciclos
  • Banda real por ponto e consumo por porta
  • Perfil próprio para o firewall OPNsense da sede
  • Gráficos SVG de tráfego e latência, com faixas de queda e de lacuna
  • Alerta sonoro com reincidência em 1, 10, 30 e 60 minutos
  • Histórico em camadas: 48 horas, 90 dias e 24 meses
  • Modo parede para TV e tema claro/escuro
  • Cadastro de ponto a partir do endereço, com nome descoberto por SNMP

Interface

As telas do sistema.

Capturas reais do sistema em funcionamento. Clique para ampliar.

Painel em modo demonstração

Os três estados — no ar, instável e fora — com dados simulados, adequados para apresentação.

Painel em tema escuro

Leitura de NOC: estados, agregado da frota e atalhos.

Modo parede

Composição para TV em ambiente de operação.

Histórico de 30 dias

Gráfico espelhado de tráfego e latência, com faixas de queda, lacunas e p95.

Firewall da sede

Perfil OPNsense com consumo por interface.

Tráfego e latência

Gráficos SVG desenhados sem biblioteca externa.

Detalhe do ponto

Estado, disponibilidade e contexto operacional de um local.

Alerta sonoro

Aviso de queda com reincidência decrescente, sem fadiga permanente.

Conexão com o coletor

O painel avisa quando deixa de receber snapshots.

Adicionar ponto

Cadastro simples: o nome pode ser descoberto via SNMP.

Editar ponto

Ajuste de apelido e parâmetros sem escrever no equipamento.

Pontos desativados

Histórico preservado mesmo quando o ponto sai da coleta ativa.

Painel no celular

Leitura rápida dos estados em tela estreita.

Painel no tablet

Grade intermediária para acompanhamento em campo.

Por trás da aplicação

Como isso funciona por dentro.

A parte que o visitante não vê na tela: camadas, autenticação, dados, integração e operação.

Coleta

ICMP e SNMP v2c a cada 10 segundos, com concorrência limitada e perfis por fabricante.

Tempo real

WebSocket entrega o snapshot do ciclo ao painel.

Histórico

Rollups bruto → 5 min → 1 h. O que o coletor não viu não conta como queda do roteador.

Empacotamento

esbuild + Node SEA + postject. Um arquivo. Sem dependência de toolchain no destino.

Arquitetura

As camadas, de cima para baixo.

Representação em alto nível — sem expor detalhe de infraestrutura.

  1. Pontos de rede

    MikroTik e OPNsense, somente leitura

  2. Coletor Node.js

    ICMP + SNMP, máquina de estados

  3. SQLite

    Três camadas de histórico

  4. Painel web

    WebSocket, SVG, alerta sonoro

Fluxo

Como o processo acontece.

  1. 01

    Coleta

    Ping e SNMP em todos os pontos

  2. 02

    Estado

    No ar, instável ou fora — com anti-falso-positivo

  3. 03

    Painel

    Snapshot por WebSocket

  4. 04

    Alerta

    Som com reincidência decrescente

  5. 05

    Histórico

    Rollups e disponibilidade honesta

Stack

Tecnologias utilizadas.

Frontend

  • HTML5
  • CSS3
  • JavaScript
  • SVG

Backend

  • Node.js
  • Express
  • WebSocket

Banco de dados

  • SQLite

Infraestrutura

  • Windows
  • Node SEA

Integrações

  • SNMP v2c
  • ICMP
  • MikroTik
  • OPNsense

Destaques técnicos

Decisões que sustentam o sistema.

  • Somente leitura por desenho: nenhum SNMP SET nos equipamentos do provedor
  • Banda calculada com Counter64 e tempo real decorrido, descartando reboot
  • Disponibilidade que exclui lacunas do próprio coletor
  • SQLite nativo do Node 24, sem compilação de módulo nativo
  • Gráficos SVG feitos à mão, sem biblioteca e sem CDN
  • Executável único Windows com painel embutido e inicialização automática

Quer algo assim para o seu processo?

Me conte como funciona hoje. Respondo com uma leitura do problema e um caminho possível.