HAProxy는 파일에 대한 로깅을 지원합니까? 작성하는 방법이 있습니까? 이것은 테스트 전용이므로

테스트 서버에 haproxy 를 설치했습니다 .

syslog가 아닌 로컬 파일에 로그를 작성하는 방법이 있습니까?

이것은 테스트 전용이므로 모든 테스트 데이터로 포트를 열거 나 syslog를 복잡하게 만들고 싶지 않습니다.

불행히도, 내가 찾을 수있는 유일한 정보는 syslog 서버에 로깅하는 것과 관련이 있습니다.

나는 다음을 사용하려고 시도했다.

log /home/user/ha.log local0

내 구성에서. 그러나 그것은 나에게 말했다 :

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2)

내가 다시 시작할 때. 그래서 나는 파일을 touch /home/user/ha.log만들고 그 시점에서 다시 시작했다.

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111)

이것이 가능합니까, 아니면 테스트 데이터를보기 위해 syslog 등을 구성해야합니까?



답변

Haproxy는 단순히 파일에 대한 로깅을 지원하지 않습니다. 설명서 ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log )에 명시된 바와 같이 “log”문은 첫 번째 매개 변수로 주소를 사용합니다. 파일 인 경우 유닉스 소켓이며 HAProxy는이 소켓에 syslog 형식으로 말합니다. Haproxy는 파일을 쓰는 것이 아니라 요청을 프록시하는 것이므로 로그 파일 쓰기를 syslog에 위임하기 때문에 이와 같이 설계되었습니다. 기계를 망가 뜨리지 않으려면 예를 들어 logstash를 설치하고 다음을 실행 한 후 haproxy.cfg에 다음

logstash -e 'input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }'

을 추가

log /tmp/haprxoy_log.sock

하십시오.


답변

haproxy log config 파일을 아래 /etc/rsyslog.d/에서 파일이 원하는 경로를 가리 키도록 변경할 수 있습니다 . 다른 배포판에 대해 확실하지 않습니다. 나를 위해 데비안을 사용하고 있습니다. /etc/rsyslog.d/49-haproxy.conf을 가리 키도록 변경 했습니다 /var/log/haproxy/haproxy.log.

# 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/haproxy.log
&~

또한 /etc/logrotate.d/haproxy새 경로로 로그인 경로를 업데이트해야 합니다. 를 사용하여 새로 구성된 경로에서 로그 파일을 회전하고 압축 gzip합니다.

그런 다음 rsyslog.service를 다시 시작하십시오.

sudo systemctl restart rsyslog.service

이제 haproxy.log.*파일이 /var/log/haproxy/디렉토리에 있습니다.


답변

사용자 홈 디렉토리에서 구성을 시도했지만 haproxy에 사용자의 홈 디렉토리에 액세스 할 수있는 권한이 없으므로 문제가 발생합니다.

대신 다른 위치에서 시도하여 디렉토리를 만드십시오. /var/<directory>

log /var/<directory>/ha.log