

# Amazon ECS 서비스 사용률 지표
<a name="service_utilization"></a>

CPU, 메모리, 그리고 작업에 EBS 볼륨이 연결된 경우 EBS 파일 시스템 사용률에 대한 서비스 사용률 지표를 사용할 수 있습니다. 서비스 수준 지표는 Amazon EC2 인스턴스 및 Fargate에 호스팅된 작업이 있는 서비스에서 지원됩니다.

## 서비스 수준 CPU 및 메모리 사용률
<a name="service-utilization-cpu-memory"></a>

CPU 및 메모리 사용률 지표는 서비스의 작업 정의에 지정된 CPU 및 메모리를 기준으로 클러스터의 특정 서비스에 속하는 Amazon ECS 작업이 사용하는 CPU 및 메모리의 비율로 측정됩니다.

CloudWatch에서 이러한 지표를 볼 때 다양한 통계를 선택할 수 있습니다.
+ **평균**: 서비스의 모든 태스크에 대한 평균 사용률입니다. 아래 공식을 사용하여 계산됩니다.
+ **최소**: 서비스에서 리소스 사용량이 가장 낮은 태스크의 사용률입니다. 이는 태스크 정의에 지정된 것과 비교하여 리소스 집약도가 가장 낮은 태스크에서 사용하는 CPU 또는 메모리의 백분율을 나타냅니다.
+ **최대**: 서비스에서 리소스 사용량이 가장 높은 태스크의 사용률입니다. 이는 태스크 정의에 지정된 것과 비교하여 리소스 집약도가 가장 높은 태스크에서 사용하는 CPU 또는 메모리의 백분율을 나타냅니다.

다음 공식은 평균 통계가 계산되는 방식을 보여줍니다.

```
                                  (Total CPU units used by tasks in service) x 100
Service CPU utilization =  --------------------------------------------------------------
                           (Total CPU units specified in the task definition) x (Number of tasks in the service)
```

```
                                     (Total MiB of memory used by tasks in service x 100)
Service memory utilization =  ------------------------------------------------------------------
                              (Total MiB of memory specified in the task definition)  x (Number of tasks in the service)
```

**참고**  
위의 공식은 평균 통계에만 적용됩니다. 최소 및 최대 통계는 모든 태스크의 집계 계산이 아니라 각각 리소스 사용률이 가장 낮고 가장 높은 개별 태스크를 나타냅니다.

Amazon ECS는 20초마다 지표를 수집합니다. Amazon ECS 컨테이너 에이전트는 매분 서비스가 소유한 실행 중인 태스크 각각에 대해 현재 사용 중인 CPU 단위 수 및 메모리(MiB) 크기를 계산합니다. 본 정보는 Amazon ECS에 다시 보고됩니다. 클러스터에서 실행 중인 서비스가 소유한 모든 작업이 사용하는 전체 CPU 및 메모리가 계산되며, 이 수치는 서비스의 태스크 정의에서 해당 서비스에 대해 지정된 전체 리소스의 백분율로 CloudWatch에 보고됩니다. 최솟값 및 최댓값은 20초 지표 중 가장 작은 값과 가장 큰 값입니다. 평균은 3개 값의 집계입니다.

