O HAProxy é uma aplicação que oferece funcionalidades para se atingir alta disponibilidade e balanceamento de carga em sistemas baseados em TCP e HTTP. O HAProxy funciona como um proxy interceptando requisições entre a aplicação cliente e a aplicação servidora. No meu caso, estou utilizando o HAProxy para distribuir as requisições feitas a um cluster Cassandra.
Por questões de desempenho, o HAProxy loga utilizando um servidor syslog e não um arquivo comum. O Syslog consiste em um daemon presente em muitos servidores Linux. No entanto, o HAProxy exige que esse daemon escute na porta 514 a qual, frequentemente, não está habilitada por padrão.
Um servidor syslog:
- recebe entradas a serem logadas
- decide o que é importante de ser registrado
- escreve em disco de uma maneira otimizada
Para ativar o log do HAProxy, primeiro é preciso especificar o uso do log no arquivo haproxy.cfg. No meu caso, eu tenho algo do tipo:
global
maxconn 5000
log localhost local0 notice
Nas linhas anteriores, instruo ao HAProxy que ele registre eventos na máquina local (localhost), utilizando o rsyslog através de local0. O parâmetro notice informa que somente eventos considerados importantes serão logados. Para mais informações sobre esses parâmetros, consulte a documentação anexa ao código fonte do HAProxy (arquivo doc/configuration.txt).
Em seguida, crie um arquivo haproxy.cnf em /etc/rsyslog.d/. Ponha o seguinte conteúdo nesse arquivo:
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
local0.* -/var/log/haproxy.log
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
local0.* -/var/log/haproxy.log
Agora reinicie o servidor rsyslog.
sudo /etc/init.d/rsyslog restart
Para ver o que está sendo logado sobre o HAProxy, acesse:
tail -f /var/log/haproxy*.log
Um ponto importante, como destaca esse post, é configurar a rotação do log. Para isso, crie um arquivo haproxy dentro de /etc/logrotate.d/ com o seguinte conteúdo:
/var/log/haproxy*.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
Simples, não?
No comments:
Post a Comment