728x90
HAProxy 로깅(haproxy logging) 설정하는 방법
HAProxy는 로드 밸런서 및 프록시 서버로 사용되는 오픈 소스 소프트웨어입니다. 로깅은 HAProxy에서 중요한 기능 중 하나로, 문제 해결 및 성능 모니터링을 위해 필요합니다. HAProxy의 로깅은 기본적으로 로그 파일 또는 로그 서버로 전송하는 방식으로 설정할 수 있습니다.
HAProxy 로깅 설정 방법
- 로그 형식 정의하기
- HAProxy는 로그를 기록할 때 사용할 로그 형식을 정의해야 합니다. 로그 형식은 원하는 정보를 포함하는 서식으로 구성됩니다. 예를 들어, IP 주소, 시간, 요청 메서드, 상태 코드 등을 포함할 수 있습니다.
- 로그 형식은 log-format 설정으로 정의합니다.
- 로그 목적지 선택하기
- 로그는 로그 파일 또는 원격 로그 서버로 전송될 수 있습니다. 로그 파일로 전송하는 경우에는 로그 파일 경로와 파일 크기, 로테이션 정책 등을 설정해야 합니다. 원격 로그 서버로 전송하는 경우에는 로그 서버의 주소와 포트를 지정해야 합니다.
- 로그 목적지 설정은 log 설정으로 정의합니다.
- 옵션 설정하기
- HAProxy에서는 로깅 관련 추가 옵션을 설정할 수 있습니다. 예를 들어, 로그를 버퍼링할지 여부, 로그 수준 설정, 프로세스 ID 포함 여부 등을 설정할 수 있습니다.
- 로깅 옵션 설정은 option 설정으로 정의합니다.
- 로깅 설정 추가하기
- 이제 정의한 로그 형식, 로그 목적지, 로깅 옵션을 사용하여 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
'리눅스' 카테고리의 다른 글
[draft] docker rmi 명령어 (0) | 2021.11.25 |
---|---|
[draft] 도커 컨테이너 IP 테이블 설정 실패 (0) | 2021.11.25 |
CentOS 7에서 HAProxy를 설치하고 구성하는 방법 (0) | 2021.11.24 |
[draft] 우분투에서 Docker 데몬의 로그를 관리하는 방법 (0) | 2021.11.23 |
[리눅스] 도커 컨테이너로 gitlab-runner 실행하는 방법 (1) | 2021.11.21 |