[Hands-On]Amazon CloudWatch를 이용한 모니터링 중앙화

안녕하세요. 교보정보통신 클라우드 기술팀에서 Solutions Architect를 업무를 하고 있는 배은정입니다.

오늘은 Amazon CloudWatch를 이용한 모니터링 중앙화에 관해 이야기해 보겠습니다.

Amazon CloudWatch로 모니터링 중앙화를 구성하는 방법에는 두 가지가 있습니다. 먼저 두 가지 방법에 대해 간략한 설명을 해드린 후 한 가지 방법으로 Hands-On을 해보겠습니다.

1. Amazon CloudWatch에서 모니터링 중앙화를 하는 두 가지 방법

1-1. CloudWatch cross-account observability
  • 공유 계정의 지표, 로그 및 X-ray trace가 중앙 모니터링 계정으로 공유됩니다.
  • CloudWatch 콘솔의 공유 계정의 모든 지표, 로그 및 trace가 계정 ID와 함께 표시됩니다.
  • 공유 계정의 지표를 사용하여 중앙 계정에서 경보를 생성할 수 있습니다. 그러나 공유 계정에서 생성한 경보는 모니터링 계정에 공유되지 않습니다.
  • 지표 필터(metric filter)의 경우 공유 계정 자체에서 생성해야 합니다.
1-2. Account switching
  • cross-account / cross-region 옵션을 활성화하는 것을 의미합니다.
  • 공유 계정의 지표, 대시보드 및 경보를 중앙 계정에서 모니터링할 수 있는 기능이 제공됩니다.
  • Cloudwatch 로그는 공유할 수 없습니다.
  • 드롭다운 필터를 사용하여 계정과 리전을 전환하여 사용합니다.
1-3. 공통점 및 차이점
  • 공통점
    • 중앙 모니터링 계정에서 공유 계정에 대한 지표, 경보를 볼 수 있고 AWS Organizations 와 통합이 가능합니다.
    • 무료로 제공되지만, X-ray trace 복사본에 대한 요금은 청구됩니다.
  • 차이점
    • CloudWatch cross-account observability는 중앙 계정에서 로그를 확인할 수 있지만 Account switching은 불가능합니다.
    • CloudWatch cross-account observability는 공유된 데이터를 한 화면에서 볼 수 있지만 Account switching은 드롭다운 필터를 이용하여 계정 또는 리전을 전환하여 볼 수 있습니다.

두 방법을 동시에 활성화하여 모니터링 구성이 가능하나, 이 글에서는 CloudWatch cross-account observability를 이용하여 Control Tower에서 모니터링 중앙화를 구성하는 방법에 대해 알아보겠습니다.

2. Hands-On

본 내용은 ControlTower 구성이 전제되어 있습니다. ControlTower에 대한 내용은 이전 글을 참고해주세요.

ControlTower 구성이 아래와 같다고 가정하겠습니다.

Monitoring Account는 CloudWatch 중앙 모니터링용 계정이며 공유 계정은 Monitoring Source OU 에 속한 모든 Account가 됩니다.

2-1. 중앙 모니터링 계정 구성
  • Monitoring 계정에 로그인합니다.
  • [CloudWatch 콘솔] > [설정]에 들어간 후 모니터링 계정 구성의 [구성]을 클릭합니다.
  • 데이터 선택
    • Monitoring 계정과 공유하려는 데이터 유형을 선택합니다. 이때 ServiceLens 또는 X-Ray의 데이터도 공유되려면 세 가지를 모두 선택해야 합니다.
  • 소스 계정 나열
    • Account ID, Organization ID, OU 경로를 입력할 수 있습니다.
    • 복수 입력 시 쉼표로 구분되며 OU 경로를 입력할 땐 마지막 “/”까지 입력해야합니다. (ex. o-a1b23d4e5/r-f6g7h8i9j0example/ou-def0-aaabbbbb/)
    • 확장성을 고려하여 모든 ControlTower 계정을 허용하기 위해 Organization ID를 입력했습니다.
  • 소스 계정을 식별하는데 도움이 되는 레이블 정의
    • Monitoring 계정에서 Source 계정의 데이터와 함께 표시되는 계정을 식별할 수 있는 레이블입니다.
    • (계정 이름/ 전역적으로 고유한 이메일/ 도메인 없는 이메일/ 사용자 지정 레이블) 중 선택할 수 있습니다.
  • 모든 선택을 완료한 후 [구성]을 클릭합니다.
