HAProxy는 파일에 대한 로깅을 지원합니까?


14

테스트 서버에 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 등을 구성해야합니까?


2
HAProxy가 파일에 기록 할 수 있다고 생각하지 않으며, 그 이유는 디스크 쓰기가 차단 작업이기 때문입니다. 왜합니까 정말 없는 시스템 로그를 사용하려면? 구성이 까다로운 것은 아닙니다. HAProxy 로그를 모든 것과 혼합하지 않으려면 로컬 기능을 HAProxy에 지정하고 해당 항목을 다른 syslog 파일 (또는 네트워크 스트림)이 아닌 다른 파일에 쓰도록 syslog 데몬을 구성 할 수 있습니다. 그밖에.
Michael-sqlbot

답변:


14

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 하십시오.


"E : 패키지 logstash를 찾을 수 없습니다"가 표시됩니다. 우분투에서 logstash가 제거 되었습니까?
user568021

@ user568021은 logstash가 우분투에서 제공되지 않는 것 같지만 elastic (logstash의 관리자)은 적절한 소스를 제공합니다. 또한 logstash는 Java 소프트웨어이므로 JRE (ubuntu에서 제공)로 실행중인 jar 파일을 다운로드하여 실행할 수 있습니다.
user801247

7

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.log에 영향을주지 않고 /var/log/haproxy-errors.log와 같은 오류에 대해 별도의 로그를 작성하려면 어떻게해야합니까?
Khurshid Alam

0

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

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

log /var/<directory>/ha.log

2
시도 sudo touch /var/log/ha.log하고 구성에 추가 log /var/log/ha.log local0했지만 위와 같은 오류가 발생했습니다 connection refused.
IGGt

왜 결국 local0을 주나요?
KKD

1
나는 그것을 떠나려고 시도했지만 다시 시작할 때 오류가 발생 'log' expects <address> and <facility> as arguments.하여 거기에 뭔가가 필요했습니다. 지침에 따르면 <facility> must be one of the 24 standard syslog facilities(문제의 일부일 수 있습니다)
IGGt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.