[HAProxy] 에러 로그가 TTY 세션에 침범하는 문제
Linux에서 HAProxy를 적당히 깔아서 쓸다보면, 이런 당황스런 일을 마주할 수 있다.
haproxy에서 발생하는 에러 로그가 스팸처럼 아무때나 막 밀고 들어오는 것이다.
이거 자체로는 큰 문제가 생기진 않지만, 굉장히 짜증하는 현상이다.
도대체 왜 이러는걸까?
저 현상은 이런 맥락에서 발생한다.
- HAProxy가 syslog(/dev/log)로 에러 로그를 보냄
- rsyslog 기본 규칙에 *.emerg :omusrmsg:*가 있음
- 특정 상황에서 HAProxy 로그가 emerg 레벨로 기록됨
- rsyslog가 그 메시지를 모든 로그인 사용자 TTY로 브로드캐스트
- 그 결과 작업 중인 터미널 화면에 로그가 “침입”해서 보임
HAProxy가 에러 레벨을 좀 호들갑떨면서 보내니까, 그걸 syslog가 받아서 같이 호들갑떨면서 모든 터미널 세션에 공중파 방송을 때리는 것이다.
스팸을 끄고싶다면, 다음과 같은 방식으로 조치할 수 있다.
HAProxy의 로그 저장소를 명시적으로 지정하고, 그냥 거기에 쓰도록 하는 것이다.
# 1) 전용 규칙 파일 생성
sudo tee /etc/rsyslog.d/49-haproxy.conf > /dev/null <<'EOF'
if ($programname == 'haproxy') then /var/log/haproxy.log
& stop
EOF
# 2) 로그 파일 생성/권한
sudo touch /var/log/haproxy.log
sudo chown syslog:adm /var/log/haproxy.log
sudo chmod 640 /var/log/haproxy.log
# 3) 반영
sudo systemctl restart rsyslog
sudo systemctl restart haproxy # reload로는 안됨
이러면 이제 정신없는 에러 로그에 정신이 침식당하지 않는다.
참조https://serverfault.com/questions/704639/disable-haproxy-logging-messages