ppa:vbernat/haproxy-1.5
我按照此方法在 ubuntu 14.04 上通过 apt-get 安装了 HAProxy 1.5Debian 存储库选择工具。
问题是它记录到/var/log/syslog
而不是/var/log/haproxy.log
该设置基本上是默认的:
/etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
ssl-default-bind-options no-sslv3
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
/etc/rsyslog.d
# 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
&~
答案1
非常棘手。:-) 以下是技巧答案:
注意文件中/etc/rsyslog.d
说将 haproxy 登录到/var/log/haproxy.log
但如果不重新启动 rsyslog,此操作将不会生效:
service rsyslog restart
答案2
默认haproxy.conf
文件在全局设置下提供了清晰的说明 - global
。我在这里为您复制粘贴 -
#--------------------------------------------------------------------- # 全局设置 #--------------------------------------------------------------------- 全球的 # 要让这些消息最终出现在 /var/log/haproxy.log 中,你需要 # 需要: # # 1) 配置 syslog 以接受网络日志事件。这已完成 # 通过在 SYSLOGD_OPTIONS 中添加“-r”选项 # /etc/sysconfig/syslog # # 2)配置 local2 事件到 /var/log/haproxy.log # 文件。可以将如下行添加到 # /etc/sysconfig/syslog # #
就我而言,例如,我在 CentOS 6.6 中运行 haproxy,同样的 syslogd 服务器,必须执行以下操作才能记录到 /var/log/haproxy.log:
添加以下行至
/etc/rsyslog.d/haproxy.conf
-本地2。* /var/log/haproxy.log
在服务器上启用 syslogd 日志记录 -
# 提供 UDP 系统日志接收 $ModLoad imudp $UDP服务器运行 514 $UDP服务器地址 127.0.0.1
答案3
注释掉此行/etc/rsyslog.d
# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log
答案4
主要问题是 chrooted haproxy 将无法访问/dev/log
,为了解决这个问题,您可以:
- 启用 syslog 来监听 UDP 套接字(通常在端口 514 上),如其他消息中所述
- 创建目录
/var/lib/haproxy/dev
并/dev
使用绑定选项挂载到/var/lib/haproxy/dev
无论哪种方式都可以。
[编辑]
三年后,情况发生了变化。Haproxy 现在创建了一个名为的文件/etc/rsyslog.d/49-haproxy
。文件中有一行是:
$AddUnixListenSocket /var/lib/haproxy/dev/log
。
在这种情况下,chroot 环境可以使用/dev/log