6. 모니터링

ECS로 서비스를 운영하려면 모니터링이 필요합니다. 서비스 모니터링은 상당히 범위가 넓기 때문에 우선 이번에는 ECS 클러스터와 서비스의 지표를 확인하는 것에 대해서 알아보겠습니다.


6.1 클러스터 모니터링

ECS 웹 콘솔에서 ‘petclinic-rest-cluster’를 선택합니다. 측정치Metrics 탭에 들어가 보면 현재 CPU와 메모리에 대한 상태를 확인할 수 있습니다. 이 정보는 클러스터 내의 ECS 작업으로 예약된 컨테이너 인스턴스(EC2)에 대한 정보입니다.


그림 6-1


우선 예약Reservation에 대해서 알아보겠습니다. 클러스터 예약 지표는 클러스터 내 각 활성 컨테이너 인스턴스에 대해 등록된 전체 CPU 및 메모리를 기준으로 클러스터 내 모든 아마존 ECS 작업에 의해 예약된 CPU 및 메모리의 백분율로 측정됩니다. 이 지표는 표준 시작 유형을 사용하는 작업 또는 서비스가 있는 클러스터에서만 사용되고 Fargate 시작 유형을 사용하는 모든 작업 또는 서비스와는 호환되지 않습니다.

현재 우리는 2개의 t2.medium 인스턴스를 사용하고 있습니다. 총 4GiB 메모리와 2vCPU(2048유닛)를 가지고 있습니다. 작업 정의에서 작업의 메모리와 CPU가 1024MiB, 512유닛으로 제한을 설정해 두었습니다. 그래서 그래프를 보게 되면 평상시에는 CPU의 경우 2개의 작업이 예약한 CPU 유닛인 1024(512 + 512)에 인스턴스 총 CPU유닛(2048 + 2048) 유닛을 나눈 백분율인 25%인 것을 확인할 수 있습니다.

배포 중에는 작업이 4개가 되므로 최대 50%가 됩니다. 메모리도 같은 방식으로 작업이 예약한 메모리인 2048MiB에 인스턴스 총 메모리인 8GiB(약 8196MiB)를 나눈 백분율인 약 25%(실제값 25.9%)인 것을 확인할 수 있습니다.

메모리 계산에서 주의하실 점은 MB, GB가 아니라 MiB, GiB인 것입니다. 작업와 인스턴스의 크기를 고민하실 때 주의하시기 바랍니다.

클러스터 사용률Utilzation 지표는 클러스터 내 각 활성 컨테이너 인스턴스에 대해 등록된 전체 CPU 및 메모리를 기준으로 클러스터 내 모든 Amazon ECS 작업에 의해 사용된 CPU 및 메모리의 백분율로 측정됩니다. 이 지표는 표준 시작 유형을 사용하는 작업 또는 서비스가 있는 클러스터에서만 사용되고 Fargate 시작 유형을 사용하는 모든 작업 또는 서비스와는 호환되지 않습니다.




6.2 서비스 모니터링

이번에는 서비스에 대한 모니터링을 해보겠습니다. 클러스터 화면에서 서비스 탭을 클릭하고 ‘petclinic-rest-service’을 선택합니다. 서비스 화면에서 측정치Metrics 탭을 선택합니다. 서비스 사용률 지표는 서비스의 작업 정의에 지정된 CPU 및 메모리를 기준으로 클러스터의 특정 서비스에 속하는 아마존 ECS 작업이 사용하는 CPU 및 메모리의 백분율로 측정됩니다.


그림 6-2



앞서 이야기했듯이, 작업 정의에서 작업의 메모리와 CPU가 1024MiB, 512 유닛으로 제한을 설정해두었습니다.

CPU의 경우 배포하고 앱을 실행하는 시점에는 최대 100% 가깝게 사용하다가 배포가 마무리되면 안정화가 되고 있습니다. CPU의 경우에는 100% 이상을 사용할 수 있습니다. 512 유닛으로 제한을 해두었지만 현재 2048유닛을 가진 인스턴스에서 512만 예약되어 있고 나머지는 유휴하기 때문에 사용 가능합니다. 그래서 현재 차트에도 순간 최대 사용률이 100%를 넘는 경우를 보실 수 있습니다.

메모리는 반대로 시간이 지날수록 점점 사용량이 올라는 모습을 볼 수 있습니다. 메모리는 작업 정의에서 제한을 하면 하드 제한<sup>Hard Limit</sup>가 되어 100% 이상 사용할 수 없습니다.




6.3 CloudWatch에서 보기

같은 내용을 CloudWatch에서도 확인할 수 있습니다. CloudWatch 웹 콘솔로 들어가서 좌측의 지표Metrics 메뉴를 클릭합니다. 모든 지표에서 [ECS]를 클릭합니다.


그림 6-3



클러스터의 지표를 확인하려면 [ClusterName]을 선택합니다. 서비스의 지표는 [ClusterName, Service Name]을 선택하면 됩니다. 여기에 표시되는 문구들은 차원Dimension이라고 합니다. 데이터의 속성이라고 볼 수 있습니다. 예를 들어, 클러스터에 대한 지표는 클러스터 이름이란 하나의 차원을 가진 데이터입니다. 그리고 서비스에 대한 지표는 클러스터 이름과 서비스 이름 두 개의 차원을 가진 지표입니다.


그림 6-4


ClusterName을 선택하면 지표들이 나옵니다. 지표를 클릭하면 기본적으로 위에서 라인 차트를 그려줍니다. Cloud 메모리의 예약과 사용량에 대해서 동시에 보고 싶어서 두 개를 선택해 보았습니다. 기본적으로 보통(평균)값으로 차트를 구성합니다.


그림 6-5


CloudWatch 지표를 가지고 차트를 구성한 다음, 그 차트들을 취합해서 대시보드를 만들 수 있습니다. 또한 이 지표값이 비정상적인 경우를 정의해서 알람을 할 수도 있습니다. 자세한 내용은 [CloudWatch](https://aws.amazon.com/ko/cloudwatch/) 기술 문서를 확인해보세요.