도커로깅
2.2.8 컨테이너 로깅
2.2.8.1 json-file 로그 사용하기
docker logs 명령을 통해 컨테이너 내부에 출력을 보여준다.
docker ps 명령을 통해 컨테이너 목록의 상태를 확인
docker run -it \\
--log-opt max-size=10k --log-opt max-file=3 \\ # 로그 파일 셋팅
--name log-test ubuntu:18.04
위의 도커 컨테이너 로그를 JSON파일로 설정
각종 로깅 드라이버를 사용하게 설정해 컨테이너 로그를 수집할 수 있다. 사용가능한 드라이버의 대표적인 예로 syslog, journal, fluentd, awslogs 등이 있으며 에플리케이션의 특징에 적합한 로깅 드라이버를 선택
—log-driver 옵션을 써서 기본적으로 사용할 로깅 드라이버를 변경할 수 있슴. 위에서 설명한 max-szie와 같은 —log-opt 옵션 또한 도커 데몬에 적용함으로써 모든 컨테이너 일괄적으로 사용할 수 있음.
2.2.8.2 syslog
컨테이너의 로그는 json뿐 아니라 syslog 보내도록 설정할 수 있음 syslog는 유닉스 계열 운영체제에서 로그를 수집하는 오래된 표준 중 하나로서, 커널, 보안 등 시스템과 곤련된 로그 애플리케이션의 로그등 다양한 종류의 로그를 수집함
운영체제마다 저장되는 sysmog에 위치가 다름 remote rsylog를 사용해 원격서버 로깅을 할 수 있음 .
2.2.8.3 fluentd 로깅
fluentd는 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구이며 도커 엔진 및 컨테이너 로그를 fluentd를 통해 저장할 수 있음.
해당 데이터를 AWS S3, HDFS, MongoDB 등 다양한 저장소에 저장할 수 있다는 장점이 있음
실습
docker run --name mongoDB -d -p 27017:27017 mongo
docker run -d --name fluentd -p 24224:24224 -v ./fluent.conf:/fluentd/etc/fluent.conf -e FLUENTD_CONF=fluent.conf alicek106/fluentd:mongo
도커 허브의 fluentd 이미지에는 몽고db 연결하는 플러그인이 내장돼 있지 않다.
<source>
@type forward
</source>
<match docker.**>
@type mongo
database [database]
collection [컬렉션 명]
host [mnongdb host ip]
port [mongodb port]
flush_interval 10s
user [mongodb user]
password [mongodb password]
</match>
해당 fluetd 파일에 값을 지정
그 후 fluentd 서버 설정
docker run -p 80:80 -d \\
--log-driver=fluentd \\
--log-opt fluentd-address=ip:port \\
--log-opt tag docker.nginx.webserver \\
nginx
설정 완료.
TODO 실습환경 환경 PATH 문제로 인해 추 후 진행 ..
2.2.8.3 아마존 클라우드워치 로그
실습 건너 뜀
AWS EC2 사용시 S3 스토리지에 설치 할 수 있음 UI 상 진행 가능
IAM 권한을 이용해 인스턴스 로그 전송