Haproxy가 요청을 기록하지 않습니까?


12

따라서 로깅이 rsyslog를 통과하고 지금은 모두 하나의 파일로 덤프되도록 Haproxy를 구성했습니다.

시작시 "시작"메시지가 표시되지만 HTTP 요청이 전혀 기록되지 않으므로 명확하게 로깅됩니다. 내 구성에 어떤 문제가 있습니까?

haproxy.cfg :

global
        log /dev/log local0 debug
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

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

frontend webfront
  option  forwardfor
  stats enable
  stats uri /haproxy?statis
  stats realm Haproxy\ Auth
  stats auth user:password
  bind *:80
  timeout client 86400000
  acl is_discourse  hdr_end(host) -i discourse.mydomain.com
  use_backend       discourse     if is_discourse
  use_backend       webserver     if !is_discourse

backend discourse
  balance source
  option forwardfor
  option httpclose
  server server1 127.0.0.1:3080 weight 1 maxconn 1024 check inter 10000

backend webserver
  balance source
  option forwardfor
  option httpclose
  server server2 127.0.0.1:4080 weight 1 maxconn 1024 check inter 10000

로그 파일 :

root@kayak:/var/log/haproxy# tail haproxy.log
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webfront started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy discourse started.
Nov 26 21:25:25 kayak haproxy[21646]: Proxy webserver started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webfront started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy discourse started.
Nov 26 21:28:10 kayak haproxy[21868]: Proxy webserver started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webfront started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy discourse started.
Nov 26 21:30:31 kayak haproxy[22045]: Proxy webserver started.

나는 thsoe 재부팅 사이에 웹 서버 페이지 중 일부를 방문했으며 404 오류가 약간 발생했습니다. 왜 아무것도 나타나지 않습니까?

편집 : rsyslog conf 파일.

/etc/rsyslog.d/49-haproxy.conf :

local0.* -/var/log/haproxy_0.log
if ($programname == 'haproxy') then -/var/log/haproxy/haproxy.log
& ~

1
이 문제를 해결 했습니까?
Terence Chow

답변:


11

모든 요청을 실제로 기록하려면 프론트 엔드에서 로그를 지정해야합니다. 그러나 일반적으로 이것은 서버에 과잉이며 디스크는 곧 가득 찰 것입니다.

frontend webfront
  log /dev/log local0 debug

아 고마워 최대한 빨리 시도하겠습니다. 즉, Discourse 인스턴스에 대한 연결 문제를 해결해야하므로 일시적 일뿐입니다. 내가 무엇을 시도해도 프록시를 사용할 수없는 것 같습니다. ( serverfault.com/questions/645031/… )
실버 퀘 티어

2
이것을 추가하려고 시도했지만 더 이상 기록하지 않습니다. 아마도 rsyslog제대로 구성되지 않았습니까? 말할 방법이 있을까요?
Silver Quettier

나를 위해 그것은 효과가 있었다.
Dima Medvedev

우분투 14.0.4의 rsyslog는 /var/log/haproxy.log에 기록되지 않지만 기본적으로 설치 로그는 / var / log / syslog에 기록됩니다.
lee

2
무엇입니까/dev/log
Miranda

7

내 유권 6.7에서 유닉스 소켓 로그를 통한 로깅이 작동하지 않습니다.이 conf를 사용해보십시오. haproxy (81에서 작업) http 요청을 httpd로 전달 (80에서 작업)

/etc/haproxy/haproxy.cfg

frontend web_front
    log         127.0.0.1    local6
    option httplog

    bind        *:81
    default_backend web_back

backend web_back
    server      web1 127.0.0.1:80

그리고 rsyslog udp 모듈이 haproxy로부터 다음과 같은 간단한 conf를 수신하도록 syslog를 활성화해야합니다.

/etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
local6.* /var/log/haproxy.log

81에 http 요청을하면 다음과 같은 로그를 얻을 수 있습니다.

# tail -n 1 /var/log/haproxy.log
May 18 13:51:07 localhost haproxy[31617]: 127.0.0.1:38074 [18/May/2016:13:51:06.999] web_front web_back/web1 0/0/0/2/2 404 466 - - ---- 1/1/0/1/0 0/0 "GET /how-are-you HTTP/1.1"

5

이것은 chroot jail에서 실행되어 발생할 수 있습니다. rsyslog가 chroot jail (예 : / var / lib / haproxy / dev / log) 내에 dgram 소켓도 작성하고 있는지 확인해야합니다. 로그 지시문을 / dev / log 소켓으로 지정하면 정상입니다.

HAproxy는 로깅이 작동하지 않는 것 외에는 잘못된 점을 알려주지 않기 때문에 몇 시간 동안 이것을 알아 내려고 노력했습니다.


4

이 링크 는 완벽하게 설명합니다.

/etc/haproxy/haproxy.cfg의 상단을 보면 다음과 같은 내용이 표시됩니다.

global
log 127.0.0.1 local2
[...]

이는 HAProxy가 127.0.0.1의 rsyslog에 메시지를 전송 함을 의미합니다. 그러나 기본적으로 rsyslog는 주소를 수신하지 않으므로 문제가 발생합니다.

/etc/rsyslog.conf를 편집하고 다음 줄의 주석을 해제하십시오 :
$ModLoad imudp
$UDPServerRun 514

이것은 rsyslog가 모든 IP 주소에 대해 UDP 포트 514에서 청취하게합니다. 선택적으로 다음을 추가하여 127.0.0.1로 제한 할 수 있습니다.
$UDPServerAddress 127.0.0.1

이제 다음을 포함하는 /etc/rsyslog.d/haproxy.conf 파일을 만듭니다.

local2.* /log/haproxy.log

물론 메시지 레벨에 따라보다 구체적이고 별도의 로그 파일을 작성할 수 있습니다.

local2.=info /log/haproxy-info.log
local2.notice /log/haproxy-allbutinfo.log

그런 다음 rsyslog를 다시 시작하고 로그 파일이 작성되는지 확인하십시오.
# service rsyslog restart

수동으로 로그 파일을 작성 /log/haproxy-allbutinfo.log하고 /log/haproxy-info.log소유자를로 변경하는 것을 잊지 마십시오syslog:adm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.