Amazon ECS CloudWatch 지표 - Amazon Elastic Container Service

Amazon ECS CloudWatch 지표

Amazon ECS에서 원시 데이터를 수집하여 읽기 가능하며 실시간에 가까운 지표로 처리하는 Amazon CloudWatch를 사용해 Amazon ECS 리소스를 모니터링할 수 있습니다. 이러한 통계는 2주간 기록되므로 기록 정보를 보고 클러스터나 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. Amazon ECS 지표 데이터는 1분 간격으로 CloudWatch로 자동 전송됩니다. CloudWatch에 대한 자세한 정보는 Amazon CloudWatch 사용 설명서를 참조하세요.

Amazon ECS는 클러스터 및 서비스에 대한 지표를 수집합니다. CPU 및 메모리 사용률을 포함한 작업별 지표에 대해 Amazon ECS CloudWatch 컨테이너 인사이트를 사용 설정해야 합니다. Container Insights에 대한 자세한 정보는 Amazon ECS CloudWatch Container Insights 섹션을 참조하세요.

CloudWatch 지표 활성화

Fargate 시작 유형을 사용하는 모든 Amazon ECS 서비스는 CloudWatch CPU 및 메모리 사용률 지표에 대해 자동으로 활성화되므로 수동 단계를 수행할 필요가 없습니다.

EC2 시작 유형을 사용하는 모든 Amazon ECS 태스크 또는 서비스의 경우 CloudWatch 지표를 활성화하려면 Amazon ECS 컨테이너 인스턴스에 버전 1.4.0 이상(Linux) 또는 1.0.0 이상(Windows)이 필요합니다. 그러나 최신 버전의 컨테이너 에이전트를 사용하는 것이 좋습니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 정보는 Amazon ECS 컨테이너 에이전트 업데이트 섹션을 참조하세요.

에이전트를 수동으로 시작하는 경우(예: 컨테이너 인스턴스에 Amazon ECS 최적화 AMI를 사용하지 않는 경우) Amazon ECS 컨테이너 에이전트를 수동으로 업데이트하는 방법(비 Amazon ECS 최적화 AMI) 섹션을 참조하세요.

Amazon ECS 컨테이너 인스턴스에는 컨테이너 인스턴스를 시작할 때 사용하는 IAM 역할에 대한 ecs:StartTelemetrySession 권한도 필요합니다. Amazon ECS에서 CloudWatch 지표를 활성화하기 전에 Amazon ECS 컨테이너 인스턴스 역할을 생성한 경우 이 권한을 추가해야 할 수 있습니다. Amazon ECS 컨테이너 인스턴스 역할을 확인하고 컨테이너 인스턴스에 대한 관리형 IAM 정책을 연결하려면 IAM 콘솔에서 ecsInstanceRole을 확인하는 방법 섹션을 참조하세요.

참고

Amazon ECS 컨테이너 에이전트 구성에서 ECS_DISABLE_METRICS=true를 설정하여 CloudWatch 지표 수집을 비활성화할 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성 섹션을 참조하세요.

사용 가능한 지표 및 차원

다음 섹션에서는 Amazon ECS에서 Amazon CloudWatch로 전송하는 지표와 차원을 열거합니다.

Amazon ECS 지표

Amazon ECS에는 리소스를 모니터링할 수 있는 지표가 있습니다. 클러스터 전체의 CPU와 메모리 예약 및 사용과 클러스터 내 서비스의 CPU 및 메모리 사용을 측정할 수 있습니다. GPU 워크로드의 경우 클러스터 전체의 GPU 예약을 측정할 수 있습니다.

사용 가능 지표는 클러스터 내 작업 및 서비스의 시작 유형에 따라 달라집니다. 해당 서비스에 대한 Fargate 시작 유형을 사용하는 경우, 서비스 모니터링을 지원하기 위해 CPU 및 메모리 사용률 지표가 제공됩니다. EC2 시작 유형의 경우 Amazon ECS는 CPU, 메모리, GPU 예약, CPU 및 메모리 사용 지표를 클러스터 및 서비스 수준에서 제공합니다. 기본 인프라를 별도로 구성하는 Amazon EC2 인스턴스를 모니터링해야 합니다.

