기본개념 · 17장
모니터링·운영·계정 관리
이 장의 서비스들은 시나리오에서 서로를 대신하지 않습니다. 지금 어떤 상태인가, 누가 무엇을 호출했는가, 구성이 규칙을 지키는가는 서로 다른 질문이고, 각 질문에 답하는 서비스가 하나씩 정해져 있습니다. 시험이 이 셋을 집요하게 섞어 놓는 이유도 그래서입니다.
학습 목표
- CloudWatch의 지표 · 로그 · 알람이 어떻게 연결되는지 설명하고, 지표 필터와 구독 필터를 구분할 수 있습니다.
- EC2 기본 지표에 메모리 사용률이 없다는 사실과 그 대응 방법을 설명할 수 있습니다.
- CloudTrail · AWS Config · CloudWatch가 각각 어떤 질문에 답하는지로 시나리오에서 서비스를 고를 수 있습니다.
- Systems Manager의 Session Manager로 SSH 없이 접속하는 구성의 이점을 설명할 수 있습니다.
- AWS Organizations · AWS Control Tower · Trusted Advisor의 역할을 구분할 수 있습니다.
- CloudFormation의 스택 · 변경 세트 · 드리프트 · StackSets를 구분하고, AWS CDK가 시험 범위 밖이라는 사실을 설명할 수 있습니다.
Amazon CloudWatch — 지표, 로그, 알람
CloudWatch는 세 가지를 담습니다. 지표(metric)는 시간에 따른 숫자, 로그(log)는 텍스트 이벤트, 알람(alarm)은 지표가 조건을 만족할 때 동작을 일으키는 장치입니다. 이 셋이 어떻게 연결되는지가 이 절의 전부입니다.
지표 — 해상도와 사용자 지정 지표
AWS 서비스는 지표를 자동으로 CloudWatch에 보냅니다. Amazon EC2의 경우 기본 모니터링에서는 데이터 포인트가 5분 단위로 제공되고, 세부 모니터링을 켜면 1분 단위가 됩니다. 기본 모니터링에는 추가 요금이 없고, 세부 모니터링은 전송되는 지표마다 요금이 붙습니다.
직접 올리는 사용자 지정 지표에는 해상도 선택지가 하나 더 있습니다.
PutMetricData의 StorageResolution 값이 60이면 1분 해상도이고,
1로 지정하면 1초 단위까지 저장하는 고해상도 지표가 됩니다.
API 문서는 고해상도가 사용자 지정 지표에서만 제공된다고 명시합니다.
aws cloudwatch put-metric-data \
--namespace 'Example/OrderService' \
--metric-data '[
{
"MetricName": "QueueBacklog",
"Dimensions": [{"Name":"Env","Value":"prod"}],
"Value": 128,
"Unit": "Count",
"StorageResolution": 1
}
]'
로그 — 지표 필터와 구독 필터는 다르다
CloudWatch Logs는 로그 이벤트를 로그 그룹 아래 로그 스트림으로 담습니다. 로그 그룹에는 보존 정책을 걸 수 있고, 걸지 않으면 무기한 보관됩니다. 비용 항목이 되므로 보존 기간을 정해 두는 것이 기본입니다.
로그에서 무언가를 꺼내는 방법은 두 가지이며, 목적이 다릅니다.
| 항목 | 지표 필터(metric filter) | 구독 필터(subscription filter) |
|---|---|---|
| 하는 일 | 패턴에 맞는 로그 이벤트를 세어 CloudWatch 지표로 만듭니다 | 로그 이벤트를 실시간 스트림으로 다른 서비스에 전달합니다 |
| 결과 | 지표 → 알람 → 알림·동작 | Amazon Kinesis Data Streams, Amazon Data Firehose, AWS Lambda로 전달 |
| 쓰는 상황 | "로그에 ERROR가 N번 넘게 나오면 알림" |
"로그를 실시간으로 가공해 다른 저장소로 보낸다", "여러 계정의 로그를 한 계정으로 모은다" |
| 제약 | 추출된 지표는 사용자 지정 지표로 과금됩니다. 카디널리티가 높은 값을 차원으로 쓰지 않습니다 | 로그 그룹 하나에 구독 필터를 최대 2개까지 붙일 수 있습니다 |
aws logs put-metric-filter \
--log-group-name /app/order-service \
--filter-name error-count \
--filter-pattern 'ERROR' \
--metric-transformations \
metricName=OrderServiceErrors,metricNamespace=Example/OrderService,metricValue=1
aws cloudwatch put-metric-alarm \
--alarm-name order-service-errors \
--namespace Example/OrderService \
--metric-name OrderServiceErrors \
--statistic Sum \
--period 300 \
--evaluation-periods 1 \
--threshold 10 \
--comparison-operator GreaterThanThreshold \
--treat-missing-data notBreaching \
--alarm-actions arn:aws:sns:ap-northeast-2:123456789012:ops-alerts
알람 — 결측 데이터와 복합 알람
알람은 지표가 평가 기간 동안 조건을 만족하는지 보고
OK · ALARM · INSUFFICIENT_DATA 세 상태 사이를 오갑니다.
여기서 두 가지가 시험에 나옵니다.
첫째, 결측 데이터 처리입니다.
TreatMissingData의 값은 breaching · notBreaching ·
ignore · missing 네 가지이고,
지정하지 않으면 기본값은 missing입니다.
데이터가 드문드문 들어오는 지표에 알람을 걸면
이 설정 때문에 알람이 계속 울리거나 아예 울리지 않는 일이 생깁니다.
둘째, 복합 알람입니다. 다른 알람들의 상태를 규칙식으로 조합해 만드는 알람이며, API 문서는 규칙식에 최대 100개의 하위 알람을 넣을 수 있다고 명시합니다. 여러 알람이 동시에 울려 알림이 쏟아지는 것을 줄이는 것이 목적입니다.
| 동작 | 쓰는 상황 |
|---|---|
| Amazon SNS 알림 | 운영자에게 알리거나, 구독한 Lambda 함수로 후속 처리를 트리거합니다 |
| Auto Scaling 정책 실행 | 지표 기반으로 인스턴스 수를 늘리거나 줄입니다(7장) |
| EC2 동작 | 상태 확인에 실패한 인스턴스를 재부팅하거나 복구합니다 |
대시보드
대시보드는 여러 리전과 계정의 지표를 한 화면에 모읍니다. 시험에서 대시보드 자체를 깊게 묻지는 않지만, "여러 계정의 운영 지표를 한곳에서 본다"는 요구가 나오면 교차 계정 대시보드가 답의 일부가 됩니다.
CloudTrail · Config · CloudWatch — 세 가지 질문 SAA 빈출
이 세 서비스를 구분하는 방법은 기능을 외우는 것이 아니라 각자 답하는 질문을 하나씩 붙여 두는 것입니다. 시험은 이 구분만 반복해서 묻습니다.
| 서비스 | 답하는 질문 | 기록 단위 | 문제문의 신호 |
|---|---|---|---|
| AWS CloudTrail | 누가 언제 어떤 API를 호출했는가 | API 호출 이벤트 | "누가 삭제했는지 밝혀야 한다", "감사 추적", "API 활동 기록" |
| AWS Config | 리소스 구성이 규칙에 맞는가, 언제 어떻게 바뀌었는가 | 리소스 구성 항목과 이력 | "규정 준수 여부를 지속적으로 평가", "구성 변경 이력", "규칙 위반 시 자동 수정" |
| Amazon CloudWatch | 지금 얼마나 잘 동작하고 있는가 | 지표와 로그 | "사용률이 임계값을 넘으면", "응답 지연을 감시", "로그에서 오류를 찾아" |
CloudTrail — 이벤트 유형과 무결성
CloudTrail은 계정의 API 호출을 기록하고 추적(trail)을 만들면 Amazon S3 버킷으로 로그 파일을 계속 전달합니다. 기록되는 이벤트는 유형에 따라 기본 동작이 다릅니다.
| 이벤트 유형 | 무엇을 기록하는가 | 기본 동작 |
|---|---|---|
| 관리 이벤트 | 리소스를 만들고 바꾸고 지우는 제어 평면 호출. 보안 그룹 수정, 역할 생성 등 | 별도 선택기를 지정하지 않으면 읽기·쓰기 관리 이벤트가 모두 기록됩니다 |
| 데이터 이벤트 | 객체 수준 호출. Amazon S3 객체 GetObject·PutObject, Lambda 함수 Invoke, DynamoDB 테이블 항목 작업 등 |
기본적으로 기록되지 않습니다 — 이벤트 선택기로 켜야 하고 양이 많아 비용이 커질 수 있습니다 |
| 인사이트 이벤트 | 호출량이 평소와 크게 다른 비정상 패턴 | 별도로 켜야 합니다 |
추적을 만들 때 정하는 설정 중 시험에 나오는 것은 셋입니다.
- 다중 리전 추적 —
IsMultiRegionTrail의 기본값은false여서 만든 리전에서만 기록합니다. 모든 리전의 이벤트를 남기려면 켜야 합니다. AWS는 이를 모범 사례로 권장합니다. - 조직 추적 —
IsOrganizationTrail을 켜면 조직의 모든 계정에 대한 추적이 됩니다. 관리 계정이나 위임된 관리자 계정에서만 만들 수 있습니다. - 로그 파일 무결성 검증 — 켜면 CloudTrail이 다이제스트 파일을 함께 만들어 로그가 전달 후 변조되지 않았음을 증명할 수 있게 합니다. 기본값은 꺼짐입니다.
aws cloudtrail create-trail \
--name org-audit-trail \
--s3-bucket-name example-org-cloudtrail-logs \
--is-multi-region-trail \
--is-organization-trail \
--enable-log-file-validation
aws cloudtrail start-logging --name org-audit-trail
AWS Config — 규칙과 자동 수정
Config는 리소스의 구성을 계속 기록하고, 규칙(rule)으로 그 구성이 원하는 상태인지 평가합니다. 규칙에는 AWS가 미리 만들어 둔 관리형 규칙과 직접 작성하는 사용자 지정 규칙이 있습니다.
- 구성 항목과 이력 — 리소스가 어느 시점에 어떤 구성이었는지 되짚을 수 있습니다. "언제부터 이 버킷이 공개였는가" 같은 질문에 답합니다.
- 적합성 팩(conformance pack) — 규칙과 수정 동작의 묶음을 계정과 리전, 나아가 조직 전체에 한 번에 배포합니다.
- 수정 동작(remediation) — 규칙을 위반한 리소스에 대해 Systems Manager 자동화 문서를 실행해 원하는 상태로 되돌립니다.
AWS Systems Manager — 인스턴스를 열지 않고 운영한다
Systems Manager는 여러 기능의 묶음입니다. SAA에서 반복해서 나오는 것은 세 가지입니다.
| 기능 | 무엇을 하는가 | 고르는 신호 |
|---|---|---|
| Session Manager | 브라우저나 CLI로 인스턴스에 셸 세션을 엽니다. 인스턴스가 SSM 에이전트로 바깥으로 연결하므로 인바운드 포트를 열지 않아도 됩니다 | "SSH 키를 관리하고 싶지 않다", "배스천 호스트를 없애고 싶다", "22번 포트를 열 수 없다" |
| Patch Manager | 패치 기준선(patch baseline)과 유지 관리 기간에 따라 운영체제 패치를 자동으로 적용합니다 | "수백 대 인스턴스에 패치를 일괄 적용", "패치 준수 상태를 보고" |
| Parameter Store | 설정값과 비밀을 계층 구조로 저장합니다. 자세한 비교는 16장에 있습니다 | "설정값을 코드 밖으로", "교체 요구가 없는 값" |
aws ssm start-session --target i-0123456789abcdef0
# 세션 로그를 남기려면 세션 기본 설정에서 S3 버킷이나 CloudWatch Logs 를 지정합니다.
aws ssm describe-sessions --state Active \
--query 'Sessions[].[SessionId,Target,Owner]' --output table
계정 거버넌스 — Organizations, Control Tower, Trusted Advisor
1장에서 AWS Organizations의 계층과 2장에서 SCP의 성질을 다뤘습니다. 여기서는 그 위에 얹히는 도구들을 정리합니다.
| 도구 | 무엇을 하는가 | 고르는 신호 |
|---|---|---|
| AWS Organizations | 계정을 조직과 OU로 묶고, 서비스 제어 정책으로 권한 상한을 걸며, 결제를 통합합니다 | "여러 계정을 하나로 관리", "특정 리전 사용을 막는다", "통합 결제" |
| AWS Control Tower | 모범 사례 구성의 랜딩 존을 자동으로 세우고, 제어(가드레일)를 OU에 적용하며, 계정 발급을 표준화합니다 | "다중 계정 환경을 처음부터 표준에 맞게 구축", "새 계정을 규칙에 맞게 자동 발급" |
| AWS Trusted Advisor | 계정을 모범 사례 점검 항목으로 검사합니다 — 비용 최적화 · 성능 · 보안 · 내결함성 · 서비스 한도 · 운영 우수성 여섯 범주 | "낭비와 위험을 훑어본다", "서비스 한도에 근접했는지 확인" |
Control Tower는 Organizations 위에 얹힌다
둘은 경쟁 관계가 아닙니다. Control Tower는 Organizations를 바탕으로 동작하며, 조직·OU·SCP·CloudTrail·Config를 미리 정해진 모범 사례 형태로 한 번에 구성해 줍니다. 직접 하나씩 세우는 것과 같은 결과를 자동화한 것이라고 보면 됩니다.
제어(control)는 성격이 셋으로 나뉩니다 — 위반을 막는 예방 제어, 위반을 알아채는 탐지 제어, 위반이 일어나지 않게 구성 자체를 강제하는 사전 예방 제어입니다. 예방 제어는 대체로 SCP로, 탐지 제어는 대체로 Config 규칙으로 구현됩니다.
AWS CloudFormation — 코드형 인프라
CloudFormation은 템플릿에 적힌 리소스 구성을 그대로 만들고 갱신하고 지웁니다. 만들어진 리소스 묶음이 스택(stack)이며, 스택을 지우면 그 안의 리소스가 함께 정리됩니다.
| 개념 | 무엇인가 | 왜 필요한가 |
|---|---|---|
| 스택 | 템플릿 하나로 만들어진 리소스 묶음이자 관리 단위 | 생성·갱신·삭제를 한 단위로 다룰 수 있습니다 |
| 변경 세트(change set) | 템플릿을 적용하기 전에 무엇이 생기고 바뀌는지 미리 보여 주는 목록 | 운영 환경에서 의도치 않은 리소스 교체를 사전에 발견합니다 |
| 드리프트 감지(drift detection) | 실제 구성이 템플릿에서 정의한 기대 구성과 달라졌는지 검사합니다. 템플릿에 명시된 속성만 검사합니다 | 콘솔에서 손으로 바꾼 변경을 찾아냅니다. 상태가 DRIFTED · IN_SYNC 등으로 표시됩니다 |
| StackSets | 하나의 템플릿을 여러 계정과 여러 리전에 배포합니다. 조직 단위(OU)를 대상으로 지정할 수 있습니다 | 계정마다 같은 스택을 손으로 만들지 않아도 됩니다 |
| 롤백 | 생성이나 업데이트가 실패하면 이전 상태로 되돌립니다 | 부분적으로만 만들어진 인프라가 남는 것을 막습니다 |
AWSTemplateFormatVersion: '2010-09-09'
Description: 로그 보관용 버킷과 보존 규칙
Parameters:
RetentionDays:
Type: Number
Default: 365
Resources:
LogBucket:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
LifecycleConfiguration:
Rules:
- Id: expire-old-logs
Status: Enabled
ExpirationInDays: !Ref RetentionDays
Outputs:
LogBucketName:
Value: !Ref LogBucket
aws cloudformation create-change-set \
--stack-name log-archive \
--template-body file://bucket.yaml \
--change-set-name review-1
aws cloudformation describe-change-set \
--stack-name log-archive \
--change-set-name review-1 \
--query 'Changes[].ResourceChange.[Action,LogicalResourceId,Replacement]' \
--output table
aws cloudformation execute-change-set \
--stack-name log-archive \
--change-set-name review-1
aws cloudformation detect-stack-drift --stack-name log-archive
AWS X-Ray — 요청이 어디서 느려지는가
지표와 로그는 구성 요소 하나하나를 보여 주지만, 요청 하나가 여러 서비스를 거칠 때 어느 구간에서 시간이 걸렸는지는 알려 주지 않습니다. AWS X-Ray는 요청에 추적 정보를 붙여 서비스 맵과 구간별 지연을 만듭니다.
- 마이크로서비스나 서버리스처럼 호출이 여러 단계로 나뉜 구조에서 가치가 큽니다.
- AWS Lambda, Amazon API Gateway, Amazon ECS 등과 통합되어 추적을 수집합니다.
- "어느 서비스 호출이 병목인지 찾아야 한다"는 요구에 CloudWatch 지표만으로는 답하기 어렵습니다.
흔한 오해
시험 포인트 정리
이 장의 주제는 보안 아키텍처 설계(30%)의 감사·거버넌스 부분과 복원력 있는 아키텍처 설계(26%)의 관측 부분에 걸쳐 있습니다.
확인 문제
이 장의 핵심을 확인하는 10문항입니다. 키보드만으로 완주할 수 있습니다 — 숫자키 1~5로 선택지를 고르고 Enter로 제출합니다.
학습용 유형 연결형과 순서 배열 문항이 섞여 있을 수 있습니다. 이 두 유형은 암기 확인에 효율이 좋아서 기본개념 확인 문제에만 넣었으며, 실제 SAA-C03 시험에는 출제되지 않습니다.
이어서 볼 곳
- 16장 · 보안·암호화·거버넌스 위협 탐지 서비스와 KMS, 그리고 이 장의 Parameter Store와 짝을 이루는 Secrets Manager를 다룹니다.
- 2장 · IAM과 자격 증명 SCP와 권한 경계, 정책 평가 로직. 이 장의 거버넌스 도구가 무엇을 강제하는지 이해하는 전제입니다.
- 18장 · 비용 최적화·마이그레이션·재해 복구 Trusted Advisor와 Compute Optimizer를 비용 관점에서 다시 보고, 비용 가시성 도구를 구분합니다.
- 7장 · 로드 밸런싱과 오토스케일링 CloudWatch 알람이 실제로 무엇을 움직이는지 — 스케일링 정책과 헬스체크의 동작을 봅니다.
- 케이스 10 · 규정 준수 감사에 대응하라 CloudTrail과 Config, Object Lock, 로그 아카이브 계정 분리를 하나의 요구사항 묶음으로 설계합니다.
- 실습 12 · CloudWatch 알람과 SNS 알림 파이프라인 지표 필터로 로그에서 지표를 뽑고 복합 알람까지 손으로 만들어 봅니다.
- 시험 당일 전략 범위 밖 서비스를 소거 근거로 쓰는 법과 시간 배분, 한정어를 먼저 읽는 독해 순서를 정리했습니다.
- 서비스 빠른참조 시험 범위 서비스의 한 줄 정의와 선택 기준. 범위 밖 목록도 함께 있습니다.
공식 문서 출처
이 장의 개념 서술과 API 동작은 모두 아래 문서에서 확인했습니다.
- Amazon CloudWatch API 레퍼런스 — PutMetricData
—
StorageResolution의 값1과60, 고해상도가 사용자 지정 지표에서만 제공된다는 서술 - Amazon CloudWatch API 레퍼런스 — PutMetricAlarm
—
TreatMissingData의 네 가지 값과 기본값, 평가 기간의 유효 값 - Amazon CloudWatch API 레퍼런스 — PutCompositeAlarm — 복합 알람의 규칙식과 하위 알람 개수 상한, 알림 소음을 줄이는 목적
- Amazon CloudWatch Logs API 레퍼런스 — PutSubscriptionFilter — 구독 필터가 지원하는 대상(Kinesis Data Streams · Firehose · Lambda)과 로그 그룹당 2개 제한
- Amazon CloudWatch Logs API 레퍼런스 — PutMetricFilter — 지표 필터가 로그에서 지표를 추출하며 사용자 지정 지표로 과금된다는 서술
- Amazon CloudWatch Logs API 레퍼런스 — PutRetentionPolicy — 로그 그룹 보존 정책의 동작
- Amazon EC2 사용 설명서 — 사용 가능한 CloudWatch 지표 목록
—
AWS/EC2네임스페이스의 인스턴스 지표 목록, 기본 5분 · 세부 모니터링 1분 - Amazon EC2 사용 설명서 — 세부 모니터링 활성화 — 기본 모니터링과 세부 모니터링의 데이터 간격과 과금 차이
- Amazon CloudWatch 사용 설명서 — CloudWatch 에이전트가 수집하는 지표 — 메모리를 포함한 운영체제 수준 지표가 에이전트를 통해 수집되며 사용자 지정 지표로 취급된다는 서술
- AWS CloudTrail API 레퍼런스 — CreateTrail
—
IsMultiRegionTrail·IsOrganizationTrail·EnableLogFileValidation의 기본값과 의미 - AWS CloudTrail API 레퍼런스 — PutEventSelectors — 선택기를 지정하지 않으면 읽기·쓰기 관리 이벤트만 기록되고 데이터 이벤트는 기록되지 않는다는 서술
- AWS CloudTrail 사용 설명서 — 로그 파일 무결성 검증 — 다이제스트 파일로 로그 변조를 검증하는 방법
- AWS Config API 레퍼런스 — PutConfigRule — 관리형 규칙과 사용자 지정 규칙의 구분
- AWS Config API 레퍼런스 — PutConformancePack — 적합성 팩이 규칙과 수정 동작의 묶음이며 조직 전체에 배포할 수 있다는 서술
- AWS Config API 레퍼런스 — PutRemediationConfigurations — 규칙 위반 시 Systems Manager 문서로 수정 동작을 실행하는 구조
- AWS Systems Manager API 레퍼런스 — StartSession — Session Manager 세션 시작의 동작과 클라이언트 플러그인 요구
- AWS Systems Manager 사용 설명서 — Session Manager — 인바운드 포트 개방 없이 셸 접속을 제공하고 세션을 기록할 수 있다는 서술
- AWS Systems Manager API 레퍼런스 — CreatePatchBaseline — 패치 기준선의 개념
- AWS Organizations 사용 설명서 — 소개 — 조직·OU·정책의 구조
- AWS Control Tower 사용 설명서 — Control Tower란 — 랜딩 존과 제어(가드레일), 계정 발급 표준화
- AWS Support 사용 설명서 — Trusted Advisor 점검 참조 — 비용 최적화 · 성능 · 보안 · 내결함성 · 서비스 한도 · 운영 우수성 여섯 범주
- AWS Support 사용 설명서 — Trusted Advisor 시작하기 — 지원 플랜에 따른 점검 항목 차이
- AWS CloudFormation API 레퍼런스 — CreateChangeSet — 변경 세트가 적용 전 변경 내역을 미리 보여 준다는 서술
- AWS CloudFormation API 레퍼런스 — DetectStackDrift — 드리프트 감지가 템플릿에 명시된 속성만 검사한다는 서술
- AWS CloudFormation API 레퍼런스 — CreateStackInstances — StackSets가 계정과 리전, 조직 단위를 대상으로 스택 인스턴스를 만든다는 서술
- AWS CloudFormation 사용 설명서 — DeletionPolicy 속성
—
Retain과Snapshot의 동작 - SAA-C03 시험 가이드 — 범위 밖 서비스 — AWS CDK와 개발자 도구가 범위 밖이라는 근거
- AWS X-Ray 개발자 안내서 — X-Ray란 — 분산 추적과 서비스 맵의 개념