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
/healthe/metricspara 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,jsoneapache - 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 SSEinternal/handlers: Handlers HTTPinternal/middleware: Auth, CORS, rate limiting, logginginternal/tail: Monitoramento de arquivosinternal/models: Modelos de dadosinternal/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: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockReferrer-Policy: strict-origin-when-cross-originContent-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
/healthe/metrics - Rate limiting (pode ser desabilitado)
- Logs estruturados
Contribuindo
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - 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/tailparanxadm/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