클라우드 에이전트 설정
이 문서는 AWS 환경에서 WhaTap 클라우드 에이전트를 설정하기 위한 가이드입니다. 주요 설정 항목, 필드 설명, 권한 구성, 실행 명령까지 포함하여 운영 환경에 바로 적용할 수 있도록 구성되어 있 습니다.
에이전트 설정
AWS Aurora and RDS 설정 방법입니다.
AWS Aurora and RDS 설정
input:
csp: "aws" # 클라우드 서비스 제공자를 입력합니다.
namespace: "rds"
region: "ap-northeast-2"
instances: # 명시한 인스턴스는 항상 수집합니다. 클러스터 내의 인스턴스를 이 속성에 명시하면, 오토스케일 여부와 관계없이 항상 수집합니다.
- name: "mysql-rds"
slow_query: true # 슬로우 쿼리 페이지를 사용하려면, true로 설정합니다. 해당 기능은 MySQL 및 PostgreSQL 인스턴스에 서만 지원됩니다.
clusters:
autoscale:
enabled: false # 오토스케일이 활성화되면, 오토스케일된 인스턴스들을 수집 대상에서 추가하거나 삭제합니다.
interval: 60 # 명시한 클러스터들의 오토스케일 체크 주기입니다. (단위: 초)
names:
- "database-cluster-name"
metrics: # 수집할 메트릭을 입력합니다.
- "CPUUtilization"
- "FreeStorageSpace"
- "FreeableMemory"
- "ReadLatency"
- "WriteLatency"
- "ReadIOPS"
- "WriteIOPS"
- "NetworkReceiveThroughput"
- "NetworkTransmitThroughput"
- "FreeLocalStorage"
logs:
enabled: false # 로그 수집을 활성화/비활성화 할 수 있습니다. 로그 수집을 활성화하려면 true를 입력합니다.
groups: # 원하는 AWS log group을 추가합니다.
- "/aws/rds/cluster/database-cluster-name/error"
- "/aws/lambda/MyLambda"
output: # 수집한 메트릭 데이터를 받는 WhaTap 정보를 입력합니다.
license: "abcdefg-higjgkgjk-zxcvnbnbmc"
host: "127.0.0.1"
| 필드 | 설명 |
|---|---|
csp | 클라우드 서비스 제공자로 aws(Amazon Web Services)를 의미 |
namespace | 수집 대상 서비스의 네임스페이스 - 고정값: Aurora and RDS 설정 시 rds 입력 |
region | AWS 리전 코드 - 예. ap-northeast-2 (서울 리전) |
instances | 항상 수집할 인스턴스 목록으로 오토스케일 여부와 관계없이 지정된 인스턴스는 무조건 수집함 |
instances[].name | RDS 인스턴스 이름 - 예. mysql-rds |
instances[].slow_query | 해당 인스턴스의 슬로우 쿼리 수집 여부, MySQL 및 PostgreSQL 인스턴스에서만 지원 - true: 수집- false: 미수집 |
clusters | RDS 클러스터 관련 설정 |
clusters.autoscale.enabled | 클러스터 오토스케일 수집 여부 - true: 자동으로 인스턴스를 추가/제거하며 수집 - false: instances에 직접 입력한 인스턴스만 수집 대상에 포함 |
clusters.autoscale.interval | 오토스케일 여부를 감지하는 주기(단위: 초) |
clusters.names | 오토스케일 여부를 체크할 클러스터 이름 목록 |
metrics | 수집할 메트릭 항목 목록 - 예. CPUUtilization, FreeStorageSpace 등- 참고. Amazon RDS에 대한 Amazon CloudWatch 지표 공식 문서 바로가기 |
output.license | 수집된 데이터를 전송할 WhaTap의 라이선스 키 |
output.host | 수집 데이터를 전송할 WhaTap 서버 호스트 주소(IP) |
크로스 계정 모니터링(멀티 AWS 계정)
단일 클라우드 에이전트로 여러 AWS 계정의 RDS/DocumentDB를 모니터링할 수 있습니다. 멀티 계정(환경별 분리, 파트너 계정 등)을 사용하는 경우, 계정마다 에이전트를 설치할 필요 없이 하나의 에이전트에서 STS AssumeRole로 다른 계정의 리소스를 조회합니다.
| 항목 | 내용 |
|---|---|
| 지원 대상 | AWS RDS (Aurora, standalone), DocumentDB |
| 인증 방식 | EC2 Instance Profile + STS AssumeRole |
설정 방식 선택
클러스터 설정에는 두 가지 방식이 있으며, 동시에 사용할 수 없습니다.
-
names: 단일 계정 전용(에이전트가 설치된 EC2의 IAM Role로 본인 계정만 조회) -
account_configs: 크로스 계정 지원(STS AssumeRole을 통해 여러 계정 조회)
account_configs 설정
input:
csp: "aws"
namespace: "rds"
region: "ap-northeast-2"
clusters:
autoscale:
enabled: true
interval: 300
account_configs:
# 로컬 계정 (assume_role_arn 생략하면 본인 계정)
- clusters: ["local-aurora-cluster"]
instances: ["standalone-mysql-1"]
# 다른 계정 A
- assume_role_arn: "arn:aws:iam::111111111111:role/DBXCRole"
clusters: ["partner-cluster-1", "partner-cluster-2"]
# 다른 계정 B
- assume_role_arn: "arn:aws:iam::222222222222:role/QARole"
clusters: ["qa-cluster"]
instances: ["qa-standalone-pg"]
metrics:
- "CPUUtilization"
- "FreeStorageSpace"
- "FreeableMemory"
- "ReadLatency"
- "WriteLatency"
output:
license: "your-license-key"
host: "127.0.0.1"
account_configs 필드| 필드 | 필수 | 설명 |
|---|---|---|
assume_role_arn | X | STS AssumeRole ARN, 생략하면 로컬 계정 사용 |
clusters | O | Aurora/DocumentDB 클러스터 이름, 소속 인스턴스를 자동으로 찾아줌 |
instances | X | 클러스터에 속하지 않는 standalone RDS 인스턴스 이름 |
clusters와 instances의 차이
clusters | instances | |
|---|---|---|
| 대상 | Aurora 클러스터, DocumentDB 클러스터 | 클러스터 없이 단독 운영되는 RDS |
| 동작 | 클러스터 이름으로 소속 인스턴스 자동 디스커버리 | 인스턴스 이름을 직접 지정 |
| 오토스케일 | 인스턴스 추가/삭제 시 자동 반영 | 해당 없음 |
| 예시 | Aurora MySQL 클러스터 | RDS MySQL 단일 인스턴스 |
설정 예시 1. 단일 계정 + standalone 인스턴스
clusters:
autoscale:
enabled: true
interval: 300
account_configs:
- clusters: ["prod-aurora"]
instances: ["legacy-mysql-standalone"]
설정 예시 2. 3개 계정(본인 + 파트너 + QA)
clusters:
autoscale:
enabled: true
interval: 300
account_configs:
- clusters: ["prod-cluster", "staging-cluster"]
- assume_role_arn: "arn:aws:iam::111111111111:role/DBXCRole"
clusters: ["partner-prod", "partner-dev"]
- assume_role_arn: "arn:aws:iam::222222222222:role/QADBXCRole"
clusters: ["qa-cluster"]
instances: ["qa-standalone-pg"]
-
names와account_configs는 동시에 사용할 수 없습니다. 에이전트 시작 시 validation 에러가 발생합니다. -
ARN 형식을 엄격하게 검증합니다.
arn:aws:iam::<12자리 숫자>:role/<이름>— 콜론 2개(::)를 빠뜨리기 쉬우니 주의하세요. -
각
account_config에 최소 1개의 cluster가 필요합니다. -
autoscale.enabled: true여야 클러스터 디스커버리가 동작합니다.
권한 설정
에이전트가 정상적으로 동작하려면, 서비스별로 필요한 권한을 설정해야 합니다.
AWS Aurora and RDS 권한
클라우드 에이전트는 다음 기능을 수행하기 위해 AWS API를 호출합니다.
- AWS Aurora and RDS 인스턴스 및 클러스터 정보를 조회하여 모니터링 대상 확인
- CloudWatch 메트릭 수집
IAM 인라인 정책
JSON 정책을 IAM 사용자 또는 역할에 인라인 정책으로 추가하세요. EC2에서 에이전트를 실행하는 경우, 해당 EC2 인스턴스에 연결된 IAM 역할에 해당 정책을 부여합니다.
- 본 정책은 Aurora와 RDS 서비스 모두에 적용됩니다.
- Resource 항목은 모든 Aurora와 RDS 리소스를 대상으로 지정되어 있으며, 보안 정책에 따라 필요한 경우 리소스 ARN을 제한할 수 있습니다.
- 에이전트는 조회(Read-only) API만 사용합니다. 데이터베이스에 영향을 주는 권한은 포함되지 않습 니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters",
"rds:DescribeDBClusterParameters",
"rds:DescribeOptionGroups"
],
"Resource": "*"
},
{
"Sid": "CloudWatchMetricsPermissions",
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics"
],
"Resource": "*"
},
{
"Sid": "CloudWatchLogsPermissions",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:FilterLogEvents",
"logs:GetLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:log-group:/aws/rds/*"
]
}
]
}
크로스 계정 IAM 권한
account_configs를 사용하여 크로스 계정 모니터링을 설정하려면 추가 IAM 권한이 필요합니다.
에이전트 EC2 Instance Profile
에이전트가 실행되는 EC2에 대상 계정의 Role을 Assume할 수 있는 권한을 부여합니다.
{
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::111111111111:role/DBXCRole",
"arn:aws:iam::222222222222:role/QARole"
]
}
]
}
대상 계정 Cross-Account Role
대상 계정에서 에이전트 계정의 접근을 허용하는 Role을 생성합니다.
-
Trust Relationship: 에이전트 계정을 허용
{
"Principal": {
"AWS": "arn:aws:iam::<에이전트-계정-ID>:role/DBXC-EC2-Instance-Role"
},
"Action": "sts:AssumeRole"
} -
Permission Policy: RDS/CloudWatch 조회 권한
{
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters",
"cloudwatch:GetMetricData",
"logs:FilterLogEvents"
],
"Resource": "*"
}
요금 안내
클라우드 모니터링 에이전트는 무료지만, 클라우드 서비스 사용에 따라 별도 요금이 발생할 수 있으니 확인이 필요합니다.
AWS 요금
클라우드 모니터링 에이전트는 별도의 SaaS 요금 없이 제공되며, 에이전트 설치만으로 모니터링 기능을 사용할 수 있습니다. 단, AWS CloudWatch 등 클라우드 서비스의 API를 통해 메트릭을 수집하기 때문에, CloudWatch 사용량에 따라 별 도 요금이 부과될 수 있습니다.
본 에이전트는 기본적으로 1분 주기로 GetMetricData API를 호출하여 메트릭을 수집하며, 호출 빈도와 수집 대상에 따라 요금이 증가할 수 있으므로 주의가 필요합니다.
자세한 요금 정책은 AWS 공식 문서의 Amazon CloudWatch 요금 페이지를 참고하시기 바랍니다.