Amazon Web Services 한국 블로그

Amazon CloudWatch 계정간 관찰 가능성 기능 출시

여러 AWS 계정을 사용하여 애플리케이션을 배포하는 것은 팀 간의 보안 및 청구 경계를 설정하고 운영 이벤트의 영향을 줄이는 좋은 방법입니다. 다중 계정 전략을 채택할 때는 여러 계정에 분산되어 있는 원격 분석 데이터를 분석해야 합니다. 애플리케이션의 모든 구성 요소를 중앙 집중식 보기에서 모니터링할 수 있는 유연성을 제공하기 위해 오늘 Amazon CloudWatch 계정간 관찰 가능성을 도입했습니다. Amazon CloudWatch 계정간 관찰 가능성은 CloudWatch에 저장된 지표, 로그 및 추적과 같은 교차 계정 원격 측정 데이터를 검색, 분석 및 상호 연관시키는 새로운 기능입니다.

이제 중앙 모니터링 AWS 계정을 설정하고 다른 계정을 소스로 연결할 수 있습니다. 그런 다음 애플리케이션 전반의 로그를 검색, 감사 및 분석하여 몇 초 만에 운영 문제를 심층 분석할 수 있습니다. 한 곳에서 여러 계정의 지표를 검색 및 시각화하고 다른 계정에 속한 지표를 평가하는 경보를 생성할 수 있습니다. 먼저 애플리케이션의 총 교차 계정 보기로 시작하여 오류가 있는 리소스를 시각적으로 식별하고 상관관계가 있는 추적, 지표 및 로그를 심층적으로 분석하여 근본 원인을 찾을 수 있습니다. 이러한 원활한 계정 간 데이터 액세스 및 탐색을 통해 문제 해결에 필요한 시간과 노력을 줄일 수 있습니다.

실제로 어떻게 작동하는지 알아보겠습니다.

CloudWatch 계정간 관찰 가능성 구성
계정간 관찰 가능성을 지원하기 위해 CloudWatch는 모니터링 계정 및 소스 계정에 개념을 도입했습니다.

  • 모니터링 계정은 다른 계정에서 공유하는 관찰 가능성 데이터를 보고 상호 작용할 수 있는 중앙 AWS 계정입니다.
  • 소스 계정은 관찰 데이터 및 리소스를 하나 이상의 모니터링 계정과 공유하는 개별 AWS 계정입니다.

필요한 가시성 수준으로 여러 모니터링 계정을 구성할 수 있습니다. CloudWatch 계정간 관찰 가능성은 AWS Organizations와도 통합되어 있습니다. 예를 들어 중앙 보안 및 운영 팀을 위해 조직 내 모든 계정에 광범위하게 액세스할 수 있는 모니터링 계정을 만든 다음 개별 서비스 소유자에 대해 사업부 전체에서 가시성이 더 제한적인 다른 모니터링 계정을 구성할 수 있습니다.

먼저, 모니터링 계정을 구성합니다. CloudWatch 콘솔의 탐색 창에서 Settings(설정)를 선택합니다. Monitoring account configuration(모니터링 계정 구성) 섹션에서 Configure(구성)를 선택합니다.

콘솔 스크린샷.

이제 모니터링 계정과 공유할 수 있는 원격 분석 데이터(Logs(로그), Metrics(지표) 및 Traces(추적))를 선택할 수 있습니다. 3개 모두 활성화된 상태로 둡니다.

콘솔 스크린샷.

이 모니터링 계정과 데이터를 공유할 소스 계정을 나열하기 위해 계정 ID, 조직 ID 또는 조직 경로를 사용할 수 있습니다. 조직 ID를 사용하여 조직의 모든 계정을 포함하거나 조직 경로를 사용하여 부서 또는 사업부의 모든 계정을 포함할 수 있습니다. 여기서는 연결할 소스 계정이 하나뿐이므로 계정 ID를 입력합니다.

콘솔 스크린샷.

모니터링 계정에서 CloudWatch 콘솔을 사용하여 원격 분석 데이터를 검색하고 표시할 때 해당 데이터를 공유한 계정 ID가 표시됩니다. 계정 ID는 기억하기가 쉽지 않기 때문에 더 자세히 설명하는 ‘계정 레이블’을 표시할 수 있습니다. 콘솔을 통해 레이블을 구성할 때 계정 이름 또는 계정을 식별하는 데 사용되는 이메일 주소 중에서 선택할 수 있습니다. 이메일 주소를 사용할 때 도메인을 포함할지 여부도 선택할 수 있습니다. 예를 들어 계정을 식별하는 데 사용되는 모든 이메일이 동일한 도메인을 사용하는 경우 해당 도메인이 없는 이메일 주소를 레이블로 사용할 수 있습니다.

