컨테이너 로깅
도커 로깅 드라이버의 역할 : 컨테이너에서 로그를 수집하고 다른 곳에 전송
도커 로깅 드라이버
도커 로깅 드라이버는 컨테이너에서 생성된 로직을 수집하고 저장하는 방법을 제공한다.
이렇게 저장된 로그 데이터는 다른 시스템에서 사용할 수 있으므로 디버깅, 모니터링 및 분석이 용이해진다.
도커는 기본 드라이버로 json file를 지원한다.
다른 드라이버로 syslog, fluentd, aws cloud watch 등을 지원한다.
기본 드라이버
컨테이너를 실행하며 발생한 로그는 JSON 형태로 도커 컨테이너에 저장된다.
컨테이너 아이디/{컨테이너 아이디}-json.log 파일로 저장된다.
로그 파일의 최대 크기를 제한할 수 있다.
syslog
유닉스 계열 운영체제에서 로그를 수집하는 오랜 표준이다.
대부분의 유닉스 계열 운영체제에서 syslog 인터페이스가 동일하므로 체계적으로 로그를 수집하고 분석할 수 있다.
도커 실행시 로그 드라이버를 syslog로 지정하면 운영체제에 지정된 syslog 파일에 로그가 남는다.
rsyslog을 사용하면 원격 컨테이너에 있는 로그를 받을 수 있다.
서버 호스트에서 rsyslog 컨테이너를 실행하고,
클라이언트에서 syslog 컨테이너를 실행할 때 서버 호스트의 IP를 지정한다.
rsyslog 컨테이너에서 로그가 발생하면 syslog의 로그 파일에 저장된다.
fluentd
fluentd는 각종 로그를 수집하고 저장할 수 있는 오픈소스 네트워크 드라이버다.
아래 시나리오와 같이 도커 컨테이너들에서 발생한 로그를 몽고DB에 저장할 때 fluentd가 로그 수집과 저장 기능을 담당한다.
aws cloud watch
AWS가 제공하는 로그 및 이벤트 수집 도구이다.
도커를 AWS EC2에서 사용하고 있다면 컨테이너에서 드라이버 옵션을 설정하여 클라우드워치 로깅 드라이버를 사용할 수 있다.
아래와 같은 단계를 따른다.
- 클라우드 워치에 해당하는 IAM 권한 생성
- 로그 그룹 생성
- 로그 그룹에 로그 스트림 생성
- 클라우드 워치의 IAM 권한을 사용할 수 있는 EC2 인스턴스 생성과 로그 전송
컨테이너 자원 할당 제한
컨테이너를 생성할 때 옵션을 주지 않으면 컨테이너는 호스트 자원을 제한 없이 사용할 수 있다.
특정 컨테이너의 자원 사용을 제한하지 않으면 호스트 자원을 전부 점유해 다른 컨테이너의 동작을 방해하고 호스트 동작이 멈출 수 있다.
run, create 명령어 옵션으로 메모리, CPU, 블록 입출력 크기, 컨테이너 저장 공간을 제한할 수 있다.
- 메모리 : 단위 지정. 할당된 메모리를 초과하면 컨테이너는 자동으로 종료된다.
- CPU : 사용할 비중 혹은 사용할 CPU 지정
- 블록 입출력 : 초당 쓰기, 읽기 작업 가능한 크기 혹은 상대적인 수행 기능 지정
- 컨테이너 자원 할당 제한 : 모든 스토리지 드라이버에서 컨테이너의 저장 공간을 제한할 수 있는 것이 아니며, 컨테이너가 상태를 가지는 것은 바람직하지 않으므로 저장 공간을 제한하지 않는 것을 염두에 두자.
'Cloud > Docker' 카테고리의 다른 글
Dockerfile (1) | 2023.04.22 |
---|---|
도커 이미지 (0) | 2023.04.22 |
도커 네트워크 (0) | 2023.04.22 |
도커 볼륨 (0) | 2023.04.22 |
mysql 기반 wordpress 컨테이너 배포하기 (0) | 2023.04.22 |