Amazon ECS는 CloudWatch에 다음 지표를 1분마다 전송합니다. Amazon ECS는 지표를 수집할 때 여러 데이터 요소를 1분마다 수집합니다. 그런 다음 하나의 데이터 요소로 집계한 후 CloudWatch에 데이터를 전송합니다. 따라서 CloudWatch에서 각 샘플 수는 실제로 1분 동안 여러 데이터 요소를 집계한 것입니다.

AWS/ECS 네임스페이스에는 다음 지표가 포함되어 있습니다.

CPUReservation

클러스터 내 실행 작업이 예약한 CPU 단위의 비율(%)입니다.

클러스터 CPU 예약(이 지표는 ClusterName으로만 필터링 가능)은 클러스터의 Amazon ECS 작업이 예약한 총 CPU 단위를 클러스터의 모든 컨테이너 인스턴스에 대해 등록된 총 CPU 단위로 나눈 값으로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 CPU 예약 지표에 영향을 줍니다. 이 지표는 EC2 시작 유형을 사용하는 작업에만 사용됩니다.

유효한 차원: ClusterName

유효한 통계: Average, Minimum, Maximum, Sum, Sample Count. 가장 유용한 통계는 Average(평균)입니다.

단위: 백분율.

CPUUtilization

클러스터 또는 서비스에서 사용하는 CPU 단위의 비율(%)입니다.

클러스터 CPU 사용률(ServiceName 없이 ClusterName으로 필터링되는 지표)은 클러스터의 Amazon ECS 작업이 사용하는 총 CPU 단위를 클러스터의 모든 컨테이너 인스턴스에 대해 등록된 총 CPU 단위로 나눈 값으로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 CPU 사용률 지표에 영향을 줍니다. 클러스터 CPU 사용률 지표는 EC2 시작 유형을 사용하는 작업에만 사용됩니다.

서비스 CPU 사용률(ClusterNameServiceName으로 필터링되는 지표)은 서비스에 속하는 작업이 사용하는 총 CPU 단위를 서비스에 속하는 작업에 대해 예약된 총 CPU 단위 수로 나눈 값으로 측정됩니다. 서비스 CPU 사용률 지표는 Fargate 및 EC2 시작 유형을 모두 사용하는 작업에 사용됩니다.

유효한 차원: ClusterName, ServiceName.

유효한 통계: Average, Minimum, Maximum, Sum, Sample Count. 가장 유용한 통계는 Average(평균)입니다.

단위: 백분율.

MemoryReservation

클러스터 내 실행 작업이 예약한 메모리의 비율(%)입니다.

클러스터 메모리 예약(이 지표는 ClusterName으로만 필터링 가능)은 클러스터의 Amazon ECS 작업이 예약한 총 메모리를 클러스터의 모든 컨테이너 인스턴스에 대해 등록된 총 메모리 양으로 나눈 값으로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 메모리 예약 지표에 영향을 줍니다. 이 지표는 EC2 시작 유형을 사용하는 작업에만 사용됩니다.

유효한 차원: ClusterName

유효한 통계: Average, Minimum, Maximum, Sum, Sample Count. 가장 유용한 통계는 Average(평균)입니다.

단위: 백분율.

MemoryUtilization

클러스터 또는 서비스에서 사용하는 메모리의 비율(%)입니다.

클러스터 메모리 사용률(ServiceName 없이 ClusterName으로 필터링되는 지표)은 클러스터의 Amazon ECS 작업이 사용하는 총 메모리를 클러스터의 모든 컨테이너 인스턴스에 대해 등록된 총 메모리 양으로 나눈 값으로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 메모리 사용률 지표에 영향을 줍니다. 클러스터 메모리 사용률 지표는 EC2 시작 유형을 사용하는 작업에만 사용됩니다.

