haproxy 로그 메시지를 / var / log / syslog에서 유지하는 방법 즉, 서버가

이 기사 의 팁을 사용하여 rsyslogd를 통해 haproxy 로깅을 설정했는데 모든 것이 잘 작동하는 것 같습니다. 로그 파일은 로그 메시지를받습니다.

그러나 haproxy의 모든 로그 메시지도에 표시됩니다 /var/log/syslog. 즉, 서버가 활성화되면 syslog는 haproxy 로그 메시지로 실행되므로 매우 쓸모가 없습니다.

에서 해당 메일을 필터링하고 싶습니다 /var/log/syslog. rsyslogd 설명서를 검토 한 후 파일 /etc/rsyslog.d/50-default.conf을 다음과 같이 변경하려고했습니다 .

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

나는 단순히 그 ;haproxy.none부분을 추가했다 . rsyslogd를 다시 시작한 후 변경 사항을 되돌릴 때까지 완전히 작동하지 않았습니다.

내가 무엇을 잘못하고 있지?



답변

다른 로그에 가지 않도록 다음을 수행 할 수도 있습니다.

local0.*                        -/var/log/haproxy.log
& ~

& ~수단이없는 규칙의 나머지 부분에 대한 다른 곳에서는 위의 라인에 일치하는 것을 넣어.


답변

& ~rsyslogd v7에서는 사용 이 더 이상 사용되지 않으며 & stop대신 사용하는 것이 좋습니다. 자세한 내용은 v7compatibility 페이지 의이 섹션에서 확인할 수 있습니다 .

omruleset 및 폐기 (~) 조치는 더 이상 사용되지 않습니다.

둘 다 계속 작동하지만 더 나은 대안으로 대체되었습니다.

삭제 작업 (물결 문자)이 “중지”RainerScript 지시문으로 대체되었습니다. 보다 직관적으로 간주되며 약간 더 나은 성능을 제공합니다.

omruleset 모듈은“call”RainerScript 지시문으로 대체되었습니다. 호출은 서브 루틴과 같은 규칙 세트를 실행할 수있게하며 omruleset보다 훨씬 높은 성능으로 수행합니다. omruleset은 비동기 큐에서 실행될 수 있습니다. 이것은 원하는 효과보다 더 많은 측면이었으며 call 문에서 지원하지 않습니다. 해당 효과가 필요한 경우 호출 된 규칙 세트 조치를 비동기 적으로 실행하여 간단하게 시뮬레이션 할 수 있습니다 (어쨌든이를 처리하는 올바른 방법).

더 이상 사용되지 않는 모듈은 사용될 때 경고 메시지를 표시합니다. 그들은 구문이 더 이상 사용되지 않으며 대체로 사용될 명령문을 알려줍니다. 이는 운영에 영향을 미치지 않습니다. 두 모듈 모두 여전히 완벽하게 작동하며 v7 시간대에서 제거되지 않습니다.

따라서 HAProxy의 경우 다음과 같이 대신하십시오.

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

작동 방식에 & stop대해 rsyslogd는 이전에 일치 한 규칙과 일치하는 추가 메시지를이 시점까지 버립니다. 보장이 규칙이 초기에 포착되어, 당신은에서 파일의 이름을 변경할 수 있습니다 /etc/rsyslog.d/haproxy.conf/etc/rsyslog.d/00-haproxy.conf.


답변

알았어 이것은 내 /etc/rsyslog.d/20-haproxy.conf모습입니다 :

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

줄을 다음 50-default.conf과 같이 변경 했습니다.

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

그리고 지금은 내가 원하는 것을하고있는 것 같습니다.


답변

haproxy 로깅을위한 더 나은 솔루션이 있습니다.

  • HAproxy는 chroot에서 실행되므로 액세스 할 수 없습니다 /dev/log
  • 공식 매뉴얼에 따르면 네트워크 소켓을 수신하도록 rsyslog를 구성해야합니다.

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

그러나 rsyslog 소켓 만 사용할 수 있습니다.

rsyslog.d / haproxy.conf :

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg :

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......

답변

파일의 순서를 엉망으로 만들지 않기 때문에 대신 local0.none을 추가하십시오 . 줄 항목. 구성은 다음과 같습니다.

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(CentOS 7에서 테스트)

희망이 도움이됩니다!