연습 - Azure Container Instances 문제 해결

완료됨

컨테이너 인스턴스 문제를 해결하는 기본적인 방법을 이해할 수 있도록 다음과 같은 기본적인 작업 몇 가지를 수행합니다.

  • 컨테이너 로그 끌어오기
  • 컨테이너 이벤트 보기
  • 컨테이너 인스턴스에 연결

이전에 배포한 컨테이너 인스턴스에서 로그 가져오기

이전 연습에서 만든 고양이 및 강아지 투표 앱 컨테이너의 출력을 보려면 az container logs 명령을 실행합니다.

az container logs \
  --resource-group learn-deploy-aci-rg \
  --name aci-demo-files

다음과 유사한 결과를 얻게 됩니다.

Checking for script in /app/prestart.sh
Running script /app/prestart.sh
Running inside /app/prestart.sh, you could add migrations to this file, e.g.:

#! /usr/bin/env bash

# Let the DB start
sleep 10;
# Run migrations
alembic upgrade head
…

컨테이너 이벤트 가져오기

az container attach 명령은 컨테이너 시작 중에 진단 정보를 제공합니다. 컨테이너가 시작되면 표준 출력 및 표준 오류 스트림도 로컬 터미널에 씁니다.

az container attach를 실행하여 컨테이너에 연결합니다.

az container attach \
  --resource-group learn-deploy-aci-rg \
  --name aci-demo-files

다음과 유사한 결과를 얻게 됩니다.

Container 'aci-demo-files' is in state 'Running'...
(count: 1) (last timestamp: 2021-09-21 23:48:14+00:00) pulling image "mcr.microsoft.com/azuredocs/azure-vote-front"
(count: 1) (last timestamp: 2021-09-21 23:49:09+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/azure-vote-front"
(count: 1) (last timestamp: 2021-09-21 23:49:12+00:00) Created container
(count: 1) (last timestamp: 2021-09-21 23:49:13+00:00) Started container

Start streaming logs:
Checking for script in /app/prestart.sh
Running script /app/prestart.sh
…

연결된 컨테이너에서 연결을 끊으려면 Ctrl+C를 입력합니다.

컨테이너에서 명령 실행

문제를 진단하고 해결할 때는 실행 중인 컨테이너에서 직접 명령을 실행해야 합니다.

  1. 컨테이너에서 이 명령을 보려면 다음 az container exec 명령을 실행하여 컨테이너에 대한 대화형 세션을 시작합니다.

    az container exec \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --exec-command /bin/sh
    

    이때 컨테이너 내부에서 효과적으로 작업할 수 있습니다.

  2. ls 명령을 실행하여 작업 디렉터리의 내용을 표시합니다.

    # ls
    __pycache__  config_file.cfg  main.py  prestart.sh  static  templates  uwsgi.ini
    
  3. 원한다면 시스템을 더 자세히 탐색할 수 있습니다. 완료되면 exit 명령을 실행하여 대화형 세션을 중지합니다.

컨테이너의 CPU 및 메모리 사용량 모니터링

컨테이너의 CPU 및 메모리 사용량을 모니터링하는 방법을 알아봅니다.

  1. 다음 az container show 명령을 실행하여 Azure 컨테이너 인스턴스의 ID를 가져와서 Bash 변수에 저장합니다.

    CONTAINER_ID=$(az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --query id \
      --output tsv)
    
  2. az monitor metrics list 명령을 실행하여 CPU 사용량 정보를 검색합니다.

    az monitor metrics list \
      --resource $CONTAINER_ID \
      --metrics CPUUsage \
      --output table
    

    --metrics 인수를 참고합니다. 이때 CPUUsage는 CPU 사용량을 검색하도록 지정됩니다.

    다음 결과와 유사한 텍스트를 보게 됩니다.

    Timestamp            Name          Average
    -------------------  ------------  -----------
    2021-09-21 23:39:00  CPU Usage
    2021-09-21 23:40:00  CPU Usage
    2021-09-21 23:41:00  CPU Usage
    2021-09-21 23:42:00  CPU Usage
    2021-09-21 23:43:00  CPU Usage      0.375
    2021-09-21 23:44:00  CPU Usage      0.875
    2021-09-21 23:45:00  CPU Usage      1
    2021-09-21 23:46:00  CPU Usage      3.625
    2021-09-21 23:47:00  CPU Usage      1.5
    2021-09-21 23:48:00  CPU Usage      2.75
    2021-09-21 23:49:00  CPU Usage      1.625
    2021-09-21 23:50:00  CPU Usage      0.625
    2021-09-21 23:51:00  CPU Usage      0.5
    2021-09-21 23:52:00  CPU Usage      0.5
    2021-09-21 23:53:00  CPU Usage      0.5
    
  3. az monitor metrics list 명령을 실행하여 메모리 사용량 정보를 검색합니다.

    az monitor metrics list \
      --resource $CONTAINER_ID \
      --metrics MemoryUsage \
      --output table
    

    여기에서 --metrics 인수에 MemoryUsage를 지정하여 메모리 사용량 정보를 검색합니다.

    다음 결과와 유사한 텍스트를 보게 됩니다.

    Timestamp            Name          Average
    -------------------  ------------  -----------
    2021-09-21 23:43:00  Memory Usage
    2021-09-21 23:44:00  Memory Usage  0.0
    2021-09-21 23:45:00  Memory Usage  15917056.0
    2021-09-21 23:46:00  Memory Usage  16744448.0
    2021-09-21 23:47:00  Memory Usage  16842752.0
    2021-09-21 23:48:00  Memory Usage  17190912.0
    2021-09-21 23:49:00  Memory Usage  17506304.0
    2021-09-21 23:50:00  Memory Usage  17702912.0
    2021-09-21 23:51:00  Memory Usage  17965056.0
    2021-09-21 23:52:00  Memory Usage  18509824.0
    2021-09-21 23:53:00  Memory Usage  18649088.0
    2021-09-21 23:54:00  Memory Usage  18845696.0
    2021-09-21 23:55:00  Memory Usage  19181568.0
    

Azure Portal의 Azure Container Instances CPU 및 메모리 사용량 정보는 다음과 같이 표시됩니다.

Azure Container Instances CPU 및 메모리 사용량 정보가 표시된 Azure Portal 보기를 보여 주는 스크린샷.

리소스 정리

이 모듈에서는 Azure 구독을 사용하여 리소스를 만들었습니다. 이러한 리소스에 대한 요금이 계속 청구되지 않도록 해당 리소스를 정리합니다.

  1. Azure 페이지에서 모든 리소스를 선택합니다.

  2. learn-deploy-aci-rg 리소스 그룹 또는 사용한 리소스 그룹 이름을 찾아 선택합니다.

  3. 리소스 그룹의 개요 탭에서 리소스 그룹 삭제를 선택합니다.

  4. 새 대화 상자가 열립니다. 리소스 그룹 이름을 다시 입력하고 삭제를 선택합니다. 이 모듈에서 만든 리소스가 모두 삭제됩니다.