TUTOS.EU

Mettre à part les logs d un backend HAproxy

On va checker/modifier la configuration du haproxy

nano /etc/haproxy/haproxy.cfg
Lien vers le fichier : cliquez ici Copier le code

Au niveau de la ligne log-format il faut ajouter backend = %b
Exemple

log-format "%{+Q}o\ client_address = %ci, client_port = %cp, backend = %b, server_address = %si, server_port = %sp path"
Lien vers le fichier : cliquez ici Copier le code

Cela aura pour effet de faire apparaitre le nom du backend dans les logs d'HAproxy.
On va maintenant s'en servir pour filtrer au niveau de rsyslog.
Pour cela au niveau de rsyslog on va faire une configuration à part

nano /etc/rsyslog.d/haproxy.conf
Lien vers le fichier : cliquez ici Copier le code

Le bloc important à ajouter et à adapter est celui ci-dessous
On y dit : pour le process haproxy, si le message contient backend = "monbackend" alors mettre les logs dans le fichier haproxy-traffic-monbackend.log

if $programname == 'haproxy' and $msg contains 'backend = "monbackend"' then {
    action(type="omfile" file="/var/log/haproxy-traffic-monbackend.log")
    stop
}
Lien vers le fichier : cliquez ici Copier le code

Voici un exemple de contenu pour /etc/rsyslog.d/haproxy.conf

# Collect log with UDP
$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514

# Creating separate log files based on the severity
local6.* /var/log/haproxy-traffic.log
local6.notice /var/log/haproxy-admin.log

if $programname == 'haproxy' and $msg contains 'backend = "monbackend"' then {
    action(type="omfile" file="/var/log/haproxy-traffic-monbackend.log")
    stop
}
Lien vers le fichier : cliquez ici Copier le code

Pensez à adapter votre politique logrotate avec par exemple

/var/log/haproxy-traffic*.log
/var/log/haproxy-admin.log
{
    daily
    rotate 3
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}
Lien vers le fichier : cliquez ici Copier le code