- Sobre
- Principais Recursos
- Screenshots
- Arquitetura
- Stack Tecnológica
- Estrutura do Projeto
- Rodando Localmente
- Variáveis de Ambiente
- Roadmap
- Contribuição
- Licença
O OrbNOC é uma plataforma moderna de Network Operations Center (NOC) desenvolvida para monitoramento contínuo de infraestrutura de rede, servidores e serviços críticos.
Projetado para provedores de internet, equipes de operações, MSPs e administradores de sistemas, o OrbNOC fornece uma visão centralizada da saúde operacional do ambiente através de dashboards em tempo real, alertas inteligentes e ferramentas avançadas de diagnóstico.
O backend é escrito em Python (FastAPI). O contrato da API REST e o protocolo WebSocket (Socket.IO) são compatíveis com o socket.io-client usado pelo frontend em Next.js.
✅ Monitoramento em tempo real ✅ Alertas automatizados ✅ Diagnóstico integrado ✅ Dashboard operacional moderno ✅ Wallboard para NOC ✅ Arquitetura escalável
- Disponibilidade de Hosts (ICMP + fallback TCP)
- Monitoramento de Portas
- Latência
- Jitter
- Packet Loss
- SLA
- Uptime
- Alertas em tempo real
- Integração Telegram
- Histórico de incidentes
- Reconhecimento de alertas
- Escalonamento de criticidade
- KPIs em tempo real
- Gráficos interativos
- Filtros avançados
- Busca instantânea
- Ordenação dinâmica
- Atualização via WebSocket
- React Flow
- Layout Hierárquico
- Layout Radial
- Layout Grid
- Status visual dos dispositivos
- Links animados
- Ping Avançado
- Traceroute
- DNS Lookup (com reverse lookup via registro PTR)
- TCP Port Scanner
- Diagnóstico Inteligente
- Modo TV
- Atualização automática
- Visualização otimizada para NOC
- Exibição de incidentes críticos
graph TD
A[Browser] --> B[Next.js Frontend]
B --> C[Socket.IO]
B --> D[REST API]
C --> E[Python Backend / FastAPI]
D --> E
E --> F[(PostgreSQL)]
E --> G[Monitor Engine]
E --> H[Alert Engine]
G --> I[TCP / ICMP Checks]
G --> J[Latency Monitoring]
H --> K[Telegram]
- Next.js 14
- React 18
- TypeScript
- Tailwind CSS
- Recharts
- React Flow
- Socket.IO Client
- Python 3.12
- FastAPI
- asyncpg (driver PostgreSQL assíncrono)
- python-socketio
- PyJWT + bcrypt
- httpx (alertas Telegram)
- dnspython (diagnóstico DNS)
- PostgreSQL
- Docker / Docker Compose (local)
OrbNOC/
├── backend-python/ # Backend em Python (FastAPI + Socket.IO)
│ ├── app/
│ │ ├── app.py # Criação da app FastAPI (CORS, rotas, logger)
│ │ ├── config.py # Variáveis de ambiente
│ │ ├── database.py # Pool asyncpg, criação de tabelas, seed do admin
│ │ ├── security.py # Hash de senha + JWT
│ │ ├── auth_dependency.py # Dependência de autenticação das rotas
│ │ ├── sockets.py # Servidor Socket.IO
│ │ ├── routes/ # auth, devices, alerts, diagnostic, public
│ │ └── services/ # ping, dns, telegram, monitor
│ ├── server.py # Entrypoint (uvicorn + loop de monitoramento)
│ ├── requirements.txt
│ ├── .env.example
│ └── Dockerfile
├── frontend/ # Next.js
│ └── .env.example
├── docker-compose.yml
└── README.md
- Docker Desktop instalado e rodando (para a Opção 1)
- Ou, para rodar sem Docker: Python 3.11+, Node.js 20+ e PostgreSQL instalados localmente
Sobe o PostgreSQL, o backend e o frontend juntos, já configurados para se falarem via localhost. As tabelas do banco e um usuário de demonstração são criados automaticamente na primeira inicialização.
docker compose up --buildAcesse:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- PostgreSQL: localhost:5433 (usuário
postgres, senhapostgres, bancoorbnoc)
Login de demonstração (criado automaticamente):
usuário: admin
senha: admin123
Para parar:
docker compose downPara parar e apagar os dados do banco (útil se algo ficou inconsistente e você quer recomeçar do zero):
docker compose down -v| Sintoma | Causa provável | Solução |
|---|---|---|
Conflict. The container name "/orbnoc-db" is already in use |
Sobrou container de uma execução anterior | docker compose down e rode up --build de novo |
Erro 500 ao logar / relation "..." does not exist nos logs |
Backend subiu antes do Postgres estar pronto | Já tratado via healthcheck + retry automático; se persistir, rode docker compose down -v para recriar o banco do zero |
Falha ao baixar imagens (no such host, registry-1.docker.io) |
Problema de DNS/rede do Docker Desktop | Reinicie o Docker Desktop, ou configure DNS manual (8.8.8.8 / 1.1.1.1) em Settings → Docker Engine |
cd backend-python
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# edite .env e ajuste DATABASE_URL para o seu PostgreSQL local
python server.pyRequer Python 3.11+ e o comando
pingdisponível no sistema (no Linux, pacoteiputils-ping; no Windows/macOS já vem instalado por padrão).
cd frontend
npm install
npm run devPor padrão o frontend já aponta para http://localhost:3001 (backend local), sem precisar configurar nada — mas se quiser ser explícito:
cd frontend
cp .env.example .env.local| Variável | Padrão | Descrição |
|---|---|---|
PORT |
3001 |
Porta HTTP do backend |
JWT_SECRET |
(valor de dev, trocar em produção) | Segredo usado para assinar os tokens JWT |
DATABASE_URL |
— | String de conexão PostgreSQL (postgresql://user:pass@host:5432/db) |
DATABASE_SSL |
false |
true para exigir SSL (bancos remotos) |
FRONTEND_URL |
http://localhost:3000 |
Usado no CORS do WebSocket |
MONITOR_INTERVAL_MS |
10000 |
Intervalo entre varreduras de monitoramento |
- Dashboard Operacional
- Alertas Telegram
- Topologia de Rede
- Diagnóstico Integrado
- Wallboard
- Backend em Python (FastAPI)
- Multi-Tenant
- SNMP Monitoring
- NetFlow
- Syslog Server
- Mobile App
- Dark/Light Themes
Contribuições são bem-vindas.
- Fork o projeto
- Crie uma branch
- Faça commit das alterações
- Abra um Pull Request
Distribuído sob a licença MIT.



