Plataforma Enterprise de Observabilidade de Rede, NOC Telemetry & Gestão Automatizada de Incidentes com GLPI
O InfraWatch é uma solução completa de observabilidade e monitoramento de infraestrutura de missão crítica, desenhada para atender provedores de telecomunicações, operadoras e empresas com infraestruturas distribuídas (como RCS Angola e Exija Serviços).
Diferente de ferramentas de monitoramento genéricas ou painéis estáticos, o InfraWatch implementa uma arquitetura orientada a eventos (Event-Driven Architecture) com desacoplamento rigoroso entre a coleta de métricas, o processamento de regras/alarmes e a apresentação em tempo real para múltiplos perfis de usuários.
O sistema é construído como um monólito modular orientado a domínio (DDD) subdividido em 3 processos desacoplados que compartilham o mesmo repositório e infraestrutura de mensageria:
flowchart TD
subgraph ClientLayer["Camada de Apresentação"]
NOC["NOC Command Center\n(React/Vite)"]
TV["Wallboard TV Mode\n(Auto-rotate)"]
ClientPortal["Portal do Cliente\n(Sanitized View)"]
end
subgraph CoreServices["Processos do Sistema"]
API["infrawatch-api\nFastAPI (Porta 8000)\nREST, SSE, Auth RBAC"]
ProbeWorker["infrawatch-probe-worker\nAsync Probes ICMP/HTTP/DNS\nEngine de Coleta"]
IntegrationWorker["infrawatch-integration-worker\nGLPI REST Consumer\nWebhooks & Alertas"]
end
subgraph DataBus["Mensageria & Armazenamento"]
RedisBus[("Redis Streams\nBus de Eventos & Consumer Groups")]
DB[("PostgreSQL / TimescaleDB\nSLA, Topologia, Incidentes & Partições")]
GLPI[("GLPI ITSM API\nAbertura de Chamados")]
end
ClientLayer -->|REST & SSE| API
ProbeWorker -->|Publica Telemetria| RedisBus
RedisBus -->|Consome Eventos| API
RedisBus -->|Consome Alertas| IntegrationWorker
IntegrationWorker -->|Abertura & Sync de Tickets| GLPI
API -->|Leitura & Gravação| DB
ProbeWorker -->|Grava Métricas| DB
IntegrationWorker -->|Atualiza Tickets| DB
- Desacoplamento por Processos (ADR-001): A API HTTP não executa coletas pesadas de rede; todo o probing assíncrono reside no
infrawatch-probe-worker. - Eliminação de BackgroundTasks em Favor de Consumers (ADR-003, ADR-020):
background_tasks.add_taskfoi eliminado para evitar vazamentos de sessão assíncrona (AsyncSession). Todas as integrações externas e notificações operam via Consumers no Redis Streams com DLQ (Dead-Letter Queue). - Resiliência Transacional com Outbox Pattern (ADR-009): Nenhuma sincronização com sistemas externos (GLPI, Webhooks) bloqueia o fluxo operacional da API. Eventos são persistidos atomicamente em banco e processados pelo worker com política de retentativa exponencial.
- Isolamento Multitenant Rigoroso com Papel
CLIENT_VIEWER(ADR-012): Clientes corporativos visualizam exclusivamente métricas e SLAs de seus próprios equipamentos através de uma visão sanitizada (sem exposição de IPs de gerência interna ou topologias reservadas). - Janelas de Manutenção & Isenção de SLA (ADR-011): Períodos de manutenção programada silênciam alarmes sonoros e são isentos do cômputo de penalização nos relatórios de SLA contratuais.
- Hardening de Segurança (ADR-021 a ADR-025):
- Dual-Key Rate Limiting (IP + E-mail) para mitigar ataques de força bruta distribuídos.
- Respostas de login com tempo constante neutro (~10ms) para neutralizar ataques de temporização e enumeração de usuários.
- Validação de Trusted Proxies no reverse proxy / Uvicorn.
- Endpoint
/metricsdo Prometheus protegido por credenciais dedicadas de observabilidade.
- 📡 Micro-Probes Distribuídos: Probes assíncronos ICMP (Ping), HTTP/HTTPS (Status, Latência, TLS) e DNS com suporte a limiares de degradação dinâmicos (Degraded State por jitter e perda intermitente de pacotes).
- 🎫 Integração Bidirecional Nativa com GLPI: Abertura automática de chamados para incidentes de severidade
CRITICAL, rastreamento de IDs de chamados e sincronização periódica de status. - 📊 Cálculo de SLA em Tempo Real: Motor analítico com cálculo de MTBF, MTTR, disponibilidade percentual mensal (ex: 99.9%) e geração de relatórios executivos em PDF.
- 🖥️ Cockpit NOC & Modo TV: Interface de alta densidade no padrão Dark Slate, gráficos de telemetria sem recarregamento de página via SSE (Server-Sent Events) e modo rotação automática para monitores de parede no centro de operações.
- 🏢 Portal do Cliente Sanitizado: Visão simplificada e transparente para clientes corporativos (bancos, empresas e operadoras parceiras) consultarem a saúde de seus enlaces contratados.
Toda a documentação técnica, contratos de API, especificações e planos de implementação estão organizados no diretório docs/:
| Documento | Descrição |
|---|---|
| ARCHITECTURE.MD | Arquitetura de software DDD, topologia de processos, barramento de eventos e fluxos |
| 01-PRD.md | Documento de Requisitos de Produto (Escopo, Personas, SLAs, Métricas) |
| 02-TRD.md | Especificação Técnica (Contratos de API, Integração GLPI, Redis Streams, SSE) |
| 03-APP_FLOW.md | Fluxos de Aplicação (NOC, Triagem de Incidentes, Manutenção, Portal do Cliente) |
| 04-UI_UX_BRIEF.md | Especificação de Design System (Paleta Obsidian, Tipografia, Componentes) |
| 05-BACKEND_SCHEMA.md | DDL Completo do Banco de Dados, Índices, Constraints e Particionamento |
| 06-IMPLEMENTATION_PLAN.md | Plano Detalhado de Implementação em 6 Fases (Tarefas 1.1 a 6.5) |
| DECISIONS.md | Registro de Decisões de Arquitetura (ADR-001 a ADR-025) |
- Linguagem & Framework: Python 3.12+, FastAPI
- ORM & Banco de Dados: SQLAlchemy 2.0 (AsyncIO), PostgreSQL 16 com partições de séries temporais
- Mensageria & Cache: Redis 7.2+ (Streams, Consumer Groups, Distributed Locks)
- Segurança & Criptografia: Argon2-cffi, PyJWT, SecretStr
- Framework & Ferramentas: React 18, TypeScript 5.5, Vite
- Gerenciamento de Estado & Consultas: TanStack Query (React Query) + Zustand
- Estilização & Componentes: TailwindCSS / CSS puro calibrado no padrão Obsidian Telemetry
- Visualização de Dados: Lucide React, Recharts / ECharts
- Docker & Docker Compose para orquestração de microsserviços e workers
- Prometheus & Grafana para telemetria de produção
- GitHub Actions para CI/CD automatizado
- Docker & Docker Compose
- Python 3.12+ (uv ou poetry recomendado)
- Node.js 20+ e pnpm / npm
-
Clonar o repositório:
git clone https://github.com/NdondaDaniel2020/InfraWatch.git cd InfraWatch -
Configurar variáveis de ambiente:
cp .env.example .env # Preencher credenciais do PostgreSQL, Redis, GLPI e JWT Secrets -
Iniciar a infraestrutura auxiliar (PostgreSQL + Redis):
docker-compose up -d postgres redis
-
Executar as migrações de banco:
alembic upgrade head
-
Iniciar os serviços:
# Terminal 1: API REST & SSE uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload # Terminal 2: Probe Worker (Coleta ICMP/HTTP/DNS) python -m src.workers.probe_worker # Terminal 3: Integration Worker (GLPI & Webhooks) python -m src.workers.integration_worker
Este projeto está sob a licença MIT. Consulte o arquivo de licença para mais detalhes.