서비스 메모리 사용률(ClusterNameServiceName으로 필터링되는 지표)은 서비스에 속하는 작업이 사용하는 총 메모리를 서비스에 속하는 작업에 대해 예약된 총 메모리로 나눈 값으로 측정됩니다. 서비스 메모리 사용률 지표는 Fargate 및 EC2 시작 유형을 모두 사용하는 작업에 사용됩니다.

유효한 차원: ClusterName, ServiceName.

유효한 통계: Average, Minimum, Maximum, Sum, Sample Count. 가장 유용한 통계는 Average(평균)입니다.

단위: 백분율.

GPUReservation

클러스터 내 실행 작업이 예약한 전체 가용 GPU 백분율입니다.

클러스터 GPU 예약은 클러스터의 Amazon ECS 태스크가 예약한 GPU 수를 클러스터의 모든 GPU 지원 컨테이너 인스턴스에서 사용할 수 있었던 총 GPU 수로 나눈 값으로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 GPU 예약 지표에 영향을 줍니다.

유효한 차원: ClusterName

유효한 통계: Average, Minimum, Maximum, Sum, Sample Count. 가장 유용한 통계는 Average(평균)입니다.

단위: 백분율.

참고

EC2 시작 유형의 태스크를 사용하고 Linux 컨테이너 인스턴스가 있는 경우, Amazon ECS 컨테이너 에이전트가 Docker stats 지표를 사용하여 인스턴스에서 실행 중인 각 컨테이너의 CPU 및 메모리 데이터를 수집합니다. 버스트 가능한 성능 인스턴스(T3, T3a 및 T2 인스턴스)의 경우 CPU Utilization 지표는 인스턴스 수준의 CPU 지표와 비교하여 다른 데이터를 반영할 수도 있습니다.

Amazon ECS 지표 차원

Amazon ECS 지표는 AWS/ECS 네임스페이스를 사용하며 다음 차원의 지표를 제공합니다. 차원에 대한 지표는 일정 기간 동안 실행 중인 작업이 있는 리소스만 반영합니다. 예를 들어, 하나의 서비스가 포함된 클러스터에서 해당 서비스에 RUNNING 상태의 작업이 없는 경우 CloudWatch에 지표가 전송되지 않습니다. 두 개의 서비스가 있는데 그 중 하나에는 실행 중인 작업이 있고 다른 하나에는 없는 경우, 실행 중인 작업이 있는 서비스에 대한 지표만 전송됩니다.

ClusterName

이 차원은 사용자가 지정된 클러스터의 모든 리소스에 대해 요청하는 데이터를 필터링합니다. 모든 Amazon ECS 지표는 ClusterName으로 필터링됩니다.

ServiceName

이 차원은 사용자가 지정된 클러스터에서 지정된 서비스의 모든 리소스에 대해 요청하는 데이터를 필터링합니다.

클러스터 예약

클러스터 예약 지표는 클러스터의 각 활성 컨테이너 인스턴스에 대해 등록된 전체 CPU, 메모리 및 GPU를 기준으로 클러스터의 모든 Amazon ECS 작업에 의해 예약된 CPU, 메모리 및 GPU의 백분율로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 클러스터 예약 지표에 영향을 줍니다. 이 지표는 EC2 시작 유형을 사용하는 작업 또는 서비스가 있는 클러스터에서만 사용됩니다. 이는 Fargate 시작 유형을 사용하는 작업이 있는 클러스터에서는 지원되지 않습니다.

(Total CPU units reserved by tasks in cluster) x 100 Cluster CPU reservation = -------------------------------------------------------------- (Total CPU units registered by container instances in cluster)
(Total MiB of memory reserved by tasks in cluster x 100) Cluster memory reservation = ------------------------------------------------------------------ (Total MiB of memory registered by container instances in cluster)
(Total GPUs reserved by tasks in cluster x 100) Cluster GPU reservation = ------------------------------------------------------------------ (Total GPUs registered by container instances in cluster)

