O Sentinel é uma aplicação web Flask para automação, consulta e monitoramento de infraestrutura do Grupo GPS. O sistema centraliza regionais, servidores, links, switches, firewalls, VPNs, certificados, relatórios e rotinas operacionais em uma interface web única.
O projeto roda principalmente em Windows, com Flask servido via Waitress, configurações locais em JSON e integrações com FortiManager, FortiAnalyzer, Zabbix, UniFi, Microsoft Graph, Active Directory e portais internos.
- 🌐 Aplicação web principal:
web_config.py - ⚙️ Entrada do serviço web:
run_web_service.py - 🔌 Porta padrão:
5000 - 🧩 Templates:
templates/ - 🎨 Arquivos estáticos:
static/ - 📁 Dados locais/runtime:
data/,output/,logs/ - 🔐 Configurações sensíveis:
environment.json(não deve ir para o Git) - 🏢 Estrutura das regionais:
estrutura_regionais.json(não deve ir para o Git)
Além deste README principal, o projeto tem documentos específicos para operação, configuração e manutenção:
- 📘 Guia de Configuração - configuração geral do ambiente.
- 🔐 README de Autenticação - autenticação e controle de acesso.
- 🧱 Estrutura V2 - organização da estrutura hierárquica.
- 🛡️ Guia de Segurança - cuidados com credenciais e arquivos sensíveis.
- 🧪 Guia JR Homologação - fluxo de homologação.
- 🏭 Ambientes Produção/Homologação - operação entre ambientes.
- 📦 Guia de Compilação EXE - empacotamento/compilação.
- 📝 Changelog - histórico de mudanças.
- 📁 Docs - documentação complementar na pasta
docs/.
Observação: arquivos pessoais de contexto para IA, como COPILOT_CONTEXT.md, devem ficar somente locais e não devem ser versionados.
- Cadastro e visualização de regionais.
- Servidores, VMs, links, switches e firewalls agrupados por regional.
- Tela principal em
/regionais. - Detalhe individual em
/regional/<codigo>.
- Monitoramento de servidores regionais.
- Consulta de status, serviços e informações de VMs.
- Relatórios simples e completos.
- Dados organizados em estrutura hierárquica por regional.
- Consulta e exibição de links por regional.
- Sincronização manual com FortiManager/FortiGate.
- Identificação de interfaces WAN, IPs públicos, provedores, velocidades e status.
- A sincronização automática ao abrir a tela de regionais foi desativada para reduzir consumo de API.
- Tela em
/firewalls. - Consulta FortiGates via FortiManager.
- Exibe status, modelo, serial e licenças FortiCare.
- Usa cache local por até 60 minutos para reduzir chamadas repetidas ao FortiManager.
- O botão Atualizar Forti força nova consulta em tempo real.
- Tela em
/admin-logins. - Compara usuários administradores atuais com a baseline aprovada em
admin_baseline.json. - Consulta FortiManager, FortiGates via proxy do FortiManager, FortiAnalyzer e logs administrativos.
- Usa cache local por até 30 minutos.
- O botão Atualizar Forti força nova consulta.
- Tela em
/switches. - Integração com Zabbix.
- Consulta status de switches, alertas e organização por regional.
- Usa
gerenciar_switches.pye planilha/configuração definida no ambiente.
- Tela em
/vpn-ipsec. - Exibe túneis VPN agrupados por regional.
- Dados obtidos via FortiManager/FortiGate.
- Telas de antenas UniFi e dashboards relacionados.
- Coleta por
Unifi.Py. - Agrupamento por site/regional.
- Exibe status de APs, clientes e informações operacionais.
- Telas de validade de certificados.
- Relatórios e templates para acompanhamento de certificados e discos.
- Exemplo de template:
templates/certificate_disk_report_acrab.json.
- Dashboard consolidado por
executar_tudo.py. - Relatórios de infraestrutura.
- Rotinas de replicação AD.
- Capturas de portais internos, GPS Amigo, Saturno e AppGate.
- Envio de e-mails via Microsoft Graph.
- Assistente virtual integrada ao Sentinel.
- Módulo em
sofia/. - Ativação por
environment.json:
"sofia": {
"enabled": true
}- A SofIA atualmente usa regras determinísticas, sem LLM externo.
- Ela responde sobre regionais, servidores, switches, links, VPNs, Zabbix e dashboard com base nos dados já carregados pelo Sentinel.
Automacao/
|-- web_config.py # Aplicação Flask principal
|-- run_web_service.py # Inicialização Waitress
|-- config.py # Caminhos e carregamento do environment.json
|-- environment.example.json # Exemplo seguro de configuração
|-- environment.json # Configuração real local, não versionada
|-- estrutura_regionais.json # Regionais reais, não versionado
|-- fortimanager_client.py # Cliente FortiManager JSON-RPC
|-- fortianalyzer_client.py # Cliente FortiAnalyzer JSON-RPC
|-- gerenciar_regionais.py # Cadastro/estrutura de regionais
|-- gerenciar_switches.py # Integração Zabbix/switches
|-- gerenciar_vms.py # Rotinas de VMs
|-- executar_tudo.py # Dashboard consolidado
|-- gps_print.py # Capturas de portais
|-- sofia/ # Assistente SofIA
|-- templates/ # Templates HTML/Jinja2
|-- static/ # CSS, JS, imagens e branding
|-- data/ # Dados gerados em runtime
|-- output/ # HTMLs, caches e relatórios
|-- logs/ # Logs da aplicação
- Copie ou gere um
environment.jsona partir deenvironment.example.json. - Configure credenciais e hosts dos sistemas usados:
- Zabbix
- FortiManager
- FortiAnalyzer
- UniFi
- Microsoft Graph
- Portais internos
- Garanta que
environment.json,estrutura_regionais.json,admin_baseline.jsone arquivos com IPs/senhas continuem fora do Git.
Arquivos sensíveis já devem estar protegidos no .gitignore.
Instale dependências:
pip install -r requirements.txtInicie/reinicie o serviço web:
.\restart_web_service.ps1Ou execute diretamente:
python run_web_service.pyAcesse:
http://localhost:5000
python executar_tudo.pyPara rodar sem abrir navegador:
python executar_tudo.py --no-browserO dashboard consolidado gera arquivos em output/ e também em pastas públicas configuradas em config.py.
Para reduzir consumo no FortiManager/FortiAnalyzer:
/firewallsusa cache por até 60 minutos./admin-loginsusa cache por até 30 minutos.- Os botões Atualizar Forti forçam consulta em tempo real.
- A sincronização automática de links ao abrir regionais foi desativada.
- A sincronização de links continua disponível manualmente.
Isso mantém as consultas funcionando, mas evita chamadas repetidas a cada navegação.
- Nunca commitar
environment.json. - Nunca commitar
estrutura_regionais.jsoncom IPs reais. - Nunca commitar
admin_baseline.jsonse contiver usuários reais sensíveis. - Evitar expor tokens, senhas, API keys e client secrets em código.
- Revisar
git statusantes de cada commit.
Locais principais:
logs/web_service.loglogs/sofia_audit.jsonllogs/certificados.logoutput/dashboard_*_cache.jsonoutput/status_atualizacao.json
Comandos úteis:
git status
python -m py_compile web_config.py
python tools/manual/verificar_dependencias.py- O Waitress não faz auto-reload: após alterar backend, reinicie o serviço.
- Alterações em templates geralmente exigem recarregar a página.
- Rotas que consultam Forti podem demorar dependendo da quantidade de dispositivos.
- O cache foi criado para aliviar consumo de API sem remover as consultas.
O Sentinel hoje é uma plataforma interna de automação de infraestrutura com foco em:
- Operação regional
- Monitoramento de rede
- Inventário e status de firewalls
- Controle de admins Forti
- Links, VPNs e switches
- Certificados e relatórios
- Assistente SofIA integrada
O projeto segue em evolução e deve priorizar mudanças incrementais, mantendo compatibilidade com os dados locais e rotinas já existentes.