■ syslog
대부분의 유닉스 계열 운영체제는 syslog 를 사용하는 인터페이스가 동일하다.
다음의 명령어를 입력하여 syslog에 로그를 저장하는 컨테이너 생성한다.
# docker run -d --name syslog_container \ > --log-driver=syslog \ > ubuntu:14.04 \ > echo syslogtest
syslog는 기본적 호스트의 syslog에 저장함, 각 운영체제에 따라 저장장소가 다름.
ubuntu : /var/log/syslog, Centos : /var/log/massages
■ rsyslog를 사용한 중앙 컨테이너로 로그 저장
syslog를 사용할 서버와 클라이언트 두 개의 머신을 따로 설정이 필요함.
서버호스트에 rsyslog 가 시작하도록 컨테이너 구동,
클라이언트 호스트에서 컨테이너를 생성하여 서버의 rsyslog 컨테이너에 로그 저장.
# docker run -i -t \ > -h rsyslog \ > --name rsyslog_server \ > -p 514:514 -p 514:514/udp \ > ubuntu:14.04
설치된 컨테이너 내의 환경파일 설정 (vi /etc/rsyslog.conf)
# provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
그리고 서비스 재시작.
# service rsyslog restart
다음은 클라이언트 서버에서 도커 컨테이너 실행
# docker run -i -t \ --log-driver=syslog \ --log-opt syslog-address=tcp://192.168.0.0:514 \ --log-opt tag="mylog" \ ubuntu:14.04
--log-opt는 로그 드라이버에 추가할 옵션을 뜻함.
syslog-address 에 rsyslog 컨테이너에 접근할 수 있는 주소 설정.
tag는 로그가 기록될때 함께 저장될 태그이며 로그를 분류하기 위한 설정.
rsyslog의 설정파일을 변경할대 tcp, udp의 모두 활성화 했으므로,
syslog 는 tcp 뿐만 아니라 udp 로도 사용가능함.
# docker run -i -t \ --log-driver=syslog \ --log-opt syslog-address=udp://192.168.0.0:514 \ --log-opt tag="mylog" \ --log-opt syslog-facility="mail" \ ubuntu:14.04
--log-opt syslog-facility 옵션은 rsyslog 서버 컨테이너에 해당 facility에 대항하는 새로운 로그파일이 생성됨.