So, I configured Haproxy so the logging would go through rsyslog and, for now, be all dumped in one file.
It's definetly logging, as I get those "starting" messages on startup, but no HTTP requests logging at all. What is wrong with my configuration?
haproxy.cfg:
global
log /dev/log local0 debug
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend webfront
option forwardfor
stats enable
stats uri /haproxy?statis
stats realm Haproxy\ Auth
stats auth user:password
bind *:80
timeout client 86400000
acl is_discourse hdr_end(host) -i discourse.mydomain.com
use_backend discourse if is_discourse
use_backend webserver if !is_discourse
backend discourse
balance source
option forwardfor
option httpclose
server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000
backend webserver
balance source
option forwardfor
option httpclose
server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000
Log file:
root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.
I visited some of the webserver pages between thsoe reboots and triggeered a few 404 errors. Why is nothing showing up?
Edit: rsyslog conf file.
/etc/rsyslog.d/49-haproxy.conf:
local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~
You have to specify the log in the frontend if you really want every request to be logged. But usually this is overkill for the server and your disk will be full in no time.
the logging via unix socket log does not work for me on my rhel 6.7.you can have a try with this conf. haproxy (working on 81) forward http request to httpd (working on 80)
/etc/haproxy/haproxy.cfg
and you must enable rsyslog udp module to receive syslog from haproxy a simple conf like this:
/etc/rsyslog.d/haproxy.conf
do a http request to 81,and you well get some logs like this
This link explains it perfectly.
If you manualy create log files
/log/haproxy-allbutinfo.log
and/log/haproxy-info.log
, do not forget to change owner tosyslog:adm
This can be caused by having it run in a chroot jail. You'll need to make sure that rsyslog is also creating a dgram socket inside the chroot jail (e.g. /var/lib/haproxy/dev/log). Point your log directive to the /dev/log socket and you should be good.
I spent a couple of hours trying to figure this out, as HAproxy won't tell you anything is wrong besides logging failing to work.