1. 개요 (Introduction)
왜 이 문제에 주목했는가?
기업이 성장하면서 AWS 계정이 여러 개로 분리되는 것은 자연스러운 현상입니다. 보안, 비용 관리, 팀별 독립성을 위해 개발, 스테이징, 프로덕션 환경을 각각 다른 AWS 계정으로 분리하게 되었습니다. 하지만 이로 인해 새로운 문제가 발생했습니다.
각 계정의 CloudWatch 메트릭과 로그를 확인하기 위해 계정을 일일이 전환해야 했고, 전체적인 시스템 상태를 파악하기 어려웠습니다. 특히 장애 상황에서 여러 계정을 오가며 원인을 찾는 것은 매우 비효율적이었습니다.
프로젝트 개요 및 배경
- 환경: 개발(Dev), 스테이징(Staging), 프로덕션(Prod) 3개의 AWS 계정
- 문제점:
- 계정별로 분산된 모니터링 데이터
- 통합 대시보드 부재
- 장애 대응 시 계정 전환으로 인한 시간 지연
- 목표: 중앙 집중식 모니터링 환경 구축
2. 기술 선택 이유 (Why This Technology?)
AWS CloudWatch OAM을 선택한 이유
기존에는 여러 가지 대안을 고려했습니다:
- 서드파티 모니터링 도구 (Datadog, New Relic)
- 장점: 강력한 기능, 멀티 클라우드 지원
- 단점: 높은 비용, 데이터 외부 전송에 따른 보안 우려
- Grafana + Prometheus
- 장점: 오픈소스, 유연한 커스터마이징
- 단점: 운영 복잡성, 별도 인프라 관리 필요
- CloudWatch Cross-Account Dashboard
- 장점: AWS 네이티브
- 단점: 제한적인 기능, 복잡한 권한 설정
CloudWatch OAM의 결정적 장점:
- AWS 네이티브 서비스로 완전 관리형
- 기존 CloudWatch 환경과 완벽 호환
- 추가 비용 없이 계정 간 데이터 공유
- 세밀한 권한 제어 가능
3. 설계 및 구축 과정 (Architecture & Implementation)
시스템 구성도 및 설명

구현 과정과 주요 고려사항
1단계: 모니터링 계정에서 Sink 생성
# AWS CLI를 통한 Sink 생성
aws oam create-sink \
--name "central-monitoring-sink" \
--tags Key=Environment,Value=Production \
--region us-east-1
2단계: 각 소스 계정에서 Link 생성
# 개발 계정에서 Link 생성
aws oam create-link \
--sink-identifier "arn:aws:oam:us-east-1:MONITORING-ACCOUNT:sink/central-monitoring-sink" \
--resource-types "AWS::CloudWatch::Metric" "AWS::Logs::LogGroup" \
--label-template "Dev-$AccountName" \
--region us-east-1
3단계: CloudFormation 템플릿을 통한 자동화
# oam-setup.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: 'CloudWatch OAM Setup for Multi-Account Monitoring'
Parameters:
SinkArn:
Type: String
Description: ARN of the OAM Sink in monitoring account
Environment:
Type: String
AllowedValues: [Dev, Staging, Prod]
Description: Environment name
Resources:
OAMLink:
Type: AWS::Oam::Link
Properties:
SinkIdentifier: !Ref SinkArn
ResourceTypes:
- AWS::CloudWatch::Metric
- AWS::Logs::LogGroup
- AWS::CloudWatch::Alarm
LabelTemplate: !Sub "${Environment}-$AccountName"
Tags:
- Key: Environment
Value: !Ref Environment
- Key: Purpose
Value: CrossAccountMonitoring
Troubleshooting 및 시행착오
주요 이슈들:
- 권한 문제
- 문제: 초기에 IAM 권한 설정 미흡으로 데이터 공유 실패
- 해결: OAM 전용 IAM 정책 생성 및 적용
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oam:CreateLink",
"oam:DeleteLink",
"oam:GetLink",
"oam:ListLinks"
],
"Resource": "*"
}
]
}
- 리전별 설정
- 문제: 멀티 리전 환경에서 일부 데이터 누락
- 해결: 각 리전별로 OAM Link 개별 설정
- 네임스페이스 충돌
- 문제: 동일한 메트릭 이름으로 인한 혼동
- 해결: Label Template을 통한 명확한 구분
4. 결과 및 효과 (Result & Outcome)
적용 결과
- 통합된 시각화로 전체 시스템 상태 한눈에 파악
- 계정 전환 없이 모든 환경 모니터링 가능
- 알람 설정 및 관리 효율성 대폭 향상
마무리
CloudWatch OAM은 멀티 계정 환경에서 모니터링 통합을 위한 강력하고 간단한 솔루션입니다. 복잡한 설정 없이도 계정 간 데이터 공유가 가능하며, 기존 CloudWatch 환경과의 완벽한 호환성을 제공합니다.
특히 AWS 네이티브 서비스의 장점을 최대한 활용할 수 있어, 추가 비용 없이도 엔터프라이즈급 모니터링 환경을 구축할 수 있었습니다. 앞으로도 AWS의 관찰 가능성(Observability) 서비스들을 적극 활용하여 더욱 효율적인 운영 환경을 만들어 나갈 계획입니다.
'AWS > Cloudwatch' 카테고리의 다른 글
| Cloudwatch log S3 저장하기 (1) | 2025.07.17 |
|---|