소프트 제한(`memoryReservation`)을 지정하면 이는 예약된 메모리의 양을 계산하는 데 사용됩니다. 그렇지 않으면 하드 제한(`memory`)이 사용됩니다. 하드 한도 및 소프트 한도에 대한 자세한 내용은 [태스크 크기](task_definition_parameters.md#task_size) 섹션을 참조하세요.

예를 들어 서비스의 태스크 정의는 모든 컨테이너에 대해 총 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 단위를 정의하면 사용률이 정의된 작업 수준 제한을 초과하지 않습니다.

## 서비스 수준 EBS 파일 시스템 사용률
<a name="service-utilization-ebs"></a>

서비스 수준 EBS 파일 시스템 사용률은 서비스에 속하는 작업이 사용 중인 EBS 파일 시스템 총 크기를 서비스에 속하는 모든 작업에 할당된 EBS 파일 시스템 스토리지의 총 크기로 나눈 값으로 측정됩니다.

## 서비스 `RUNNING` 작업 수
<a name="cw_running_task_count"></a>

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

### Amazon ECS CloudWatch Container Insights의 서비스 `RUNNING` 태스크 수
<a name="cw_running_task_count_cwci"></a>

'실행 중인 태스크 수'(`RunningTaskCount`) 지표는 Amazon ECS CloudWatch Container Insights를 사용하는 경우 클러스터별 및 서비스별로 사용할 수 있습니다. Container Insights는 `containerInsights` 계정 설정을 옵트인하여 생성한 모든 새 클러스터에 사용할 수 있으며, 클러스터 생성 중 클러스터 설정을 켜서 개별 클러스터에 사용하거나 UpdateClusterSettings API를 사용하여 기존 클러스터에 사용할 수 있습니다. CloudWatch Container Insights에서 수집된 지표는 사용자 지정 지표로 청구됩니다. CloudWatch 요금에 대한 자세한 정보는 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

이 지표를 보려면 *Amazon CloudWatch 사용 설명서*의 [Amazon ECS Container Insights 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-view-metrics.html)를 참조하세요.

# Amazon ECS 서비스 사용률 지표 사용 사례
<a name="service_utilization-metrics-explanation"></a>

다음 목록은 Amazon ECS 지표를 사용하는 시기에 대한 정보를 제공합니다.
+ **리소스 사용률 모니터링**: 평균 통계를 사용하여 CPU 및 메모리 소비 패턴을 모니터링하고 성능 기준을 설정하며 점진적 성능 저하 추세를 감지합니다.
+ **비용 최적화**: 평균 통계를 사용하여 리소스 사용량을 모니터링하고 컨테이너 크기를 조정하며 사용 패턴을 기반으로 예약을 조정하고 예약된 조정을 구현합니다.
+ **성능 벤치마킹**: 평균 통계를 사용하여 서비스 개정 간 지표를 비교하고 성능 KPI를 설정하며 최적화 개선 사항을 검증합니다.
+ **리소스 최소 수준 감지**: 평균 통계를 사용하여 유휴 기간에 최소 리소스 요구 사항을 식별하고 적절한 예약을 설정하며 비정상적인 감소를 감지합니다.
+ **이상 탐지**: 최소 통계를 사용하여 초기화 실패 또는 예상치 못한 유휴 기간과 같은 잠재적 문제를 나타내는 비정상적인 리소스 사용률 저하를 찾아냅니다.
+ **조정 정책 세분화**: 최소 통계를 사용하여 공격적인 조정을 방지하기 위해 실행 가능한 최소 사용률을 기반으로 최적의 스케일 인 임계치를 설정합니다.
+ **용량 계획**: 최대 통계를 사용하여 적절한 태스크 크기를 설정하고 트래픽 스파이크에 충분한 여유 공간을 고려하여 인프라를 계획합니다.
+ **성능 병목 현상 식별**: 최대 통계를 사용하여 리소스 포화 지점을 감지하고 병목 현상을 식별하며 태스크 크기를 늘릴 시기를 결정합니다.
+ **조정 정책 구성**: 최대 통계를 사용하여 피크 패턴을 기반으로 최적의 스케일 아웃 임계치를 설정하고 버스트 용량을 구성합니다.
+ **SLA 규정 준수 모니터링**: 최대 통계를 사용하여 피크 응답 시간과 오류율을 추적하여 서비스 성능이 정의된 SLA를 충족하는지 확인합니다.

## 관련 지표 정보
<a name="additional-information"></a>

Container Insights에 대한 자세한 내용은 *CloudWatch 사용 설명서*의 [Container Insights 사용 사례](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ecs-container-insights-use-metrics-cases.html)를 참조하세요.