클러스터에서 태스크를 실행하면 Amazon ECS가 해당 태스크 정의를 구문 분석하고 컨테이너 정의에서 지정된 전체 CPU 단위, 메모리(MiB) 및 GPU를 예약합니다. 1분 단위로 Amazon ECS가 현재 클러스터에서 실행 중인 각 작업에 대해 예약된 CPU 단위, 메모리 MiB 및 GPU를 계산합니다. 클러스터에서 실행 중인 모든 작업에 대해 예약된 전체 CPU, 메모리 및 GPU가 계산되며, 해당 수치는 클러스터의 전체 등록 리소스에 대한 백분율로 CloudWatch에 보고됩니다. 소프트 제한(memoryReservation)을 지정하면 이는 예약된 메모리의 양을 계산하는 데 사용됩니다. 그렇지 않으면 하드 제한(memory)이 사용됩니다. 하드 제한 및 소프트 제한에 대한 자세한 정보는 태스크 정의 파라미터 섹션을 참조하세요.

예를 들어 클러스터에 2개의 활성 컨테이너 인스턴스 c4.4xlarge 인스턴스 및 c4.large 인스턴스가 등록되어 있습니다. c4.4xlarge 인스턴스는 16,384개 CPU 단위와 30,158MiB 및 메모리로 클러스터에 등록되어 있습니다. c4.large 인스턴스는 2,048개 CPU 단위와 3,768MiB 메모리로 등록되어 있습니다. 이 클러스터의 전체 리소스는 18,432개 CPU 단위와 33,926MiB 메모리입니다.

태스크 정의가 1,024개 CPU 단위와 2,048MiB 메모리를 예약하고 이 클러스터에서 이 태스크 정의로 10개의 작업이 시작될 경우(현재 실행 중인 다른 태스크는 없음) 총 10,240개의 CPU 단위와 20,480MiB의 메모리가 예약되며 이러한 수치는 클러스터에 대한 55% CPU 예약 및 60% 메모리 예약으로 CloudWatch에 보고됩니다.

다음 그림은 클러스터의 총 등록 CPU 단위와 CPU 단위 예약 및 사용이 기존 태스크와 새 작업 배치에 어떤 의미를 갖는지 보여줍니다. 하단(예약됨, 사용됨) 및 중간(예약됨, 사용되지 않음) 블록은 클러스터에서 실행 중인 기존 작업에 대해 예약된 전체 CPU 단위, 즉 CPUReservation CloudWatch 지표를 나타냅니다. 하단 블록은 클러스터에서 실행 작업이 실제로 사용 중인 예약된 CPU 단위, 즉 CPUUtilization CloudWatch 지표를 나타냅니다. 상단 블록은 기존 작업에 의해 예약되지 않은 CPU 단위를 나타내며, 새 작업 배치에 이들 CPU 단위를 사용할 수 있습니다. 기존 작업도 CPU 리소스 수요가 증가할 경우, 예약되지 않은 CPU 단위를 사용할 수 있습니다. 자세한 정보는 cpu 태스크 정의 파라미터 설명서를 참조하세요.


                    클러스터 CPU 예약 및 사용

클러스터 사용률

클러스터 사용률은 클러스터 내 각 활성 컨테이너 인스턴스에 대해 등록된 전체 CPU 및 메모리를 기준으로 클러스터의 모든 Amazon ECS 작업에 의해 사용된 CPU 및 메모리의 백분율로 측정됩니다. ACTIVE 또는 DRAINING 상태의 컨테이너 인스턴스만 클러스터 사용률 지표에 영향을 줍니다. GPU 사용률 지표는 GPU를 초과 커밋하지 못하기 때문에 지원되지 않습니다. 이 지표는 EC2 시작 유형을 사용하는 작업 또는 서비스가 있는 클러스터에서만 사용됩니다. 이는 Fargate 시작 유형을 사용하는 작업이 있는 클러스터에서는 지원되지 않습니다.

(Total CPU units used by tasks in cluster) x 100 Cluster CPU utilization = -------------------------------------------------------------- (Total CPU units registered by container instances in cluster)
(Total MiB of memory used by tasks in cluster x 100) Cluster memory utilization = ------------------------------------------------------------------ (Total MiB of memory registered by container instances in cluster)

