syslog에 haproxy 로깅


13

나는 통해 우분투 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
&~

답변:


21

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

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

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-

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

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

2
마지막 부분에서 두 번째 단계 (서버에서 syslogd 로깅 사용); 파일에서이 설정을 변경합니다 /etc/rsyslog.conf. 그런 다음 rsyslog 서비스를 다시 시작하십시오. service rsyslog restart
Edenshaw

6

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

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

1
/etc/rsyslog.d파일이 아닌 디렉토리입니다. 우분투에서 1.5 대 1.6의 차이점에 대해 확신 할 수 없지만 /etc/rsyslog.d/49-haproxy.conf1.6 설치 후 파일 이 존재합니다. 이것은 다음과 같은 3 줄이 있습니다 $AddUnixListenSocket /var/lib/haproxy/dev/log \n if $programname startswith 'haproxy' then /var/log/haproxy.log \n &~(I 추가 "\ n"새로운 라인을 표시하기 위해)
fideloper

3

주요 문제는 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


chroot에 로그 소켓을 추가 할 수도 있습니다. rsyslog는 여러 개를 가질 수 있습니다. (나는 예를 들었지만 몇 년이
지났다

이것은 더 이상 최신 버전의 HAProxy의 경우가 아니며 chrooted 구성으로 버전 1.5.4를 실행하고 있지만로 로깅합니다 /dev/log.
Overbryd

@Overbryd 예와 아니오. 최신 haproxy는 /etc/rsyslog.d에 파일을 추가하고 다음 명령문을 사용하여 $ AddUnixListenSocket / var / lib / haproxy / dev / log에 주석을 추가합니다.
maxadamo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.