본문 바로가기
Cloud/Docker

컨테이너 로깅, 컨테이너 자원 할당 제한

by 민휘 2023. 4. 22.

 

컨테이너 로깅

 

도커 로깅 드라이버의 역할 : 컨테이너에서 로그를 수집하고 다른 곳에 전송

 

도커 로깅 드라이버

도커 로깅 드라이버는 컨테이너에서 생성된 로직을 수집하고 저장하는 방법을 제공한다.

이렇게 저장된 로그 데이터는 다른 시스템에서 사용할 수 있으므로 디버깅, 모니터링 및 분석이 용이해진다.

도커는 기본 드라이버로 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