1분 단위로 각 컨테이너 인스턴스의 Amazon ECS 컨테이너 에이전트가 해당 컨테이너 인스턴스에서 실행 중인 각 작업에 대해 현재 사용 중인 CPU 단위 수 및 메모리(MiB) 양을 계산합니다. 이 정보는 Amazon ECS에 보고됩니다. 클러스터에서 실행 중인 모든 작업에 사용되는 전체 CPU 및 메모리가 계산되며, 해당 수치는 클러스터의 전체 등록 리소스에 대한 백분율로 CloudWatch에 보고됩니다.

예를 들어 클러스터에 2개의 활성 컨테이너 인스턴스 c4.4xlarge 인스턴스 및 c4.large 인스턴스가 등록되어 있습니다. c4.4xlarge 인스턴스는 16,384개 CPU 단위와 30,158MiB 및 메모리로 클러스터에 등록되어 있습니다. c4.large 인스턴스는 2,048개 CPU 단위와 3,768MiB 메모리로 등록되어 있습니다. 이 클러스터의 전체 리소스는 18,432개 CPU 단위와 33,926MiB 메모리입니다.

이 클러스터에서 10개의 작업이 실행 중이고 각 작업마다 1,024개 CPU 단위와 2,048 MiB의 메모리를 사용할 경우, 클러스터에서 총 10,240개의 CPU 단위와 20,480의 MiB 메모리가 사용됩니다. 이러한 수치는 클러스터에 대한 55% CPU 사용 및 60% 메모리 사용으로 CloudWatch에 보고됩니다.

서비스 사용률

서비스 사용률 지표는 서비스의 태스크 정의에 지정된 CPU 및 메모리를 기준으로 클러스터의 특정 서비스에 속하는 Amazon ECS 작업이 사용하는 CPU 및 메모리의 백분율로 측정됩니다. 이 지표는 EC2와 Fargate 시작 유형을 모두 사용하는 작업이 있는 서비스에 지원됩니다.

(Total CPU units used by tasks in service) x 100 Service CPU utilization = ---------------------------------------------------------------------------- (Total CPU units specified in task definition) x (number of tasks in service)
(Total MiB of memory used by tasks in service) x 100 Service memory utilization = -------------------------------------------------------------------------------- (Total MiB of memory specified in task definition) x (number of tasks in service)

1분 단위로 각 컨테이너 인스턴스의 Amazon ECS 컨테이너 에이전트가 해당 컨테이너 인스턴스에서 실행 중인 서비스가 소유한 각 작업에 대해 현재 사용 중인 CPU 단위 수 및 메모리(MiB) 양을 계산합니다. 이 정보는 Amazon ECS에 보고됩니다. 클러스터에서 실행 중인 서비스가 소유한 모든 작업이 사용하는 전체 CPU 및 메모리가 계산되며, 이 수치는 서비스의 태스크 정의에서 해당 서비스에 대해 지정된 전체 리소스의 백분율로 CloudWatch에 보고됩니다. 소프트 제한(memoryReservation)을 지정하면 이는 예약된 메모리의 양을 계산하는 데 사용됩니다. 그렇지 않으면 하드 제한(memory)이 사용됩니다. 하드 제한 및 소프트 제한에 대한 자세한 정보는 태스크 정의 파라미터 섹션을 참조하세요.

예를 들어 서비스의 태스크 정의는 모든 컨테이너에 대해 총 512개 CPU 단위 및 1,024MiB 메모리(하드 제한 memory 파라미터 사용)를 지정합니다. 이 서비스의 원하는 실행 작업 수는 1이고, 서비스는 1개의 c4.large 컨테이너 인스턴스(2,048개 CPU 단위와 총 메모리 3,768MiB )에서 실행되며, 클러스터에서 실행되는 다른 태스크는 없습니다. 작업에서 512개 CPU 단위를 지정하더라도 2,048개 CPU 유닛이 있는 컨테이너 인스턴스에서 실행 중인 작업이기 때문에 지정된 수(2,048 / 512)의 4배까지 사용할 수 있습니다. 그러니 지정된 1,024 MiB의 메모리는 하드 제한이라 초과할 수 없기 때문에 서비스 메모리 사용이 100%를 초과할 수 없습니다.

