Graylog Extended Format 로깅 드라이버

Graylog Extended Format 로깅 드라이버 (Graylog Extended Format logging driver)

gelf 로깅 드라이버는 Graylog, Logstash, Fluentd 같은 많은 도구가 이해하는 편리한 형식이에요. 많은 도구가 이 형식을 사용해요.

GELF에서 모든 로그 메시지는 다음 필드를 가진 사전(dict)이에요:

  • Version (버전)
  • Host (첫 번째로 메시지를 보낸 사람)
  • Timestamp (타임스탬프)
  • 메시지의 짧은 버전과 긴 버전
  • 직접 구성한 사용자 지정 필드

출처: 문서

본문

사용법 (Usage)

gelf 드라이버를 기본 로깅 드라이버로 사용하려면 daemon.json 파일에서 log-driverlog-opt 키를 적절한 값으로 설정해요. daemon.json으로 Docker를 구성하는 것에 대한 자세한 내용은 daemon.json을 참고하세요.

Note Docker Desktop을 사용한다면 Docker Desktop Dashboard를 통해 데몬 구성을 편집해요. Settings를 열고 Docker Engine을 선택해요. 자세한 내용은 Docker Engine 설정을 참고하세요.

다음 예시는 로그 드라이버를 gelf로 설정하고 gelf-address 옵션을 설정해요.

{
  "log-driver": "gelf",
  "log-opts": {
    "gelf-address": "udp://1.2.3.4:12201"
  }
}

변경 사항을 적용하려면 Docker를 재시작해요.

Note daemon.json 구성 파일의 log-opts 구성 옵션은 문자열로 제공해야 해요. 따라서 부울 및 숫자 값(예: gelf-tcp-max-reconnect 값)은 따옴표(")로 감싸야 해요.

docker container create 또는 docker run을 사용할 때 --log-driver 플래그를 설정해 특정 컨테이너의 로깅 드라이버를 설정할 수 있어요:

$ docker run \
      --log-driver gelf --log-opt gelf-address=udp://1.2.3.4:12201 \
      alpine echo hello world

GELF 옵션 (GELF options)

gelf 로깅 드라이버는 다음 옵션을 지원해요:

Option Required Description Example value
gelf-address required GELF 서버의 주소. tcpudp만 지원되는 URI 지정자이며 포트를 지정해야 해요. --log-opt gelf-address=udp://192.168.0.42:12201
gelf-compression-type optional UDP Only GELF 드라이버가 각 로그 메시지를 압축하는 데 사용하는 압축 유형. 허용 값은 gzip, zlib, none이에요. 기본값은 gzip이에요. 활성화된 압축은 과도한 CPU 사용을 초래하므로 이를 none으로 설정하는 것을 적극 권장해요. --log-opt gelf-compression-type=gzip
gelf-compression-level optional UDP Only gzip 또는 zlibgelf-compression-type일 때의 압축 수준. -1에서 9(BestCompression) 범위의 정수. 기본값은 1(BestSpeed)이에요. 더 높은 수준은 더 낮은 속도에서 더 많은 압축을 제공해요. -1 또는 0은 압축을 비활성화해요. --log-opt gelf-compression-level=2
gelf-tcp-max-reconnect optional TCP Only 연결이 끊어졌을 때의 최대 재연결 시도 횟수. 양의 정수. 기본값은 3이에요. --log-opt gelf-tcp-max-reconnect=3
gelf-tcp-reconnect-delay optional TCP Only 재연결 시도 사이에 기다리는 초 수. 양의 정수. 기본값은 1이에요. --log-opt gelf-tcp-reconnect-delay=1
tag optional gelf 메시지의 APP-NAME에 추가되는 문자열. 기본적으로 Docker는 컨테이너 ID의 처음 12자를 사용해 로그 메시지에 태그를 붙여요. 로그 태그 형식 사용자 지정은 log tag option documentation 참고. --log-opt tag=mailer
labels optional Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 라벨의 쉼표 구분 목록. 밑줄(_)로 접두된 extra 필드에 추가 키를 더해요. 고급 log tag options에서 사용. --log-opt labels=production_status,geo
labels-regex optional labels와 유사하고 호환됨. 로깅 관련 라벨을 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt labels-regex=^(production_status
env optional Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 환경 변수의 쉼표 구분 목록. 밑줄(_)로 접두된 extra 필드에 추가 키를 더해요. 고급 log tag options에서 사용. --log-opt env=os,customer
env-regex optional env와 유사하고 호환됨. 로깅 관련 환경 변수를 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt env-regex=^(os

Note gelf 드라이버는 TCP 연결에 TLS를 지원하지 않아요. TLS로 보호된 입력으로 보낸 메시지는 조용히 실패할 수 있어요.

예시 (Examples)

이 예시는 컨테이너가 포트 12201192.168.0.42에서 실행되는 GELF 서버를 사용하도록 구성해요.

$ docker run -dit \
    --log-driver=gelf \
    --log-opt gelf-address=udp://192.168.0.42:12201 \
    alpine sh

더 알아보기 (Learn more)