Skip to content

br00tm/infrawatch

Repository files navigation


Python TypeScript FastAPI React Kubernetes Docker License


InfraWatch é um sistema de monitoramento distribuído de infraestrutura Kubernetes com foco em observabilidade, métricas, logs e alertas em tempo real.


📋 Índice


💡 Sobre o Projeto

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.


✨ Funcionalidades

  • 📊 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

🏗 Arquitetura

┌──────────────────────────────────────────────────────────────┐
│                      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)                       │
└──────────────────────────────────────────────────────────────┘

🛠 Tecnologias

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

📁 Estrutura do Projeto

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

🚀 Como Rodar

Pré-requisitos

Início Rápido

# 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

Acessando os Serviços

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

Credenciais Padrão

Admin:    admin@infrawatch.dev / admin123
RabbitMQ: infrawatch / infrawatch123

🔧 Variáveis de Ambiente

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)

👨‍💻 Desenvolvimento

Backend (FastAPI + Python)

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 8000

Frontend (React + TypeScript)

cd frontend
npm install
npm run dev

Workers (Celery)

cd workers
celery -A app.worker worker --loglevel=info

Makefile — Comandos Úteis

make 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 imagens

📡 Documentação da API

Com o backend em execução, acesse a documentação interativa:

Principais Endpoints

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

☸️ Deploy em Kubernetes

Usando Helm

# 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 monitoring

Manifestos diretos

kubectl apply -f infrastructure/kubernetes/

🗺 Roadmap

  • 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

🤝 Contribuindo

  1. Faça um fork do repositório

  2. Crie sua branch de feature

    git checkout -b feature/minha-feature
  3. Commit suas alterações

    git commit -m "feat: adiciona minha feature incrível"
  4. Push para a branch

    git push origin feature/minha-feature
  5. Abra um Pull Request


📄 Licença

Este projeto está licenciado sob a MIT License — consulte o arquivo LICENSE para mais detalhes.


Feito com ❤️ por br00tm

About

InfraWatch é um sistema de monitoramento distribuído de infraestrutura Kubernetes com foco em observabilidade, métricas, logs e alertas em tempo real.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors