출처: 패캠 gitops
1. 컨테이너 리소스 모니터링을 위한 cadvisor
cAdvisor : 구글 오픈소스 컨테이너 모니터링 도구
설치 방법 : https://github.com/google/cadvisor
observability tool : cadvisor + prometheus(+node-exporter) + Grafana
prometheus : 8080 포트 변경 권고
docker compose up -d # docker compose 사용. -d -> 백그라운드 실행
# Resource Limit 리소스 런타임 제한
htop(top의 상위호환) : 다른 세션에 모니터링 하면서 리소스 소비 제어 실시간 확인용도.
CFS : Completely Fair Scheduler
## CPU
-c, --cpu-shares : CPU 공유 스케줄 가중치 제한. 기본값(1024)
docker run -d --name cpu_512 --cpu-shares 512 ubuntu:lastest stress --cpu 4 # stress 설치된 이미지 사용 필요.
docker run -d --name cpu_1023 --cpu-shares 1024 ubuntu:lastest stress --cpu 4
--cpuset-cpus : (CPUs in which to allow execution (0-3, 0,1))Host의 CPU에서 몇 번째 core를 사용할 것인지 지정
docker run -d --name cpuset_1 --cpuset-cpus=2 ubuntu:lastest stress --cpu 1
docker run -d --name cpuset_2 --cpuset-cpus=0,3 ubuntu:lastest stress --cpu 2
--cpus : CPU 사용 비율 지정 #
docker update --cpus=0.2 cpuset_2
## 메모리 Memory
OOM(out of memory) 대비.
컨테이너가 도커 호스트에 영향을 줄 수 있으니 제한이 필요함.
--memory (-m) : (hard limit) 최대 메모리 제한. 최소 6MB
--memory-reservation : (soft limit) 호스트의 메모리가 부족할 경우 컨테이너의 메모리를 제한한다. 그때 최소한의 보장하는 메모리 값을 지정.
--memory-swap : 스왑 메모리 제한.
docker run -d --memory=1g --name=nginx_mem_1g nginx
docker inspect nginx_mem_1g | grep -i memory
docker run -itd --memory=200m --memory-swap=300m --name=mem-test ubuntu
docker inspect mem-test | grep -i memory
docker logs 컨테이너명 # 로그 확인 습관이 되어야 한다.
## 디스크 Disk
Disk Size : 디스크 사용량 제한
Block I/O : 호스트의 I/O 대역폭이 소화할 수 있도록 컨테이너 I/O 제한
--blkio-weight, --blkio-weight-device : Block I/O 할당. 기본 500
--device-read-bps list, --device-write-bps list : 특정 Device에 MBPS를 제한
--device-read-iops list, --device-write-iops : 특정 Device에 IOPS를 제한
iostat 2 1000 : 모니터링 목적.
docker run -id --rm ubuntu bash
dd if=/dev/zero of=blkmb.out bs=1M count=10 oflag=direct # 작업 완료 속도 기록.
docker run -it --rm --device-write-bps /dev/sdb:1mb ubuntu bash
dd if=/dev/zero of=blkmb.out bs=1M count=10 oflag=direct # I/O 성능 제한 확인 가능.
'Infra > IaC' 카테고리의 다른 글
[Docker] Dockerfile 경량화 (0) | 2023.10.26 |
---|---|
[Docker] docker volume 데이터 지속성 및 데이터 관리 (1) | 2023.10.26 |
[Docker] Network 관리 (2) | 2023.10.20 |
[Docker] 컨테이너 운용에 필요한 CLI (0) | 2023.10.17 |
[Docker] docker image 관리 (0) | 2023.10.15 |