Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ SyslogCollector

Go PostgreSQL Redis HTMX TailwindCSS Chart.js Docker Nginx

RFC3164 RFC5424 Redis Pub/Sub Policy Engine Worker Pool Classification Alerts

Status Version License


📌 Visão Geral

O SyslogCollector é uma plataforma de observabilidade leve desenvolvida para recolha, processamento, classificação e visualização de eventos Syslog em pequenas e médias infraestruturas.

Funcionalidades

  • Receção Syslog UDP e TCP
  • Suporte RFC3164 e RFC5424
  • Dashboard Web em tempo real
  • Classificação automática de eventos
  • Facilities humanizadas
  • Motor de políticas dinâmico
  • Redis Pub/Sub
  • Gestão de alertas
  • Estatísticas operacionais
  • Exportação CSV
  • Autenticação integrada
  • Docker Compose Ready

🏗 Arquitetura

Clientes Syslog
(Firewalls, Linux, Windows, Switches, APs)

            │
            ▼

     Syslog Collector
      UDP/TCP :514

            │
            ▼

      RFC3164 Parser
      RFC5424 Parser

            │
            ▼

    Event Classifier
    Facility Mapper

            │
            ▼

      Policy Engine

            │
            ▼

       Redis Queue

            │
            ▼

      Worker Pool

            │
            ▼

       PostgreSQL

            │
            ▼

      Dashboard Web

🚀 Tecnologias

Backend

  • Go
  • PostgreSQL
  • Redis

Frontend

  • HTMX
  • Tailwind CSS
  • Chart.js
  • Lucide Icons

Infraestrutura

  • Docker
  • Docker Compose
  • Nginx

📥 Recolha de Logs

Suporta:

  • Syslog UDP
  • Syslog TCP
  • RFC3164
  • RFC5424

Campos processados:

  • Timestamp
  • Source IP
  • Hostname
  • Application
  • Facility
  • Facility Name
  • Severity
  • Payload
  • Source Type

🧠 Classificação Automática

O sistema classifica automaticamente os eventos recebidos.

Categorias atualmente suportadas:

  • Firewall
  • Windows
  • Linux
  • DNS
  • DHCP
  • Network
  • Web
  • Security
  • Database
  • Unknown

A classificação considera:

  • Application Name
  • Hostname
  • Facility
  • Conteúdo da mensagem

🏷 Facilities Humanizadas

Conversão automática das facilities Syslog.

Código Nome
0 Kernel
1 User
2 Mail
3 Daemon
4 Auth
16 Local0
17 Local1
18 Local2
19 Local3
20 Local4
21 Local5
22 Local6
23 Local7

🛡 Motor de Políticas

Permite filtragem dinâmica sem reiniciar o collector.

Severidade mínima

Exemplo:

Erro

Ignora:

Aviso
Info
Debug

Hosts ignorados

printer01
switch-lab
test-server

Aplicações ignoradas

nginx
systemd
dnsmasq

Palavras-chave ignoradas

heartbeat
healthcheck
favicon.ico

🔄 Atualização Dinâmica

As alterações são sincronizadas via Redis Pub/Sub.

Dashboard
    │
    ▼

PostgreSQL
    │
    ▼

Redis
 SET + Publish
    │
    ▼

Collector
Reload Automático

Sem necessidade de reiniciar containers.


🚨 Gestão de Alertas

Já implementado:

  • CRUD de alertas
  • Persistência PostgreSQL
  • Interface administrativa
  • Configuração dinâmica

Preparado para:

  • Email
  • Telegram
  • Discord
  • Webhooks

Exemplos:

  • Mais de 20 erros em 5 minutos
  • Mais de 50 eventos Firewall em 10 minutos
  • Eventos contendo palavras-chave específicas

📊 Dashboard

Funcionalidades:

  • Atualização automática
  • Pesquisa textual
  • Filtro por severidade
  • Drawer de detalhes
  • Exportação CSV
  • Navegação HTMX
  • Interface responsiva

📈 Estatísticas

Disponíveis:

  • Logs recebidos
  • Logs armazenados
  • Logs filtrados
  • Hosts mais ativos
  • Aplicações mais ativas
  • Distribuição por severidade
  • Distribuição por origem

🔐 Autenticação

Autenticação baseada em sessão.

Configuração via painel administrativo.


🗄 Retenção Automática

Suporte a retenção configurável.

Exemplo:

30 dias

Os registos antigos são removidos automaticamente.


📦 Instalação

Clonar

git clone https://github.com/ghvalentim/SyslogCollector.git

cd SyslogCollector

Configurar

cp .env.example .env

Editar:

DB_HOST=postgres
DB_NAME=syslog
DB_USER=syslog
DB_PASS=syslog

REDIS_URL=redis:6379

Iniciar

docker compose up -d --build

🌐 Acesso

http://localhost

📁 Estrutura do Projeto

SyslogCollector
│
├── collector
│   ├── main.go
│   └── app
│       ├── classifier.go
│       ├── facility.go
│       ├── listener.go
│       ├── models.go
│       ├── parser.go
│       ├── policy.go
│       ├── redis.go
│       └── workers.go
│
├── web
│   ├── main.go
│   ├── app
│   │   ├── alerts.go
│   │   ├── auth.go
│   │   ├── database.go
│   │   ├── handlers.go
│   │   ├── models.go
│   │   ├── policies.go
│   │   ├── routes.go
│   │   ├── services.go
│   │   ├── settings.go
│   │   └── stats.go
│   │
│   ├── assets
│   │   ├── output.css
│   │   └── script.js
│   │
│   └── templates
│       ├── alerts.html
│       ├── login.html
│       ├── logs.html
│       ├── policies.html
│       ├── settings.html
│       ├── stats.html
│       └── tools.html
│
├── nginx
├── compose.yml
├── setup.sh
└── README.md

🗺 Roadmap

Sprint 1 ✅

  • Receção UDP/TCP
  • PostgreSQL
  • Redis Queue

Sprint 2 ✅

  • Dashboard HTMX
  • Pesquisa
  • Exportação CSV

Sprint 3 ✅

  • Autenticação
  • Configurações

Sprint 4 ✅

  • Estatísticas
  • Gráficos

Sprint 5 ✅

  • Drawer de detalhes
  • Melhorias UI

Sprint 6 ✅

  • Tailwind local
  • Refatoração visual

Sprint 7 ✅

  • Motor de Políticas
  • Redis Pub/Sub
  • Filtragem dinâmica

Sprint 8 🚧

  • ✅ Classificação automática
  • ✅ Facilities humanizadas
  • ✅ Worker Pool
  • ✅ CRUD de alertas
  • ✅ Estatísticas por origem
  • 🚧 Alert Engine
  • 🚧 Notificações

Sprint 9

  • Correlação de eventos
  • Email
  • Telegram
  • Discord
  • Webhooks

Sprint 10

  • Multiutilizador
  • Auditoria
  • Perfis de acesso

Sprint 11

  • Kubernetes
  • Alta disponibilidade
  • Clustering

📄 Licença

MIT License.


👨‍💻 Autor

Gabriel Valentim

Projeto de estudo focado em:

  • Observabilidade
  • Redes
  • Syslog
  • Golang
  • HTMX
  • Arquitetura de Sistemas

SyslogCollector v0.8.0-alpha Observabilidade simples, rápida e sem complicações.

About

A Syslog Collector totally made by Golang + HTMX

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages