Haproxy not logging with rsyslog

10,868

Solution 1

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

Solution 2

Under global change/add:

global
    chroot  /var/lib/haproxy
    log /var/lib/haproxy/dev/log    local0
    log /var/lib/haproxy/dev/log    local1 notice
    ... rest of your file

Solution 3

I had the exact same issue on Ubuntu 16.04. Tried restarting haproxy and syslog and /var/log/haproxy.log was still not created.

I ended up just restarting the server and /var/log/haproxy.log was created on boot up.

Share:
10,868
Shail Patel
Author by

Shail Patel

Updated on June 24, 2022

Comments

  • Shail Patel
    Shail Patel almost 2 years

    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.