계정간 관찰 가능성은 선택한 리전에서만 작동한다는 사실을 알려드립니다. 리소스가 여러 리전에 있는 경우 각 리전에서 계정간 관찰 가능성을 구성할 수 있습니다. 모니터링 계정 구성을 완료하기 위해 Configure(구성)를 선택합니다.

콘솔 스크린샷.

이제 모니터링 계정이 활성화되었습니다. Resources to link accounts(계정 연결 리소스)를 선택하여 소스 계정을 연결하는 방법을 결정합니다.

콘솔 스크린샷.

AWS 조직의 소스 계정을 연결하기 위해 AWS CloudFormation 템플릿을 다운로드하여 CloudFormation 위임 관리 계정에 배포할 수 있습니다.

개별 계정을 연결하기 위해 각 계정에 배포할 CloudFormation 템플릿을 다운로드하거나 콘솔을 사용하여 계정을 설정하는 데 도움이 되는 URL을 복사할 수 있습니다. URL을 복사하여 소스 계정으로 로그인한 다른 브라우저에 붙여넣습니다. 그런 다음 공유할 원격 분석 데이터(로그, 지표 또는 추적)를 구성할 수 있습니다. 이전 단계에서 URL을 복사하여 붙여넣었기 때문에 모니터링 계정 구성의 Amazon 리소스 이름(ARN)이 미리 채워져 있습니다. URL을 사용하지 않는 경우 모니터링 계정에서 ARN을 복사하여 여기에 붙여넣을 수 있습니다. 소스 계정을 식별하는 데 사용된 레이블을 확인하고 Link(연결)를 선택합니다.

Confirm monitoring account permission(모니터링 계정 권한 확인) 대화 상자에서 Confirm(확인)을 입력하여 소스 계정 구성을 완료합니다.

CloudWatch 계정간 관찰 가능성 사용
계정간 관찰 가능성이 어떻게 작동하는지 알아보기 위해 두 개의 AWS Lambda 함수를 사용하여 간단한 교차 계정 애플리케이션을 배포합니다. 하나는 소스 계정(multi-account-function-a)에 있고 다른 하나는 모니터링 계정(multi-account-function-b)에 있습니다. 트리거될 때, 소스 계정의 함수가 모니터링 계정의 Amazon EventBridge 이벤트 버스에 이벤트를 게시합니다. 여기서 EventBridge 규칙은 모니터링 계정에서 함수 실행을 트리거합니다. 이는 두 개의 계정만 사용하는 간단한 설정입니다. 워크로드가 여러 소스 계정에서 실행되고 있을 수 있습니다.아키텍처 다이어그램.

Lambda 콘솔에서 두 Lambda 함수에는 Active tracing(활성 추적)과 Enhanced monitoring(향상된 모니터링)이 활성화되어 있습니다. 원격 분석 데이터를 수집하기 위해 AWS Distro for OpenTelemetry(ADOT) Lambda 계층을 사용합니다. Enhanced monitoring(향상된 모니터링) 옵션은 Amazon CloudWatch Lambda Insights를 활성화하여 Lambda 함수 런타임 성능 지표를 수집하고 집계합니다.

콘솔 스크린샷.

소스 계정의 Lambda 콘솔에서 테스트 이벤트를 준비합니다. 그런 다음 Test(테스트)를 선택하고 함수를 몇 번 실행합니다.

콘솔 스크린샷.

이제 다른 계정에서 실행되는 애플리케이션의 구성 요소가 수행하는 작업을 이해하고 싶습니다. 로그로 시작한 다음 지표와 추적으로 이동합니다.

모니터링 계정의 CloudWatch 콘솔에서, 탐색 창의 Logs(로그) 섹션에서 Log groups(로그 그룹)를 선택합니다. 여기서는 서로 다른 AWS 계정에서 실행되는 두 Lambda 함수로 생성된 로그 그룹을 검색하여 찾습니다. 예상대로 각 로그 그룹에는 데이터를 생성한 계정 ID와 레이블이 표시됩니다. 두 로그 그룹을 모두 선택하고 View in Logs Insights(로그 인사이트에서 보기)를 선택합니다.

