Web Tail Pro v2.0

Visualizador de logs em tempo real no navegador, com backend em Go e frontend em React. Permite acompanhar múltiplos arquivos simultaneamente, filtrar linhas, aplicar formatações (JSON e Apache), e mesclar logs por timestamp em um painel unificado.

Novidades da v2.0

  • 🏗️ Arquitetura Modular: Backend refatorado com separação clara de responsabilidades
  • 📝 Logging Estruturado: Suporte a logs JSON e console com níveis configuráveis
  • 🔒 Segurança Aprimorada: Rate limiting, CORS configurável, security headers, suporte a TLS
  • 🛑 Graceful Shutdown: Encerramento gracioso com context
  • 📊 Métricas: Endpoints /health e /metrics para monitoramento
  • ⚙️ Configuração Flexível: Suporte a variáveis de ambiente além de flags
  • 🐳 Docker: Dockerfile multi-stage otimizado e docker-compose
  • 🔧 DevOps: Makefile, CI/CD pipeline, linting configurado

Recursos

  • Monitoramento em tempo real via SSE (/logs)
  • Múltiplas abas, uma por arquivo de log, e painel "Mesclado"
  • Filtro de texto simples nas abas
  • Formatação de linhas para generic, json e apache
  • Autenticação básica HTTP (opcional)
  • Rate limiting por IP
  • Health checks e métricas
  • Suporte a TLS/HTTPS

Arquitetura

  • Backend (Go 1.24+): Arquitetura modular com packages internos

    • internal/broker: Gerenciamento de clientes SSE
    • internal/handlers: Handlers HTTP
    • internal/middleware: Auth, CORS, rate limiting, logging
    • internal/tail: Monitoramento de arquivos
    • internal/models: Modelos de dados
    • internal/config: Gerenciamento de configuração
  • Frontend (React + Vite + Ant Design): Interface moderna e responsiva

Estrutura do projeto:

backend/
  cmd/
    server/
      main.go
  internal/
    broker/
    config/
    handlers/
    middleware/
    models/
    tail/
  go.mod
frontend/
  src/
    App.tsx
    components/
    hooks/
  package.json
  vite.config.ts
Dockerfile
docker-compose.yml
Makefile
build.sh
build.bat

Pré-requisitos

  • Go 1.24+
  • Node.js 20+ e npm

Instalação Rápida

Opção 1: Build Local

Unix/Linux/macOS:

bash build.sh

Windows:

build.bat

Opção 2: Docker

docker build -t webtail:latest .
docker run -p 8080:8080 -v $(pwd)/logs:/logs:ro webtail:latest /logs/app.log

Opção 3: Docker Compose

docker-compose up -d

Opção 4: Makefile

make build

Execução

Básico

./web-tail-pro arquivo1.log arquivo2.log

Com Autenticação

./web-tail-pro -password "s3nh4" arquivo1.log arquivo2.log

Porta Customizada

./web-tail-pro -port :9090 arquivo1.log

Com Variáveis de Ambiente

export PORT=:8080
export PASSWORD="s3nh4"
export LOG_LEVEL=debug
export RATE_LIMIT_RPS=50
./web-tail-pro arquivo1.log

Com TLS

export TLS_ENABLED=true
export TLS_CERT_FILE=/path/to/cert.pem
export TLS_KEY_FILE=/path/to/key.pem
./web-tail-pro arquivo1.log

Configuração

Flags de Linha de Comando

Flag Padrão Descrição
-port :8080 Porta do servidor HTTP
-username admin Nome de usuário para autenticação
-password `` Senha (ativa autenticação se definida)

Variáveis de Ambiente

Variável Padrão Descrição
PORT :8080 Porta do servidor
USERNAME admin Nome de usuário
PASSWORD `` Senha de autenticação
LOG_LEVEL info Nível de log (debug, info, warn, error)
LOG_FORMAT console Formato de log (json, console)
RATE_LIMIT_ENABLED true Habilitar rate limiting
RATE_LIMIT_RPS 100 Requisições por segundo permitidas
CORS_ORIGINS * Origens CORS permitidas (separadas por vírgula)
TLS_ENABLED false Habilitar TLS/HTTPS
TLS_CERT_FILE `` Caminho do certificado TLS
TLS_KEY_FILE `` Caminho da chave TLS
READ_TIMEOUT 15s Timeout de leitura HTTP
WRITE_TIMEOUT 15s Timeout de escrita HTTP
SHUTDOWN_TIMEOUT 30s Timeout para graceful shutdown

Nota: Variáveis de ambiente têm precedência sobre valores padrão, mas flags de linha de comando têm precedência sobre variáveis de ambiente.