2-2. 소스 계정 연결을 위한 리소스 선택

2-1. 을 완료한 후에 보이는 화면에서 [계정을 연결하기 위한 리소스]를 클릭합니다.

만약 보이지 않을 시 모니터링 계정 구성 옆에 있는 [계정을 연결하기 위한 리소스]를 클릭하면 됩니다.

  • 소스 계정 옵션 연결
    • 소스 계정 연결 방법을 결정하는 단계이며, 필요한 CloudFormation 템플릿 또는 URL을 제공합니다.
  • AWS Organization 방식
    • CloudFormation 템플릿을 다운받을 수 있습니다. ControlTower 관리 계정에서 해당 템플릿 파일을 가지고 CloudFormation StackSet 형태로 OU 또는 Account에 배포할 수 있습니다.
  • 모든 계정 방식
    • Organization 방식에서 사용되는 것과 동일한 CloudFormation 템플릿을 다운받거나 연결을 위한 URL을 제공하는 두 가지 방식이 있습니다.
    • 템플릿은 CloudFormation Stack으로 배포하며, 연결을 위한 URL은 소스 계정에 로그인 후 URL을 새 창에 붙여넣으면 됩니다.

여기서는 [AWS Organization]을 선택 후 CloudFormation 템플릿을 다운받겠습니다.

2-3. 소스 계정 연결을 위한 CloudFormation StackSet 배포
  • ControlTower 관리 계정 로그인 후 [CloudFormation 콘솔] > [StackSet] > [StackSet 만들기]를 선택합니다.
  • 권한은 [서비스 관리형 권한]으로 선택합니다.
    • AWS Organizations가 관리하는 계정들에 필요한 IAM Role을 자동으로 구성해주는 방식입니다.
  • [준비된 템플릿][템플릿 파일 업로드]를 선택하고 2-2.에서 다운받은 템플릿 파일을 업로드한 후 [다음]을 클릭합니다.
  • StackSet 이름 입력 후 [다음]을 클릭합니다.
  • [새 스택 배포]를 선택합니다.
  • 배포 대상은 [OU(조직 단위) 에 배포]를 선택한 후 Monitoring Source OU 에 해당하는 OU ID를 입력합니다.
    • 이때 배포 대상을 [조직에 배포]로 선택하게 되면 Monitoring 계정 이외의 Organization 안의 모든 계정에 배포됩니다.
  • 자동 배포는 [활성화됨], 계정 제거 동작[스택 삭제]를 선택합니다.
    • Monitoring Source OU 에 계정이 삭제 되거나 추가 될 때 스택 인스턴스가 자동으로 배포 및 삭제되도록 합니다.
  • 리전 지정은 필요한 리전으로 선택합니다.
    저는 현재 리소스를 모두 서울 리전에서 사용하므로 서울 리전을 선택했습니다.
  • 남은 선택은 default로 하고 [전송]을 클릭하여 StackSet을 배포합니다.
  • StackSet 세부 정보 > [스택 인스턴스] 탭에서 배포가 잘 되었는지 확인합니다.
    Source1, Source2 계정에 대해 SUCCEEDED 상태여야 합니다.
2-4. 소스 계정 연결 확인
  • Source 1, Source 2 계정에 로그인 후 [CloudWatch 콘솔] > [설정]에서 소스 계정 구성이 연결 상태임을 확인합니다.
  • Monitoring 계정에 로그인 후 지표와 로그 등을 확인하면 Source1, Source 2 계정의 데이터가 보이는 것을 확인할 수 있습니다.
