Syslog 로깅 드라이버

Syslog 로깅 드라이버 (Syslog logging driver)

syslog 로깅 드라이버는 로그를 syslog 서버로 라우팅해요. syslog 프로토콜은 로그 메시지로 원시 문자열을 사용하고 제한된 메타데이터 집합을 지원해요. syslog 메시지는 유효하려면 특정 방식으로 형식화되어야 해요. 유효한 메시지에서 수신자는 다음 정보를 추출할 수 있어요:

  • Priority: debug, warning, error, info 같은 로깅 수준.
  • Timestamp: 이벤트가 발생한 시점.
  • Hostname: 이벤트가 발생한 위치.
  • Facility: mail 또는 kernel 같은 메시지를 기록한 하위 시스템.
  • Process name and process ID (PID): 로그를 생성한 프로세스의 이름과 ID.

형식은 RFC 5424에 정의되어 있고 Docker의 syslog 드라이버는 ABNF reference를 다음과 같이 구현해요:

                TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
                    +          +             +           |        +
                    |          |             |           |        |
                    |          |             |           |        |
       +------------+          +----+        |           +----+   +---------+
       v                            v        v                v             v
2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}

출처: 문서

본문

사용법 (Usage)

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

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

다음 예시는 로그 드라이버를 syslog로 설정하고 syslog-address 옵션을 설정해요. syslog-address 옵션은 UDP와 TCP를 모두 지원해요. 이 예시는 UDP를 사용해요.

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://1.2.3.4:1111"
  }
}

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

Note daemon.json 구성 파일의 log-opts 구성 옵션은 문자열로 제공해야 해요. 따라서 숫자 및 부울 값(syslog-tls-skip-verify 값 등)은 따옴표(")로 감싸야 해요.

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

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

옵션 (Options)

다음 로깅 옵션은 syslog 로깅 드라이버의 옵션으로 지원돼요. daemon.json에서 log-opts JSON 배열에 키-값 쌍으로 추가해 기본값으로 설정할 수 있어요. 또한 컨테이너를 시작할 때 각 옵션에 --log-opt <key>=<value> 플래그를 추가해 주어진 컨테이너에 설정할 수도 있어요.

Option Description Example value
syslog-address 외부 syslog 서버의 주소. URI 지정자는 `[tcp udp
syslog-facility 사용할 syslog facility. 유효한 syslog facility의 숫자 또는 이름일 수 있어요. syslog documentation 참고. --log-opt syslog-facility=daemon
syslog-tls-ca-cert CA가 서명한 신뢰 인증서의 절대 경로. 주소 프로토콜이 tcp+tls가 아니면 무시돼요. --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
syslog-tls-cert TLS 인증서 파일의 절대 경로. 주소 프로토콜이 tcp+tls가 아니면 무시돼요. --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
syslog-tls-key TLS 키 파일의 절대 경로. 주소 프로토콜이 tcp+tls가 아니면 무시돼요. --log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem
syslog-tls-skip-verify true로 설정하면 syslog 데몬에 연결할 때 TLS 검증이 건너뛰어져요. 기본값은 false예요. 주소 프로토콜이 tcp+tls가 아니면 무시돼요. --log-opt syslog-tls-skip-verify=true
tag syslog 메시지의 APP-NAME에 추가되는 문자열. 기본적으로 Docker는 컨테이너 ID의 처음 12자를 사용해 로그 메시지에 태그를 붙여요. 로그 태그 형식 사용자 지정은 log tag option documentation 참고. --log-opt tag=mailer
syslog-format 사용할 syslog 메시지 형식. 지정하지 않으면 지정된 호스트 이름 없이 로컬 Unix syslog 형식이 사용돼요. RFC-3164 호환 형식은 rfc3164, RFC-5424 호환 형식은 rfc5424, 마이크로초 타임스탬프 해상도의 RFC-5424 호환 형식은 rfc5424micro를 지정해요. --log-opt syslog-format=rfc5424micro
labels Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 라벨의 쉼표 구분 목록. 고급 log tag options에서 사용. --log-opt labels=production_status,geo
labels-regex Docker 데몬 시작 시 적용. labels와 유사하고 호환됨. 로깅 관련 라벨을 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt labels-regex=^(production_status
env Docker 데몬 시작 시 적용. 이 데몬이 받아들이는 로깅 관련 환경 변수의 쉼표 구분 목록. 고급 log tag options에서 사용. --log-opt env=os,customer
env-regex Docker 데몬 시작 시 적용. env와 유사하고 호환됨. 로깅 관련 환경 변수를 일치시키는 정규식. 고급 log tag options에서 사용. `--log-opt env-regex=^(os

더 알아보기 (Learn more)