Haproxy not logging with rsyslog

Shail Patel picture Shail Patel · Oct 28, 2014 · Viewed 9.5k times · Source

I want to setup HTTP logging in HAProxy and am having some trouble getting it to output the requests correctly.

Here is the HAProxy relevent configuration:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    maxconn 200000
    tune.ssl.default-dh-param 2048
    user haproxy
    group haproxy
    daemon
    stats socket /tmp/sock1 user root group root mode 777 level admin

defaults
    log    global
    mode    http
    option    httplog
    option    dontlognull
        option httpclose
    retries    3
    option redispatch
    maxconn    200000
    backlog 20000
    timeout connect    5s
    timeout client    50s
    timeout server    180000
    balance    roundrobin
    cookie    SERVERID rewrite 

Here is the /etc/rsyslog.d/haproxy.conf file:

# Create an additional socket in haproxy's chroot in order to allow logging via
# /dev/log to chroot'ed HAProxy processes
$AddUnixListenSocket /var/lib/haproxy/dev/log

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
&~ 

I've restarted both haproxy and rsyslogd after making the proper changes to make sure that they were picked up. The /var/log/haproxy.log isn't even being created. Any help would be appreciated.

Answer

user4556274 picture user4556274 · Feb 11, 2015

The rsyslog configuration assumes a chroot'd HAProxy, which does not match the haproxy config. Either chroot HAProxy by adding the line

    chroot  /var/lib/haproxy

to the global stanza of the haproxy config, or change the location of the socket rsyslog creates

$AddUnixListenSocket /dev/log