2-5. 계정 추가 테스트

Monitoring Source OU 에 계정이 추가 되면 자동으로 소스 계정 구성이 되는지 확인해 보겠습니다.

  • ControlTower 관리 계정 로그인 후 [Control Tower 콘솔] > [계정 팩토리] > [계정 생성]을 클릭합니다.
  • 조직 단위를 Monitoring Source로 하여 계정을 생성합니다.
  • 계정 생성이 완료된 후 [CloudFormation 콘솔] > [StackSet 세부 정보] > 3번에서 생성한 StackSet을 클릭하여 스택 인스턴스를 확인하면 새로 생성한 계정에 자동으로 배포된 것을 확인할 수 있습니다.
  • 해당 스택 인스턴스는 배포된 Source 3 계정의 CloudFormation Stack으로도 확인이 가능합니다.
2-6. 계정 추가 후 지표 및 로그 확인
  • 모니터링 계정에 로그인 후 [CloudWatch 콘솔]에서 지표 및 로그를 살펴보면 Soruce 3 계정에 대한 데이터도 공유되는 것을 확인할 수 있습니다.
2-7. 추가 기능 확인
  • 중앙 모니터링 계정에서 대시보드와 경보 생성도 가능합니다.
2-8. 중앙 모니터링 연결 해제

2-3.에서 배포한 StackSet의 스택 인스턴스를 삭제하여 소스 계정 구성을 해제합니다.

  • Control Tower 관리 계정에 로그인합니다. [CloudFormation 콘솔] > [Stack Set] > Stack Set 이름을 선택합니다.
  • StackSet 정보에서 조직 단위 ID를 복사한 후 [작업] > [StackSet에서 스택 삭제]를 선택합니다. (조직 ID는 삭제 시 사용됩니다)
  • AWS OU ID: 앞에서 복사한 OU ID를 입력합니다.
  • 리전 지정: 삭제를 원하는 리전을 선택합니다.
  • 나머지 옵션은 default로 설정한 후 [다음]을 클릭하여 검토 후 [전송]을 클릭합니다.
  • 작업탭에서 DELETE 작업이 SUCCEEDED 상태가 되면 완료된 것입니다.
    이후 스택 인스턴스 탭에서 모두 삭제된 것을 확인할 수 있습니다.
  • StackSet 삭제까지 원하는 경우 [작업] > [StackSet 삭제] 하시면 됩니다.
  • OU 중 특정 소스 계정만 연결을 해제하고 싶은 경우
    • 앞선 단계에서 진행한 StackSet 삭제 배포 옵션 설정에서 계정 필터 유형을 사용합니다.
      OU ID 입력 후 계정 필터 유형은 [교집합], 계정 번호는 제거를 희망하는 계정 ID를 입력합니다. 계정 ID가 여러 개일 경우 쉼표로 구분합니다.
  • 연결을 해제한 소스 계정들의 [CloudWatch 콘솔] > [설정]에 들어가면 소스 계정 구성이 연결되지 않은 상태로 바뀐 것을 확인할 수 있습니다.
  • Monitoring 계정의 CloudWatch 콘솔에서도 연결 해제된 데이터들이 보이지 않는 것을 통해 확인할 수 있습니다.

3. 마무리

이번 글에서는 AWS CloudWatch 서비스를 사용하여 모니터링 중앙화를 구성하는 방법에 대해 살펴보았습니다.

이 방법은 Control Tower 구성이 아니더라도 2개 이상의 계정을 사용 중일 경우 3rd Party 솔루션을 쓰지 않고 AWS 서비스만을 사용하여 중앙화된 모니터링 구성을 할 수 있게 해줍니다.

해당 내용이 모니터링 중앙화를 구성하시는 데에 있어 도움이 되었으면 합니다.

감사합니다.

**참고 자료

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다