본문 바로가기

리눅스

HAProxy 로깅(haproxy logging) 설정하는 방법

728x90

HAProxy 로깅(haproxy logging) 설정하는 방법

HAProxy는 로드 밸런서 및 프록시 서버로 사용되는 오픈 소스 소프트웨어입니다. 로깅은 HAProxy에서 중요한 기능 중 하나로, 문제 해결 및 성능 모니터링을 위해 필요합니다. HAProxy의 로깅은 기본적으로 로그 파일 또는 로그 서버로 전송하는 방식으로 설정할 수 있습니다.

HAProxy 로깅 설정 방법

  1. 로그 형식 정의하기
    • HAProxy는 로그를 기록할 때 사용할 로그 형식을 정의해야 합니다. 로그 형식은 원하는 정보를 포함하는 서식으로 구성됩니다. 예를 들어, IP 주소, 시간, 요청 메서드, 상태 코드 등을 포함할 수 있습니다.
    • 로그 형식은 log-format 설정으로 정의합니다.
  2. 로그 목적지 선택하기
    • 로그는 로그 파일 또는 원격 로그 서버로 전송될 수 있습니다. 로그 파일로 전송하는 경우에는 로그 파일 경로와 파일 크기, 로테이션 정책 등을 설정해야 합니다. 원격 로그 서버로 전송하는 경우에는 로그 서버의 주소와 포트를 지정해야 합니다.
    • 로그 목적지 설정은 log 설정으로 정의합니다.
  3. 옵션 설정하기
    • HAProxy에서는 로깅 관련 추가 옵션을 설정할 수 있습니다. 예를 들어, 로그를 버퍼링할지 여부, 로그 수준 설정, 프로세스 ID 포함 여부 등을 설정할 수 있습니다.
    • 로깅 옵션 설정은 option 설정으로 정의합니다.
  4. 로깅 설정 추가하기
    • 이제 정의한 로그 형식, 로그 목적지, 로깅 옵션을 사용하여 HAProxy 구성 파일에 로깅 설정을 추가합니다.

간단한 예시

다음은 HAProxy 로깅 설정의 간단한 예시입니다.

# 로그 형식 정의
log-format %ci:%cp\ [%t]\ %ft\ %b/%s\ %Tw/%Tc/%Tt\ %B\ %ts\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ {%hrl}\ {%hsl}\ %{+Q}r

# 로그 목적지 설정 (로그 파일로 저장)
log /var/log/haproxy.log format custom

# 로깅 옵션 설정
option log-separate-errors       # 에러 로그를 따로 기록
option dontlognull              # 요청이 null로 들어올 때 로그 기록 안함
option http-server-close        # 서버 응답 후 연결 닫기

# 그 외 설정
frontend my_frontend
  bind *:80
  default_backend my_backend

backend my_backend
  server backend_server1 192.168.1.10:80
  server backend_server2 192.168.1.11:80

위의 예시에서는 사용자 정의 로그 형식을 정의하고 /var/log/haproxy.log 파일에 로그를 저장하도록 설정하였습니다. 또한 추가적인 로깅 옵션도 설정하였습니다.

 

HAProxy 로깅 설정은 사용자의 요구 사항에 따라 다양하게 구성할 수 있습니다. 필요에 따라 로그 형식, 로깅 옵션, 로그 목적지 등을 조정하여 원하는 로그 기록 방식을 설정할 수 있습니다.

 

728x90

HAProxy 로깅을 설정하고 rsyslog를 사용하여 로그를 원격 서버로 전송하는 방법

  • rsyslog 설정
    • rsyslog에 대한 로깅 구성
vim /etc/rsyslog.conf
$ vim /etc/rsyslog.conf
...
#HAproxy
local0.*                                                /var/log/haproxy0.log
local1.*                                                /var/log/haproxy1.log
systemctl restart rsyslog
  • HAProxy 로깅 설정
  • haproxy.cfg 편집
    • log /dev/log local0
    • log /dev/log local1 notice
    • log global
vim /etc/haproxy/haproxy.cfg
$ vim /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    #log         127.0.0.1 local2
    log         /dev/log local0
    log         /dev/log local1 notice

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
    ....
  • 활성화를 위해 /etc/default/haproxy 파일 생성
echo "ENABLED=1" > /etc/default/haproxy
  • haproxy 서비스 재기동
systemctl restart haproxy
  • 로그 파일 확인
ls -l /var/log | grep haproxy
$ ls -l /var/log | grep haproxy
-rw-------  1 root   root      668 Nov 24 20:42 haproxy0.log
-rw-------  1 root   root      668 Nov 24 20:42 haproxy1.log
cat /var/log/haproxy0.log
$ cat /var/log/haproxy0.log
...
Nov 24 20:42:03 datanode03 haproxy[6107]: Proxy www-lb started.
Nov 24 20:42:03 datanode03 haproxy[6107]: Proxy www-lb started.
Nov 24 20:42:03 datanode03 haproxy[6107]: Proxy kibana5601 started.
Nov 24 20:42:03 datanode03 haproxy[6107]: Proxy elasticsearch9200 started.
Nov 24 20:42:03 datanode03 haproxy[6107]: Proxy stats started.
  • 로그 로테이트 설정
vim /etc/logrotate.d/haproxy
$ vim /etc/logrotate.d/haproxy
#/var/log/haproxy.log {
/var/log/haproxy*.log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

 

참고URL

- Introduction to HAProxy Logging : https://www.haproxy.com/blog/introduction-to-haproxy-logging

 

728x90