AWS 기술 블로그
모니터링 중앙화를 구축하는 가장 쉬운 방법, AWS CloudWatch cross-account-observability
시작하며,,
SA로 많은 고객을 만나다 보면, AWS Cloud를 사용하는 많은 사례에서 비즈니스가 성장해 감에 따라 하나의 조직에서 여러 Account를 관리해야 하는 상황을 쉽게 마주치곤 합니다. 각각의 고객 마다 문제를 해결하기 위해 다양한 방법을 고민하고, 저마다의 해결책을 구현하는 것을 볼 수 있었습니다. 하지만 경우에 따라 Observability 중앙화를 위해 도입한 도구의 Learning-curve를 마주 한다거나, 의도하지 않았던 비용의 상승을 경험하는 부작용이 따라 오기도 합니다.
본 포스팅 에서는 AWS-native Observability 서비스인 CloudWatch의 ‘Cross-account-observability’기능을 이용해 Observability 도구의 learning-curve 를 최소화 하고 비용 효율적으로 ‘다 계정 가시성 중앙화’ 를 구축하는 절차를 step-by-step으로 소개 합니다.
용어 정리
– 본 포스팅에서 반복적으로 ‘모니터링 계정’ 과 ‘소스 계정’ 을 언급합니다. 원활한 이해를 돕기위해 용어를 다음과 같이 정의 합니다.– 모니터링 계정 : 모니터링 계정은 자체적으로 모니터링 할 Resource를 갖고 있지 않고, 소스 계정으로부터 telemetry를 전달받는 계정을 지칭 합니다.
– 소스 계정 : 소스 계정은 실제 Resource 가 배포된 계정으로 모니터링 계정에 지정된 telemetry데이터를 전달하는 계정을 의미 합니다.
개요
CloudWatch는 AWS에서 제공하는 리소스와 애플리케이션의 성능 및 상태를 모니터링하는 완전관리형 서비스 입니다. CloudWatch의 Cross-Account Observability(이하, XAO) 기능을 사용하면 손 쉽게 하나의 모니터링 계정에서 최대 10만개의 소스 계정을 모니터링 할 수 있습니다.
사전 준비 사항
- 모니터링 계정 및 소스 계정 식별: 중앙 모니터링을 위한 AWS 계정과 관찰 데이터를 생성하는 소스 계정을 결정합니다.
- 필요한 권한: 모니터링 계정과 소스 계정을 설정하기 위해 관리자 권한이나 관련 IAM 권한이 필요합니다.
- 관련 권한은 CloudWatch 사용자 가이드를 참조 할 수 있습니다.
- [Figure-1]
Step 1. 모니터링 계정 구성
모니터링 계정 구성을 위해 아래 절차를 참고하여 주세요:
- 1-1> CloudWatch Console을 열고 AWS region을 선택 합니다. 아래 예시에서는 ap-northeast-2 region을 사용하고 있습니다.
- [Figure-2]
- [Figure-2]
- 1-2> 좌측 Navigation 패널 에서
Settings
를 선택합니다.- [Figure-3]
- [Figure-3]
- 1-3> 본 포스팅에서는 가능한 한 default Global Setting 값을 유지 합니다. 아래
Monitoring account configuration
섹션의Configure
버튼을 통해 configure 화면으로 이동합니다.- [Figure-4]
- [Figure-4]
- 1-4> 다음 진입 화면에서는, (1)모니터링 계정에서 수집 할 telemetry 데이터 종류를 선택하고 , (2) 소스 계정의 Account ID(* AWS Organization 에 속해있다면 Account ID를 몰라도 Organization OU ID 를 통해 해당 OU의 Account로 부터 data수집이 가능합니다. 본 hands-on에서는 Account ID를 통해 연결하는 방식을 소개하고 있습니다. 하나의 모니터링 계정은 10만개의 소스 계정을 연결할 수 있고, 소스 계정은 모니터링 계정을 5개 까지 등록할 수 있습니다. )를 입력한 뒤
Configure
버튼을 누릅니다. 현재 기준으로는 Log와 Metric 만 데이터를 필터링을 지원 합니다. (Log는 CloudWatch Log group 단위, Metric은 NameSpace 단위 필터링 제공) Trace, Internet Monitor, Application Signals, Application Insights 는 모든 데이터가 공유 됩니다.- [Figure-5]
-
InformationCloudWatch 의 Cross-Account Observability 를 사용하여 Telemetry 데이터를 공유할때는 Dependency를 이해하는 것이 중요 합니다. 아래 Table을 참조하여 주세요
-
Telemetry Type Description Dependencies for CloudWatch Cross-Account Observability CloudWatch로 수집 된 Metric 모든 Metric NameSpace를 공유하거나 일부 Namespace만 filtering하여 공유하기 가능 None CloudWatch Logs의 저장 된 Log 모든 CloudWatch Log Group을 공유 하거나 일부 log group만 filtering하여 공유 가능 None ServiceLens & X-Ray (Trace) 모든 trace
공유 (filtering 불가)ServiceLens 와 X-Ray를 표현하기 위해 Metric, Log, Trace 수집 필요 Amazon CloudWatch Application Insights 모든 application
공유(filtering 불가)Application Insights 표현을 위해 Metric, Log, Trace 수집 필요 CloudWatch Internet Monitor 모든 monitors
(filtering불가)Metric, Log 와 수집 필요
-
- [Figure-5]
- 1-5> step 1-4번까지 설정이 정상적으로 완료 되었다면 모니터링 계정의 CloudWatch console에 접근 하였을 때 다음과 같은 화면을 볼 수 있습니다.
- [Figure-6]
- [Figure-6]
- 1-6> 모니터링 계정의 설정이 모두 완료 되었고 소스 계정을 설정하여야 합니다. 소스 계정으로 로그인 하기 전에 step 1-5 까지 설정으로 생성된
Sink ARN
을 입력해야 함으로 잘 기록해 두시길 바랍니다.- [Figure-7]
- [Figure-7]
중간 요약
Step 1-6 까지 진행하면서 모니터링 계정에서 표현 할 telemetry data 를 소스 계정에서 데이터를 가져오기 위한 Sink entity
를 생성하였습니다. AWS console에서 작업한 항목에 대하여 Resource Policy가 생성 되었고, 이를 아래와 같이 확인이 가능합니다.
- [Figure-8]
Step 2 소스 계정과 연결
개별 소스 계정 연결
‘Step1, Monitoring account 구성’ 을 모두 완료 하였다면, 이제 개별 소스 계정을 모니터링 계정과 연결하는 설정을 진행합니다. 본 가이드는 AWS Organization을 사용하지 않고, 개별 계정을 등록하는 방법 입니다. 관리하여야 하는 AWS Account 숫자가 많은 경우, AWS Organization과 연동하여 관리비용을 줄일 수 있습니다.
INFO
Step 1-6 절차에서 복사해 둔Sink ARN
이 필요합니다
- 2-1> 이제 원천 Telemetry 데이터가 있는 소스 계정에 로그인하여 CloudWatch console로 이동 합니다. 본 가이드에서는 Step 1-1에서 ap-northeast-2 Seoul region에 Monitoring Sink 구성을 하였습니다. 소스 계정도 동일하게 ap-northeast-2 region에서 구성을 진행 합니다.
- [Figure-9]
- [Figure-9]
- 2-2>
Source account configuration
에서는 모니터링 계정으로 전달 할 telemetry resource를 선택 합니다. 여기서 필터링을 지원하는Logs
와Metrics
에 대하여 필터링을 설정할 수 있습니다. Telemetry data를 선택했다면, step 1-6에서 복사한Sink ARN
을 붙여넣고, 화면 가장 하단의Link
버튼을 누르고, 팝업 창에Confirm
을 입력 하면 모니터링 계정과 연결이 활성화 됩니다.- [Figure-10]
- [Figure-10]
- 2-3> 모니터링 계정과 연결이 완료되면 아래 그림 처럼
Linked
로 연결결과가 표기 되며,View linked monitoring accounts
버튼을 눌러 연결된 모니터링 계정 정보를 확인 할 수 있습니다.- [Figure-11]
- [Figure-11]
- 2-4> 모니터링 계정과 소스 계정간 연결이 활성화 된 이후에 수집하는 Telemetry 데이터의 수정이나 연결을 제거 하는 작업은 소스 계정에서 가능합니다.
- [Figure-12]
- [Figure-12]
결과 확인
이제 모든 설정이 완료 되었습니다. 모니터링 계정에서 소스 계정의 metric이 어떻게 보이는지 살펴 보도록 하겠습니다.
- 모니터링 계정에 로그인 한 뒤 CloudWatch console로 이동하여 좌측 Navigation패널에서
Metrics
매뉴 하위에All metrics
를 눌러 이동합니다.- [Figure-13]
- [Figure-13]
- 아래 그림은 CloudWatch의 Application ELB Metric중
PerAppELB, per TG metrics
Dimension에서 볼수 있는 metric중RequestCount
를 선택한 화면 입니다.
Cross-account-observability가 성공적으로 활성화 되었기 때문에, 화면우측 상단에Monitoring account
배지가 활성화 된 것을 볼 수 있습니다. 그리고 Metric을 살펴보면(Browse Metric) 기존에 없던Account lable
과Account ID
속성이 추가 된 것을 확인할 수 있습니다.Account lable
과Account
ID
속성을 이용해 관찰하고자 하는 소스 계정의 metric을 모니터링 계정에서 조회가 가능합니다.- [Figure-14]
- [Figure-14]
- Metric 과 유사하게 CloudWatch Logs 와 X-Ray 에서도 소스 계정으로부터 수집한 log나 trace 정보를 확인할 수 있습니다.
Conclusion
Cross-account-observability 기능은 비교적 간단한 설정만으로, Network/Storage 레벨의 데이터 복제 없이 중앙화 된 모니터링 계정에 최대 10만개의 소스 계정에서 생성한 metric을 통합관리 할 수 있으며, 단일화 된 dashboard 및 alarm 을 생성하고, 하나의 모니터링 계정에서 등록된 모든 소스 계정에서 발생한 이벤트를 분석할 수 있습니다. 또한 데이터를 이동함에 따라 발생하는 ‘Data Transfer Out’ 비용발생을 최소화 할 수 있음으로 다른 솔루션에 비해 비용효율성도 큰 장점이라 말할 수 있겠습니다. 다만 현 시점(2025년, 3월 기준)에서는 Cross-region 간 통합 가시성은 지원하고 있지 않다는 점을 유의 해야 합니다. (소스 계정과 모니터링 계정이 여러 region을 사용 하고 있는 경우, 각 region마다 위의 작업 절차를 반복하여 연결을 구성할 수 있습니다.)
주의!
Trace의 경우는 소스 계정에서 최초 1개의 모니터링 계정과의 연결은 비용이 발생하지 않으나 2번째 모니터링 계정연동 부터는 CloudWatch의 각 region 별로 정의된 Trace 비용 정책을 따라 과금 됩니다. 비용과 관련된 자세한 사항은 Amazon CloudWatch 요금 페이지에서 확인 하시기 바랍니다.
- e.g. 버지니아 region의 경우 소스 계정에서 2개의 모니터링 계정과 연동 하였을 때, 두번째 모니터링 계정과 연동에 대하여 다음과 같이 X-Ray표준 요금이 부가 됩니다.
- 기록된 트레이스 비용은 기록된 트레이스 1백만 개당 USD 5.00입니다(트레이스당 0.000005 USD).
- 검색된 트레이스 비용은 검색된 트레이스 1백만 개당 USD 0.50입니다(트레이스당 0.0000005 USD).
- 스캔된 트레이스 비용은 스캔된 트레이스 1백만 개당 USD 0.50입니다(트레이스당 0.0000005 USD).
- 기록된 X-Ray Insights 트레이스 비용은 기록된 트레이스 1백만 개당 USD 1.00입니다(트레이스당 USD 0.000001).
Appendix
- 본 포스팅은 AWS Observability Best Practice page의 CloudWatch Cross-Account Observability 영문 가이드를 참고하여 한글화 및 편집하였습니다.
- Demo영상은 Youtube video tutorial 을 참고하실 수 있습니다.