1. 개요
AWS에서 두 계정간에 CloudWatch 메트릭을 시각화할 때 Grafana에서 CloudWatch를 데이터소스로 직접 연결하면 구성도 간단하고 운영도 쉽다. 하지만 CloudWatch Exporter를 사용해서 Prometheus에 저장하는 방식을 사용하면 직접 연결했을 때 대시보드를 조회할 때마다 발생할 수 있는 CloudWatch의 API 호출 비용을 줄일 수 있고, PromQL로 기존에 수집중인 다른 메트릭과 결합할 수도 있다. 구성하고자 하는 전체 구조는 다음과 같다.

2. 계정 간 권한 설정 (Cross-Account IAM)
2.1 B 계정 - 모니터링 대상 (권한 위임)
A 계정의 EC2가 B 계정의 메트릭을 읽을 수 있도록 IAM Role을 생성.
- 연결 정책:
CloudWatchReadOnlyAccess,ResourceGroupsandTagEditorReadOnlyAccess - 신뢰 관계 (Trust Relationship):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::A계정_ID:role/A_EC2_Instance_Role" },
"Action": "sts:AssumeRole"
}
]
}
2.2 A 계정 - 모니터링 서버 (권한 획득)
EC2 인스턴스 프로파일에 B 계정으로의 AssumeRole 권한을 부여.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::B계정_ID:role/B_CloudWatch_Exporter_Role"
}
]
}
3. CloudWatch Exporter 설정 (config.yml)
Exporter가 어떤 메트릭을 가져올지 정의하는 설정 파일. 아래는 EC2와 EBS의 주요 메트릭 예시.
# config.yml
region: ap-northeast-2
metrics:
- aws_namespace: AWS/EC2
aws_metric_name: CPUUtilization
aws_dimensions: [InstanceId]
aws_statistics: [Average]
- aws_namespace: AWS/EBS
aws_metric_name: VolumeWriteOps
aws_dimensions: [VolumeId]
aws_statistics: [Sum]
period_seconds: 300
range_seconds: 600
4. 환경 구성 및 실행
EC2 내부의 ~/.aws/config 설정을 통해 애플리케이션이 B 계정의 권한을 사용하도록 함.
~/.aws/config 설정:
[profile b-account]
role_arn = arn:aws:iam::B계정_ID:role/B_CloudWatch_Exporter_Role
credential_source = Ec2InstanceMetadata
Exporter 실행:
export AWS_PROFILE=b-account
java -jar cloudwatch_exporter-*-jar-with-dependencies.jar 9106 config.yml
- 9106 포트에서 HTTP 엔드포인트가 생성되며, AWS B 계정의 메트릭이 Prometheus 포맷으로 노출.
5. Prometheus 수집 및 Grafana 시각화
Prometheus 설정 (prometheus.yml)
Prometheus가 실행 중인 Exporter의 엔드포인트를 주기적으로 읽어가도록 설정한다.
scrape_configs:
- job_name: 'aws-cloudwatch-exporter'
static_configs:
- targets: ['localhost:9106']
kill -HUP {prometheus PID}로 Prometheus config수정 적용
Grafana 모니터링
이제 B 계정의 CloudWatch 메트릭이 Prometheus 내에 생성되었으므로, PromQL을 사용하여 대시보드를 구성한다. 3번에서 설정한 CloudWatch Exporter 예시config로는 aws_ec2_cpuutilization_average와 같은 메트릭을 사용할 수 있다.
'Cloud' 카테고리의 다른 글
| Istio 서비스 메쉬, kiali 대시보드 기초 실습 (0) | 2026.04.01 |
|---|---|
| AWS IRSA 개념과 적용 방법 (0) | 2025.12.03 |
| AWS IAM Roles Anywhere - 외부 워크로드에 임시 자격 증명 사용하기 (0) | 2025.10.28 |