앞의 예제에서 하드 제한 memoryReservation 파라미터 대신 소프트 제한 memory을 사용한 경우, 필요하다면 서비스 태스크는 지정된 1,024MiB 메모리보다 더 많은 메모리를 사용할 수 있습니다. 이 경우 서비스의 메모리 사용률은 100%를 초과할 수 있습니다.

애플리케이션에서 짧은 시간 동안 메모리 사용률이 갑자기 급증하는 경우 Amazon ECS가 1분마다 여러 데이터 포인트를 수집한 다음 CloudWatch로 전송되는 하나의 데이터 포인트로 집계하기 때문에 서비스 메모리 사용률이 증가하는 것을 볼 수 없습니다.

작업이 일정 기간 동안 CPU 집약적 태스크를 수행하여 가용 CPU 단위 2,048개를 모두 사용하고 메모리 512MiB를 사용하는 경우 서비스가 CPU 사용률 400%와 메모리 사용률 50%를 보고합니다. 작업이 유휴 상태이고 128개 CPU 단위와 128MiB 메모리를 사용하는 경우 서비스가 CPU 사용률 25%와 메모리 사용률 12.5%를 보고합니다.

참고

이 예에서 CPU 사용률은 CPU 단위가 컨테이너 수준에서 정의된 경우에만 100%를 초과합니다. 작업 수준에서 CPU 단위를 정의하면 사용률이 정의된 작업 수준 제한을 초과하지 않습니다.

서비스 RUNNING 작업 수

CloudWatch 지표를 사용하여 서비스에서 RUNNING 상태인 작업 수를 확인할 수 있습니다. 예를 들어 서비스 내 실행 작업 수가 지정된 값을 하회하면 경보를 작동하도록 이 지표에 CloudWatch 경보를 설정할 수 있습니다.

Amazon ECS CloudWatch Container Insights의 서비스 RUNNING 태스크 수

'실행 중인 태스크 수'(RunningTaskCount) 지표는 Amazon ECS CloudWatch Container Insights를 사용하는 경우 클러스터별 및 서비스별로 사용할 수 있습니다. Container Insights는 containerInsights 계정 설정을 선택하여 생성한 모든 새 클러스터에 사용할 수 있으며, 클러스터 생성 중 클러스터 설정을 사용하여 사용 설정함으로써 개별 클러스터에 사용할 수 있으며, 또는 UpdateClusterSettings API를 사용하여 기존 클러스터에 사용할 수 있습니다. CloudWatch Container Insights에서 수집된 지표는 사용자 지정 지표로 청구됩니다. CloudWatch 요금에 대한 자세한 정보는 CloudWatch 요금을 참조하세요.

이 지표를 보려면 Amazon CloudWatch 사용 설명서Amazon ECS Container Insights 지표를 참조하세요.

Amazon ECS 제공 지표에서의 서비스 RUNNING 태스크 수

하지만 Amazon ECS는 추가 비용 없이 모니터링 지표를 제공합니다. 이러한 지표를 사용하여 실행 중인 태스크 수를 계산하려면 CloudWatch 콘솔에서 아래의 단계를 따르세요.

서비스 내 실행 작업 수를 확인하려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 지표(Metrics), 모든 지표(All metrics)를 선택합니다.

  3. 찾아보기(Browse) 탭에서 ECS 네임스페이스를 선택합니다.

  4. ClusterName, ServiceName을 선택한 후, 실행 중인 태스크를 보려는 서비스에 해당하는 지표(CPUUtilization 또는 MemoryUtilization)를 선택합니다.

  5. 그래프로 표시된 지표(Graphed metrics) 탭에서 기간(Period)1분(1 Minute)으로 변경하고, 통계(Statistic)샘플 수(Sample Count)로 변경합니다.

    그래프에 표시된 값은 서비스의 RUNNING 작업 수를 나타냅니다.

    
                                클러스터 지표 보기