Skip to main content

Configuração de logs no HAPROXY

ChatGPT:
Ótimo! Vamos configurar o HAProxy + rsyslog dentro (ou fora) do Docker para gerar logs em horário local, salvos no arquivo /var/log/haproxy.log.


🧱 O que vamos fazer:

  1. Configurar o HAProxy para enviar logs ao syslog (/dev/log)

  2. Garantir que o rsyslog esteja ativo no host

  3. Mapear o socket /dev/log para o container Docker (ou fazer logging fora)

  4. Salvar os logs com horário local no host


✅ 1. Configuração do HAProxy (haproxy.cfg)

Altere a seção global do seu haproxy.cfg para:

global log /dev/log local0 info daemon maxconn 2048 user haproxy group haproxy

defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms

✅ 2. Configurar o rsyslog no host Linux

Verifique se o rsyslog está ativo:

sudo systemctl status rsyslog 

Se não estiver, ative:

sudo systemctl enable --now rsyslog

Crie o arquivo de log e a regra:

sudo touch /var/log/haproxy.log sudo chown syslog:adm /var/log/haproxy.log

Agora crie um arquivo de configuração para o rsyslog:

sudo nano /etc/rsyslog.d/49-haproxy.conf

E adicione:

local0.* /var/log/haproxy.log

Reinicie o rsyslog:

sudo systemctl restart rsyslog

✅ 3. Rodar o container HAProxy com acesso ao /dev/log

Você precisa montar o socket do syslog no container:

👉 Exemplo com docker run:

bash
docker run -d \ --name haproxy-logs \ -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \ -v /dev/log:/dev/log \ -p 2025:2025 \ haproxy:2.9

✅ O -v /dev/log:/dev/log é essencial — ele conecta o HAProxy ao rsyslog do host.

👉 Exemplo com docker-compose.yml:


services: haproxy: image: haproxy:2.9 volumes:   - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro   - /dev/log:/dev/log ports:   - "2025:2025"

✅ 4. Verificar os logs

Após acessar HAProxy (ex: curl http://localhost:2025/teste), veja os logs com:

tail -f /var/log/haproxy.log

O horário será o local do host, por exemplo:

Jul 18 10:08:27 haproxy-logs haproxy[1]: 192.168.0.10:42839 [18/Jul/2025:10:08:27.315] http_front doc_backend ...

🧪 Dica extra: usar hostname no log

Se quiser que apareça o nome do container no log, passe -h haproxy-logs no docker run, ou use no docker-compose.yml:

hostname: haproxy-logs

🚀 Pronto!

Agora o HAProxy está:

  • Gerando logs com option httplog

  • Mandando logs para o rsyslog do host via /dev/log

  • Gravando logs com horário local em /var/log/haproxy.log