7

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.

Shail Patel
  • 1,764
  • 5
  • 30
  • 46
  • 1
    if solution worked for you, please mark it answered. It helps. – Sumit Murari Oct 20 '15 at 05:56
  • Apparently, `&~` is deprecated (version 8.24 is what I'm using; likely it was deprecated starting with v7). Replace with `&stop` and the deprecation messages will cease. See https://www.rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html – fbicknel Feb 18 '20 at 20:42

3 Answers3

7

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
user4556274
  • 96
  • 1
  • 2
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
basickarl
  • 37,187
  • 64
  • 214
  • 335
1

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.

DrewJaja
  • 97
  • 1
  • 5