[Cloud] Docker container의 정보를 수집하는 Python 코드

2024. 7. 15. 19:58· Cloud
목차
  1. Getting started
  2. 전체 코드

모든 것에 앞서 docker를 설치해 주어야 한다.

pip install docker

 

그리고 vi docker_stats.py (python 파일 이름은 마음대로)

또는 nano docker_stats.py로 python 파일을 수정한다.

 

Getting started

Docker 데몬과 통신하려면 먼저 클라이언트를 인스턴스화 해야 한다.

from_env()가 기본 소켓 / 환경의 구성을 사용하여 연결할 수 있다.

import docker
client = docker.from_env()

 

container 관리

# 실행 중인 모든 컨테이너 목록을 가져온다.

client.containers.list()

 

 

# 컨테이너의 자원 사용량 정보를 수집한다.

stats = container.stats(stream=False)

 

전체 코드

import docker
import time

def get_container_stats():
    # Docker 클라이언트를 초기화
    client = docker.from_env()

    # 실행 중인 모든 컨테이너 목록을 가져옴
    containers = client.containers.list()

    for container in containers:
        # 컨테이너의 기본 정보 출력
        print(f"Container ID: {container.id}")
        print(f"Container Name: {container.name}")
        print(f"Container Status: {container.status}")

        # 컨테이너의 자원 사용량 정보 수집
        stats = container.stats(stream=False)

        # CPU 사용량 계산
        cpu_usage = stats['cpu_stats']['cpu_usage']['total_usage']
        system_cpu_usage = stats['cpu_stats']['system_cpu_usage']
        cpu_percent = (cpu_usage / system_cpu_usage) * 100

        # 메모리 사용량 계산
        mem_usage = stats['memory_stats']['usage']
        mem_limit = stats['memory_stats']['limit']
        mem_percent = (mem_usage / mem_limit) * 100

        # 네트워크 사용량 계산
        net_input = stats['networks']['eth0']['rx_bytes']
        net_output = stats['networks']['eth0']['tx_bytes']

        # 디스크 I/O 계산
        io_read = stats['blkio_stats']['io_service_bytes_recursive'][0]['value']
        io_write = stats['blkio_stats']['io_service_bytes_recursive'][1]['value']

        # 자원 사용량 출력
        print(f"CPU Usage: {cpu_percent:.2f}%")
        print(f"Memory Usage: {mem_usage} / {mem_limit} ({mem_percent:.2f}%)")
        print(f"Network Input: {net_input} bytes")
        print(f"Network Output: {net_output} bytes")
        print(f"Disk I/O Read: {io_read} bytes")
        print(f"Disk I/O Write: {io_write} bytes")
        print("-" + "-"*40)

if __name__ == "__main__":
    while True:
        get_container_stats()
        # 10초마다 정보 갱신
        time.sleep(10)

 

python3 docker_stats.py

로 파이썬 파일을 실행시켜주면 결과가 나온다.

 

 

docker ps -a

docker stats --no-stream

명령어 결과

'Cloud' 카테고리의 다른 글

[Cloud] AWS Linux 서버에 Docker 설치하기  (0) 2024.07.15
[Cloud] VM 서버에서 Python venv 환경 구성하고 python 프로그램 실행시키기  (0) 2024.05.19
[Cloud] mobaXterm으로 Windows에서 Linux 인스턴스 연결하기  (0) 2024.05.19
[Cloud] [Python] pymysql 사용하여 mysql 데이터 삽입하기  (0) 2024.05.19
[Cloud] AWS RDS 데이터베이스 MySQL Workbench로 접속하기  (0) 2024.05.18
  1. Getting started
  2. 전체 코드
'Cloud' 카테고리의 다른 글
  • [Cloud] AWS Linux 서버에 Docker 설치하기
  • [Cloud] VM 서버에서 Python venv 환경 구성하고 python 프로그램 실행시키기
  • [Cloud] mobaXterm으로 Windows에서 Linux 인스턴스 연결하기
  • [Cloud] [Python] pymysql 사용하여 mysql 데이터 삽입하기
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 서버개발
  • 서버생성
  • 클라우드 서비스
  • 인프라
  • 우리fis아카데미
  • 네트워크관리사2급 공부방법
  • 코틀린문법
  • 인프라개발
  • rds local 접속
  • 네트워크관리사 커트라인
  • 글로벌소프트웨어캠퍼스
  • 네트워크관리사 합격
  • 네트워크관리사 준비물
  • apppaas
  • nhn cloud
  • 클라우드서비스개발
  • Kotlin
  • 클라우드
  • 서버배포
  • 네트워크관리사
  • AWS
  • 우리에프아이에스
  • 네트워크관리사2급 필기
  • 네트워크관리사 후기
  • 코틀린
  • 봐
  • 앱개발
  • K-디지털트레이닝
  • 네트워크관리사2급
  • 우리FISA

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[Cloud] Docker container의 정보를 수집하는 Python 코드
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.