컨테이너 로깅 - syslog 로그

mohadang·2022년 4월 10일
0

도커

목록 보기
13/26
post-thumbnail

syslog

syslog는 유닉스 계열 운영체제에서 로그를 수집하는 오래된 표준 중 하나이다.
커널, 보안 등 시스템과 관련된 로그, 애플리케이션의 로그 등 다양한 종류의 로그를 수집해 저장
대부분의 유닉스 계열 OS에서는 syslog를 사용하는 인터페이스가 동일하기 때문에 체계적으로 로그를 수집하고 분석할 수 있다는 장점 있음

단 syslog에는 많은 정보들이 들어가기에 docker와 관련된 로그를 보기는 힘들다는 단점이 있다.

syslog에 로깅(--log-driver=syslog)

// echo syslogtest 를 실행하는 컨테이너, 로그 드라이버는 syslog 사용
$ docker run -d --name syslog_container --log-driver=syslog ubuntu:14.04 echo syslogtest

// syslog에서 echo syslogtest 확인
$ cat /var/log/syslog | grep syslogtest
Apr 10 16:47:31 red-virtual-machine 59a76315b953[1064]: syslogtest

syslog 위치는 OS 유형에 따라 위치가 다르다

rsyslog로 syslog를 원격에 저장

서버 도커 컨테이너 : rsyslog 서비스가 시작하도록 설정된 컨테이너
클라이언트 도커 컨테이너 : 서버 도커 컨테이너에 syslog 저장

// 서버 도커 컨테이너 생성
$ docker run -it -h rsyslog --name rsyslog_server -p 514:514 -p 514:514/udp ubuntu:14.04
// 서버 도커 컨테이너 안에서 rsyslog.conf 설정
$ root@rsyslog:/# vi /etc/rsyslog.conf
- 파일에서 아래 항복 찾아서 주석 제거
- $ModLoad imudp
- $UDPServerRun 514
- $ModLoad imtcp
- $InputTCPServerRun 514
//서버 도커 컨테이너에서 rsyslog 서비스 재실행
$ root@rsyslog:/# service rsyslog restart

// 클라이언트 도커 컨테이너 생성, 로그 태그 "mylog" 설정, tcp 로그 사용
$ docker run -it --log-driver=syslog --log-opt syslog-address=tcp://172.17.0.1 --log-opt tag="mylog" ubuntu:14.04
// 클라이언 트 도커 컨테이너에서 echo 실행
$ root@a268b2cbfdbd:/# echo test
test

// 서버 도커 컨테이너에서 로그 확인
root@rsyslog:/# cat /var/log/syslog
...
Apr 10 17:05:40 172.17.0.1 mylog[1064]: #033]0;root@a268b2cbfdbd: /#007root@a268b2cbfdbd:/# echo test#015
Apr 10 17:05:40 172.17.0.1 mylog[1064]: test#015

컨테이너를 사용하면 호스트가 어떤 OS든 상관없이 rsyslog를 사용할 수 있다. 이처럼 애플리케이션을 컨테이너로 구현하면 도커 엔진이 설치될 수 있는 OS라면 어떤 환경이라도 간단히 배포할 수 있다.

--log-opt 옵션으로 syslog-facility를 쓰면 로그가 저장될 파일을 바꿀 수 있다.

$ docker run -it --log-driver=syslog --log-opt \
syslog-address=tcp://172.17.0.1 --log-opt tag="maillog" \
--log-opt syslog-facility="mail" ubuntu:14.04
profile
mohadang

0개의 댓글