Docker - (3) : 도커로그

­이승환·2021년 12월 23일
0

Docker

목록 보기
3/4

Overview


컨테이너 내부에서 일어나는 일들을 관리하는 것은 디버깅 뿐만 아니라 운영 측면에서도 굉장히 중요한 업무이다. 애플리케이션 레벨에서 로그가 기록되도록 개발해서 별도의 로깅 서비스를 쓸 수도 있지만, 도커는 컨테이너의 표준 출력과 에러 로그를 별도의 메타 데이터 파일로 저장해서 확인하는 기능들을 제공한다.

json-file 로그 사용하기

컨테이너생성(예시)

# docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:5.7

데몬으로 실행하고, 터미널 접속은 하지 않는다.

컨테이너 로그 확인하기

# docker logs mysql
# docker logs --since 14747765123 mysql // 특정 시간 이후의 로그를 확인한다

저장 위치

기본적으로 로그는 json 형태로 도커 낸부에 저장된다. 위치는 아래와 같다

# cat /var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-json.log

사이즈가 커지면 호스트의 저장공간에 문제가 생길 수도 있으므로 조절해줄 필요가 있다.

# docker run -it \
--logopt max-size=10k --log-opt max-file=3 \
--name log-test ubuntu:14.04

사용가능한 로그 드라이버의 예시로는 syslog, journald, fuentd. awslogs ... 여러가지 있음

syslog 사용하기

컨테이너 생성 및 로그 옵션 추가

# docker run -d --name syslog-container \
--logdriver=syslog \
ubuntu:14.04 \
echo syslogtest!!!

로그 저장 위치

# tail /var/log/syslog

로그 전용 컨테이너 활용해보기

서버 : 192.168.0.100
클라이언트 : 192.168.0.101

server@192.168.0.100# docker run -it \
-h rsyslog \
--name rsyslog-server \
-p 514:514 -p 514:514/udp \
ubuntu:14.04

이후 rsyslog.conf에서 UDP 로그 설정을 주석 해제해주고, rsyslog 데몬을 재시작 해준다.

client@192.169.0.101# docker run -it \
--log-driver=syslog \
--log-opt syslog-address=tcp://192.168.0.100:514 \
--log-opt tag="mylog" \
ubuntu:14.04

이후 클라이언트에서 echo로 테스트를 진행해보면 tcp, udp 등의 통신을 이용해 로그전용 컨테이너에 태그가 붙어서 로그가 기록 된 것을 확인 할 수 있다.

syslog-facility 옵션을 이용하면 특정 상황에 대한 로그만 전달되기도 한다.

fluentd 사용하기

fluentd는 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구로서, 도커 엔진의 컨테이너의 로그를 fluentd를 통해 저장할 수 있도록 플러그인을 공식적으로 제공한다. JSON으로 저장되며 동시에 AWS, HDF, mongo 등 다양한 저장소에 저장할 수 있도록 해주는 장점이 있다.

도커서버들... -> fluentd -> MongoDB 와 같이 구성이 가능하다.

자세한 예제는 생략하도록 하겠다. (위와 유사하고 다만 fluntd 컨테이너에서 fluent.conf 파일 수정필요)
설정파일 암기는 리눅스마스터 자격증 취득과정에서 질려버린 관계로 매번 꼼꼼하게 확인 후 직접 작성하는거로..

아마존 클라우드 워치 로그 사용하기

AWS에서는 로그 및 이벤트 등을 수집하고 저장해서 시각적으로 보여주는 클라우드워치를 제공한다. 도커를 AWS EC2에서 사용하고 있다면 다른도구를 별도로 설치할 필요 없이 컨테이너에서 드라이버 옵션을 설정하는 것만으로도 클라우드 워치 로깅 드라이버를 사용할 수 있다. 순서는 아래와 같다.

(1) 클라우드워치에 해당하는 IAM 생성
(2) 로그 그룹 생성
(3) 로그 그룹에 로그스트림 생성
(4) 클라우드워치의 IAM 권한을 사용할 수 있는 EC2 인스턴스 생성 및 로그 기록 시작

profile
Mechanical & Computer Science

0개의 댓글