콘솔 스크린샷.

이제 CloudWatch Logs Insights 쿼리 구문을 사용하여 여러 AWS 계정의 로그를 검색하고 분석할 수 있습니다. 예를 들어 간단한 쿼리를 실행하여 두 로그 그룹의 마지막 20개의 메시지를 확인합니다. 로그가 속한 계정 ID를 보기 위해 @log 필드를 포함합니다.

콘솔 스크린샷.

이제 계정간 로그 그룹에 대한 Contributor Insights 규칙도 만들 수 있습니다. 예를 들어, 이를 통해 여러 계정에서 어떤 보안 이벤트가 발생하는지 전체적으로 보거나 여러 계정에서 실행되는 서버리스 애플리케이션에서 가장 비용이 많이 드는 Lambda 요청을 식별할 수 있습니다.

그런 다음 탐색 창의 Metrics(지표) 섹션에서 All metrics(모든 지표)를 선택합니다. CloudWatch Lambda Insights에서 수집한 Lambda 함수 런타임 성능 지표를 보려면 LambdaInsights를 선택한 다음 function_name을 선택합니다. 그리고 메모리 지표를 확인하기 위해 multi-accountmemory를 검색합니다. 다시 한번, 이러한 지표가 서로 다른 두 계정에서 나온 것임을 알려주는 계정 ID와 레이블을 확인합니다. 여기에서 관심 있는 지표를 선택하고 교차 계정 대시보드와 경보를 생성할 수 있습니다. 지표를 선택한 다음 Actions(작업) 드롭다운에서 Add to dashboard(대시보드에 추가)를 선택합니다.

콘솔 스크린샷.

새 대시보드를 만들고 Stacked area(스택 영역) 위젯 유형을 선택합니다. 그런 다음 Add to dashboard(대시보드에 추가)를 선택합니다.

콘솔 스크린샷.

다중 계정 설정을 제어할 수 있는 교차 계정 대시보드를 빠르게 만들기 위해 CPU 및 메모리 지표에도 동일한 작업을 수행합니다(각기 다른 위젯 유형 사용). 트래픽이 많지는 않지만, 기대가 됩니다.

콘솔 스크린샷.

마지막으로 탐색 창의 X-Ray traces(X-Ray 추적) 섹션에서 Service map(서비스 맵)을 선택하여 다중 계정 애플리케이션의 흐름을 확인합니다. 서비스 맵에서, 클라이언트는 소스 계정의 Lambda 함수를 트리거합니다. 그러면 이벤트가 다른 계정으로 전송되어 다른 Lambda 함수를 실행합니다.

콘솔 스크린샷.

서비스 맵에서, 소스 계정(multi-account-function-a)에서 실행 중인 함수의 톱니바퀴 아이콘을 선택한 다음 View traces(추적 보기)를 선택하여 개별 추적을 확인합니다. 추적에는 다중 AWS 계정의 데이터가 포함됩니다. 다음과 같은 구문을 사용하여 특정 계정에서 가져온 추적을 검색할 수 있습니다.

service(id(account.id: "123412341234"))

콘솔 스크린샷.

서비스 맵은 이제 여러 계정의 원격 분석을 한 곳에 통합하여 교차 계정 애플리케이션을 모니터링할 수 있는 통합 보기를 제공합니다. 이를 통해 문제를 빠르게 찾아내고 해결 시간을 단축할 수 있습니다.

가용성 및 요금
Amazon CloudWatch 계정간 관찰 가능성은 AWS Management Console, AWS Command Line Interface(CLI)AWS SDKs를 사용하는 모든 상용 AWS 리전에서 지금 바로 사용할 수 있습니다. AWS CloudFormation 지원은 며칠 내로 제공될 예정입니다. CloudWatch의 계정간 관찰 가능성은 로그와 지표에 대한 추가 비용 없이 제공되며 첫 번째 추적 사본은 무료입니다. 자세한 내용은 Amazon CloudWatch 요금 페이지를 참조하세요.

사용하는 모든 AWS 계정을 한 곳에서 모니터링하면 전반적인 활동을 더 잘 이해할 수 있고 여러 계정에 걸쳐 있는 애플리케이션 문제를 해결하는 데 도움이 됩니다.

CloudWatch 계정간 관찰 가능성을 사용하여 모든 리소스 모니터링을 시작하세요.

Danilo