syslog에 haproxy 로깅 sockets.

나는 통해 우분투 14.04에 apt-get을 통해 haproxy 1.5 설치 ppa:vbernat/haproxy-1.5에 따라 http://haproxy.debian.net/

문제는 /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
&~


답변

매우 까다 롭습니다. 🙂 그리고 여기 속임수가 있습니다 :

파일에 /etc/rsyslog.dhaproxy를 로그인하라는 메시지가 표시 되지만 /var/log/haproxy.logrsyslog를 다시 시작하지 않으면 적용되지 않습니다.

service rsyslog restart

답변

기본 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

    local2. * /var/log/haproxy.log
  2. 서버에서 syslogd 로깅 사용-

# UDP syslog 수신 기능 제공
$ ModLoad imudp
$ UDPServerRun 514
$ UDPServerAddress 127.0.0.1

답변

이 줄을 주석으로 처리하십시오. /etc/rsyslog.d

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

답변

주요 문제는 chroot 된 haproxy가 액세스 할 수없고 /dev/log문제를 우회하기 위해 다음 중 하나를 수행 할 수 있다는 것입니다.

  • 다른 메시지에 설명 된대로 syslog가 UDP 소켓 (일반적으로 포트 514)에서 청취하도록 설정하십시오.
  • 디렉토리를 작성하고 바인드 옵션으로 /var/lib/haproxy/dev마운트 하십시오./dev/var/lib/haproxy/dev

어느 쪽이든 작동합니다.

[편집하다]

3 년 후 무언가가 바뀌었다. Haproxy는 이제라는 파일을 만듭니다 /etc/rsyslog.d/49-haproxy. 파일의 라인 중 하나는 다음과 같습니다.

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

이 경우 chroot 환경은 /dev/log