InfraWatch é um sistema de monitoramento distribuído de infraestrutura Kubernetes com foco em observabilidade, métricas, logs e alertas em tempo real.
- Sobre o Projeto
- Funcionalidades
- Arquitetura
- Tecnologias
- Estrutura do Projeto
- Como Rodar
- Variáveis de Ambiente
- Desenvolvimento
- Documentação da API
- Deploy em Kubernetes
- Roadmap
- Contribuindo
- Licença
O InfraWatch nasceu da necessidade de ter uma solução completa e auto-hospedada de observabilidade para clusters Kubernetes — sem depender de serviços externos caros ou complexos.
A plataforma coleta métricas de CPU, memória, disco e rede em tempo real, agrega logs de todas as aplicações do cluster, e dispara alertas inteligentes via Telegram, Discord ou e-mail quando anomalias são detectadas — tudo em um dashboard moderno e responsivo.
- 📊 Métricas em Tempo Real — monitoramento de CPU, memória, disco e rede em todo o cluster
- 📜 Logs Centralizados — agregação e busca de logs de todas as aplicações
- 🚨 Alertas Inteligentes — regras customizáveis com múltiplos canais (Telegram, Discord, Email)
- 🖥️ Dashboard Moderno — interface responsiva construída com React e TailwindCSS
- ⚡ Arquitetura Escalável — FastAPI, Celery Workers e MongoDB para alta performance
- ☸️ Deploy Nativo em Kubernetes — Helm charts inclusos para deploy no cluster
- 🔄 CI/CD Integrado — GitHub Actions para automação de build e deploy
- 🐳 Ambiente de Desenvolvimento — Docker Compose para dev e produção
┌──────────────────────────────────────────────────────────────┐
│ Frontend (React + TS) │
│ TailwindCSS · Vite │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Backend API (FastAPI) │
│ Auth · Metrics · Logs · Alerts │
└──────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ MongoDB │ │ RabbitMQ │ │ Redis │
│ (Storage) │ │ (Message Queue) │ │ (Cache) │
└─────────────┘ └──────────────────┘ └─────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Celery Workers │
│ Métricas · Processamento · Alertas · Notificações │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Nginx (Reverse Proxy) │
└──────────────────────────────────────────────────────────────┘
| Camada | Tecnologia |
|---|---|
| Backend | Python · FastAPI · Celery |
| Frontend | TypeScript · React · TailwindCSS · Vite |
| Banco de Dados | MongoDB |
| Mensageria | RabbitMQ |
| Cache | Redis |
| Proxy | Nginx |
| Orquestração | Kubernetes · Helm |
| Containers | Docker · Docker Compose |
| CI/CD | GitHub Actions |
| Automação | Makefile · Shell Scripts |
infrawatch/
├── .github/
│ └── workflows/ # CI/CD — GitHub Actions pipelines
├── backend/ # API FastAPI (Python)
│ ├── app/
│ │ ├── api/ # Rotas e endpoints
│ │ ├── core/ # Configurações, auth, segurança
│ │ ├── models/ # Modelos de dados (MongoDB)
│ │ └── services/ # Lógica de negócio
│ └── requirements.txt
├── frontend/ # Interface React + TypeScript
│ ├── src/
│ │ ├── components/ # Componentes reutilizáveis
│ │ ├── pages/ # Páginas da aplicação
│ │ └── services/ # Integração com a API
│ └── package.json
├── workers/ # Celery workers assíncronos
│ ├── metrics/ # Coleta de métricas
│ └── alerts/ # Processamento de alertas
├── infrastructure/
│ └── kubernetes/ # Manifestos K8s (Deployments, Services, etc.)
├── charts/
│ └── infrawatch/ # Helm Chart para deploy no cluster
├── nginx/ # Configurações do Nginx
├── scripts/ # Scripts utilitários
├── docs/ # Documentação adicional
├── docker-compose.yml # Ambiente de desenvolvimento
├── docker-compose.prod.yml # Ambiente de produção
├── Makefile # Comandos automatizados
└── .env.example # Template de variáveis de ambiente
- Docker & Docker Compose
- Make (opcional, mas recomendado)
- Node.js >= 18.x (para desenvolvimento frontend)
- Python >= 3.10 (para desenvolvimento backend)
# 1. Clone o repositório
git clone https://github.com/br00tm/infrawatch.git
cd infrawatch
# 2. Configure o ambiente
cp .env.example .env
# Edite o .env com suas configurações
# 3. Suba os serviços
make dev-up
# ou
docker-compose up -d| Serviço | URL | Descrição |
|---|---|---|
| Frontend | http://localhost:3000 | Dashboard principal |
| API Docs | http://localhost:8000/docs | Swagger UI |
| API ReDoc | http://localhost:8000/redoc | ReDoc |
| RabbitMQ | http://localhost:15672 | Painel de gerenciamento |
Admin: admin@infrawatch.dev / admin123
RabbitMQ: infrawatch / infrawatch123
| Variável | Descrição | Padrão |
|---|---|---|
MONGODB_URL |
String de conexão do MongoDB | mongodb://localhost:27017 |
REDIS_URL |
String de conexão do Redis | redis://localhost:6379 |
RABBITMQ_URL |
String de conexão do RabbitMQ | amqp://localhost:5672 |
JWT_SECRET_KEY |
Chave secreta para tokens JWT | (obrigatório) |
TELEGRAM_BOT_TOKEN |
Token do bot Telegram para alertas | (opcional) |
DISCORD_WEBHOOK_URL |
Webhook do Discord para alertas | (opcional) |
cd backend
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
pip install -r requirements-dev.txt
uvicorn app.main:app --reload --port 8000cd frontend
npm install
npm run devcd workers
celery -A app.worker worker --loglevel=infomake dev-up # Sobe ambiente de desenvolvimento
make dev-down # Para o ambiente
make prod-up # Sobe ambiente de produção
make test-backend # Executa testes do backend
make test-frontend # Executa testes do frontend
make test # Executa todos os testes
make logs # Exibe logs de todos os serviços
make build # Faz build de todas as imagensCom o backend em execução, acesse a documentação interativa:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
| Método | Rota | Descrição |
|---|---|---|
GET |
/api/v1/metrics |
Métricas gerais do cluster |
GET |
/api/v1/metrics/{node} |
Métricas de um nó específico |
GET |
/api/v1/logs |
Logs agregados |
GET |
/api/v1/alerts |
Lista de alertas ativos |
POST |
/api/v1/alerts/rules |
Cria regra de alerta |
POST |
/auth/login |
Autenticação e geração de token |
# Adicione o chart
helm install infrawatch ./charts/infrawatch \
--namespace monitoring \
--create-namespace \
--values charts/infrawatch/values.yaml
# Verifique os pods
kubectl get pods -n monitoring
# Acesse via port-forward
kubectl port-forward svc/infrawatch-frontend 3000:3000 -n monitoringkubectl apply -f infrastructure/kubernetes/- Fase 1 — Sistema Core (Backend, Frontend, Workers)
- Fase 2 — Deploy em Kubernetes & Stack de Monitoramento
- Fase 3 — VPN & Features de Segurança
- Fase 4 — Integração com Prometheus & Grafana
- Fase 5 — Multi-cluster support
-
Faça um fork do repositório
-
Crie sua branch de feature
git checkout -b feature/minha-feature
-
Commit suas alterações
git commit -m "feat: adiciona minha feature incrível" -
Push para a branch
git push origin feature/minha-feature
-
Abra um Pull Request
Este projeto está licenciado sob a MIT License — consulte o arquivo LICENSE para mais detalhes.
Feito com ❤️ por br00tm