HAProxy 记录到系统日志

HAProxy 记录到系统日志

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:

  1. 添加以下行至/etc/rsyslog.d/haproxy.conf-

    本地2。* /var/log/haproxy.log
  2. 在服务器上启用 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

相关内容