Desenvolvimento

Backend

cd backend
go run ./cmd/server/main.go ../logs/*.log

Frontend

cd frontend
npm install
npm run dev

O frontend em desenvolvimento estará disponível em http://localhost:5173 com proxy configurado para o backend.

Testes

# Backend
cd backend
go test -v ./...

# Frontend
cd frontend
npm test

# Ou use o Makefile
make test

Linting

# Backend
cd backend
golangci-lint run

# Frontend
cd frontend
npm run lint

# Ou use o Makefile
make lint

Endpoints da API

Endpoint Método Descrição
/ GET Interface web (arquivos estáticos)
/logs GET Stream SSE de logs em tempo real
/api/files GET Lista de arquivos monitorados
/api/last?file=X&n=Y GET Últimas N linhas do arquivo X
/health GET Health check
/metrics GET Métricas da aplicação

Exemplo de Resposta - /metrics

{
  "active_clients": 3,
  "total_broadcasts": 15420,
  "monitored_files": 2
}

Docker

Build

docker build -t webtail:latest .

Run

docker run -d \
  -p 8080:8080 \
  -v /path/to/logs:/logs:ro \
  -e PASSWORD="s3nh4" \
  -e LOG_LEVEL=debug \
  webtail:latest /logs/app.log /logs/access.log

Docker Compose

# Produção
docker-compose up -d

# Desenvolvimento
docker-compose --profile dev up

Segurança

Rate Limiting

Por padrão, o rate limiting está habilitado com 100 requisições por segundo por IP. Isso pode ser ajustado:

export RATE_LIMIT_RPS=50
./web-tail-pro arquivo.log

CORS

Configure origens permitidas:

export CORS_ORIGINS="https://app.exemplo.com,https://admin.exemplo.com"
./web-tail-pro arquivo.log

TLS/HTTPS

Para produção, é recomendado usar TLS:

export TLS_ENABLED=true
export TLS_CERT_FILE=/etc/ssl/certs/server.crt
export TLS_KEY_FILE=/etc/ssl/private/server.key
./web-tail-pro arquivo.log

Security Headers

Os seguintes headers de segurança são adicionados automaticamente:

  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • X-XSS-Protection: 1; mode=block
  • Referrer-Policy: strict-origin-when-cross-origin
  • Content-Security-Policy

Monitoramento

Health Check

curl http://localhost:8080/health
# {"status":"healthy"}

Métricas

curl http://localhost:8080/metrics
# {
#   "active_clients": 2,
#   "total_broadcasts": 1234,
#   "monitored_files": 3
# }

Troubleshooting

Porta já em uso

./web-tail-pro -port :9090 arquivo.log

Permissões de arquivo

Certifique-se de que o usuário tem permissão de leitura nos arquivos de log:

chmod +r arquivo.log

Rate limit muito restritivo

export RATE_LIMIT_ENABLED=false
./web-tail-pro arquivo.log

Logs de debug

export LOG_LEVEL=debug
export LOG_FORMAT=console
./web-tail-pro arquivo.log

Migração da v1.x para v2.0

A v2.0 mantém compatibilidade total com a v1.x em termos de uso:

  • Mesmas flags de linha de comando
  • Mesmos endpoints da API
  • Mesmo formato de resposta SSE
  • Binário único sem dependências externas

Novidades opcionais:

  • Variáveis de ambiente para configuração
  • Novos endpoints /health e /metrics
  • Rate limiting (pode ser desabilitado)
  • Logs estruturados

Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Licença

Este projeto está sob a licença MIT.

Changelog

v2.0.0 (2025-11-19)

Breaking Changes:

  • Nenhum! Compatibilidade total com v1.x

Novidades:

  • Arquitetura modular refatorada
  • Logging estruturado com zerolog
  • Rate limiting por IP
  • CORS configurável
  • Security headers
  • Suporte a TLS/HTTPS
  • Graceful shutdown
  • Health check e métricas
  • Docker multi-stage
  • Configuração via variáveis de ambiente
  • Makefile para automação
  • CI/CD pipeline

Melhorias:

  • Migração de hpcloud/tail para nxadm/tail
  • Melhor tratamento de erros
  • Logs mais informativos
  • Performance otimizada

v1.0.0

  • Versão inicial
  • Monitoramento de múltiplos arquivos
  • Interface React
  • Autenticação básica
Description
No description provided
Readme 32 MiB
Languages
Go 62.2%
TypeScript 27.6%
Makefile 2.5%
Batchfile 2%
Shell 1.8%
Other 3.9%