haproxy记录到syslog


13

ppa:vbernat/haproxy-1.5按照http://haproxy.debian.net/在ubuntu 14.04上通过apt-get安装了haproxy 1.5

问题是它登录到/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
&~

也许此链接可以帮助您:kvz.io/blog/2010/08/11/haproxy-logging
Federico Sierra

Answers:


21

非常棘手。:-)这是技巧的答案:

注意其中的文件/etc/rsyslog.d说将haproxy登录到,/var/log/haproxy.log但是如果不重新启动rsyslog,该文件将不会生效:

service rsyslog restart

9

默认haproxy.conf文件在“全局设置- ”下提供了清晰的说明global。在这里,我正在为您复制粘贴-

#------------------------------------------------- --------------------
# 全局设置
#------------------------------------------------- --------------------
全球
    #使这些消息最终出现在/var/log/haproxy.log中,您将
    # 需要:
    #
    #1)配置syslog以接受网络日志事件。这个做完了
    #通过将'-r'选项添加到SYSLOGD_OPTIONS中
    #/ etc / sysconfig / syslog
    #
    #2)将local2事件配置为转到/var/log/haproxy.log
    #个文件。可以将以下行添加到
    #/ etc / sysconfig / syslog
    #
    #

以我为例,例如,我在同一syslogd服务器CentOS 6.6中运行haproxy,必须执行以下操作才能登录到/var/log/haproxy.log:

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

    本地2. * /var/log/haproxy.log
  2. 在服务器上启用syslogd日志-

#提供UDP Syslog接收
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerAddress 127.0.0.1

2
在最后一部分中,第二步(在服务器上启用syslogd登录);您可以在文件中更改这些设置/etc/rsyslog.conf。之后,重新启动service rsyslog restart
rsyslog

6

注释掉这行 /etc/rsyslog.d

# Send HAProxy messages to a dedicated logfile
if $programname startswith 'haproxy' then /var/log/haproxy.log

1
/etc/rsyslog.d是目录,而不是文件。我不确定Ubuntu上1.5和1.6的区别,但是/etc/rsyslog.d/49-haproxy.conf安装1.6后文件存在。它包含以下3行:( $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~我添加了“ \ n”来表示新行)
fideloper 2016年

3

主要问题是无法使用chrooted haproxy,/dev/log并且为了规避此问题,您可以:

  • 启用syslog来监听UDP套接字(通常在端口514上),如其他消息中所述
  • 创建目录/var/lib/haproxy/dev/dev使用bind选项挂载到/var/lib/haproxy/dev

无论哪种方式都可以。

[编辑]

3年后,情况发生了变化。Haproxy现在创建一个名为的文件/etc/rsyslog.d/49-haproxy。该文件中的一行是:

$AddUnixListenSocket /var/lib/haproxy/dev/log

在这种情况下,chroot环境可以使用 /dev/log


您也可以只在chroot中添加一个日志套接字。rsyslog可以有多个。(我举个例子,但是已经好几年了)
Florian Heigl

对于更高版本的HAProxy不再是这种情况,我正在使用chrooted配置运行版本1.5.4,但登录到/dev/log
Overbryd

@Overbryd是和否。较新的haproxy在/etc/rsyslog.d中添加了一个文件,其中包含以下语句:$ AddUnixListenSocket / var / lib / haproxy / dev / log我将相应地编辑我的注释。
maxadamo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.