CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
  • Week 1
    • 1.운영자가 보는 AWS 인프라: 리전, AZ, 그리고 책임의 경계선
    • 2.IAM의 운영자 사용설명서: 사용자·그룹·역할·정책 평가 알고리즘
    • 3.IAM 심화: Permission Boundary, SCP, Identity Center로 짓는 가드레일
    • 4.AWS Organizations: 100개 계정을 한 사람이 운영하는 법
    • 5.Week 1 통합 복습: 운영자 시나리오로 다시 보는 첫 주
  • Week 2
  • Week 3
    • 1.CloudWatch Alarms: M of N 평가 모델과 Composite Alarm의 설계 철학
    • 2.CloudWatch Dashboards: 크로스 계정 집계, 변수, 그리고 관측 가능성의 설계 철학
    • 3.CloudWatch Agent: 내부 동작, StatsD/collectd 통합, procstat 플러그인
    • 4.Synthetics Canary, X-Ray Sampling, ServiceLens: 사용자 관점 모니터링의 설계
    • 5.Week 3 복습: CloudWatch 관측 가능성 스택 종합
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← SOA-C02/Week 3/Day 5

기준: SOA-C02 시험 가이드·오류 제보

SOA-C02· AssociateWeek 3 · Day 5읽기 약 23분

Day 5 - Week 3 복습: CloudWatch 관측 가능성 스택 종합

Week 3에서 다룬 CloudWatch 도구들은 각각 독립적이지만, 실제 운영에서는 하나의 관측 가능성 파이프라인을 이룬다. Alarm이 "무언가 잘못됐다"를 감지하면, Dashboard가 "어느 범위에서 얼마나"를 보여주고, Agent가 "게스트 OS 내부"를 들여다보게 하고, Synthetics가 "사용자 관점"을 유지하고, X-Ray가 "어떤 서비스의 어떤 호출"이 원인인지 추적한다. 이 파이프라인이 모두 맞물려야 장애 탐지에서 원인 분석까지의 MTTD·MTTK(Mean Time To Know)가 줄어든다.

오늘은 이 다섯 도구가 실제로 어떻게 연결되는지 구조를 재조명하고, 각 도구의 내부 설계 원칙을 비교표로 정리한 뒤, 시험에서 다루는 시나리오 10개를 풀어본다.

Week 3 핵심 개념 연결 지도

[Synthetics Canary]            [실 사용자 + RUM]
 24/7 가용성 측정                LCP/CLS/JS 에러
 트래픽 없어도 탐지               실 사용자 데이터만
       │                              │
       ▼                              ▼
[CloudWatch Alarms]  ←──── [CloudWatch Metrics]  ←──── [CloudWatch Agent]
 M of N 평가                 (Standard + Custom)         EC2 메모리/디스크
 Composite Alarm              Dashboard에 표시            procstat/StatsD
 Anomaly Detection                   │                    커스텀 네임스페이스
       │                             │
       ▼                             ▼
 [SNS/PagerDuty]            [CloudWatch Dashboard]
 [SSM Automation]            Cross-Account OAM 통합
 [Auto Scaling]              Golden Signals 설계
                                     │
                              [X-Ray + ServiceLens]
                               분산 추적 → Logs 점프
                               Service Map → Trace → Log

💡 관련 이론: 이 파이프라인은 제어 이론의 관측 가능성(Observability) 개념을 현대 분산 시스템에 적용한 것이다. Rudolf Kalman이 1960년 "On the General Theory of Control Systems"에서 처음 정형화한 개념으로, "시스템의 외부 출력만으로 내부 상태를 완전히 추정할 수 있는가"를 묻는다. Metrics(숫자), Logs(텍스트), Traces(경로)라는 세 신호가 현대 운영에서의 "외부 출력"이다. CloudWatch는 세 신호를 하나의 플랫폼으로 통합하고 X-Ray가 Trace를 담당하며, ServiceLens가 이 셋을 하나의 화면에서 연결한다.

헷갈리기 쉬운 핵심 비교

M of N vs Treat Missing Data

M of N은 "얼마나 지속돼야 알람인가"를 제어한다. Treat Missing Data는 "데이터가 없을 때 어떻게 판단하나"를 제어한다. 두 설정을 혼동하는 경우가 많다.

설정제어 대상핵심 사용 사례
M of N (EvaluationPeriods + DatapointsToAlarm)위반 지속 기간일시적 spike 무시
Treat Missing Data: breaching데이터 없음 = 위반항상 살아있어야 하는 서비스
Treat Missing Data: notBreaching데이터 없음 = 정상idle 워크로드, 종료된 인스턴스
Treat Missing Data: missing (기본)누락 무시, 다른 데이터로 평가일반적 경우
Treat Missing Data: ignore현재 상태 유지유지보수 창 동안 상태 고정

Synthetics vs RUM vs X-Ray

항목SyntheticsRUMX-Ray
관점외부 봇실 사용자 브라우저내부 서비스 간
트래픽 불필요O (합성)XX
지연 원인 찾기불가부분적 (브라우저 레이어)O (Subsegment 단위)
서비스 맵XXO
비용 모델canary당 실행 횟수RUM 이벤트 수Trace 수
새벽 무트래픽 탐지OXX

이 세 도구의 구분은 소프트웨어 품질 측정 이론에서 외부 품질(external quality)과 내부 품질(internal quality)의 차이에 대응한다. Synthetics와 RUM은 사용자가 경험하는 외부 품질을 측정하고, X-Ray는 시스템 내부의 구조적 품질(어떤 컴포넌트가 어떤 레이턴시를 추가하는가)을 측정한다. Google SRE의 "Golden Signals"(지연, 트래픽, 에러, 포화)는 이 두 관점을 합친 프레임워크로, Synthetics는 가용성을 포함한 외부 지연과 에러를 측정하고 X-Ray는 내부 컴포넌트별 지연과 포화를 측정한다.

Composite Alarm vs Metric Math Alarm

항목Composite AlarmMetric Math Alarm
입력다른 알람들의 상태(OK/ALARM)메트릭 + 수식
표현식ALARM("a") AND ALARM("b")e/r*100 > 5
목적알람 노이즈 감소, 서비스 단위 집약에러율 등 파생 지표 알람
Actions SuppressorO (자식 알람 액션 비활성화)X
비용Composite Alarm + 자식 알람 각각 과금알람 1개 과금

Composite Alarm의 Boolean 표현식 설계는 논리 회로(Logic Circuit) 이론과 동일한 구조를 가진다. AND/OR/NOT 게이트를 조합해 복합 조건을 표현하는 것이 디지털 회로 설계의 기본이듯, 알람을 논리 게이트로 조합해 "서비스 전체가 저하됐는가"를 판단한다. 이 추상화 계층은 Jens Rasmussen(1983)의 "Skills, Rules, Knowledge" 모델에서 설명하는 인지적 계층화와 일치한다: 하위 신호(자식 알람)를 상위 의미 단위(서비스 상태)로 추상화한다.

CloudWatch Agent 수집 메트릭 종류

메트릭수집 방법네임스페이스Agent 필요 여부
CPU Utilization하이퍼바이저AWS/EC2불필요
Network In/Out하이퍼바이저AWS/EC2불필요
mem_used_percent/proc/meminfoCWAgent (커스텀)필요
disk_used_percentstatfs() syscallCWAgent (커스텀)필요
프로세스별 CPU/proc/[pid]/statCWAgent (커스텀)필요 (procstat)
애플리케이션 커스텀StatsD UDP 8125커스텀 지정필요 (StatsD 서버)

CloudWatch Agent가 Linux에서 /proc/meminfo를 읽는 방식과 Windows에서 WMI(Windows Management Instrumentation) Performance Counter를 읽는 방식은 근본적으로 다르다. Linux는 procfs라는 가상 파일 시스템을 통해 커널이 메모리 통계를 실시간으로 노출하는데, MemTotal, MemFree, Buffers, Cached 필드를 조합해 mem_used_percent를 계산한다. 계산식은 (MemTotal - MemFree - Buffers - Cached) / MemTotal × 100이다. free -m 명령의 used 컬럼과 일치하는 값이다. Windows에서는 \Memory\% Committed Bytes In Use 카운터를 사용한다.

X-Ray Sampling: Reservoir + Fixed Rate 흐름

초당 요청 2000개 → Sampling Rule 적용
                    │
          Reservoir = 10 (초당 최소 10개 보장)
                    │
          ┌─────────┴─────────┐
     첫 10개 요청           나머지 1990개
     (100% 샘플링)          Fixed Rate = 5% 적용
                               = 약 99개 추가 샘플
                    │
          총 초당 약 109개 Trace 전송

X-Ray의 Reservoir + Fixed Rate 설계는 네트워크 트래픽 제어의 토큰 버킷(Token Bucket) 알고리즘과 구조적으로 동일하다. Reservoir가 버킷 크기(burst capacity)이고, Fixed Rate가 지속 처리율(sustained rate)이다. RFC 2697(srTCM, Single Rate Three Color Marker)과 RFC 2698(trTCM)이 이 패턴을 표준화한다. 저트래픽 구간(새벽)에는 Reservoir만으로 충분히 샘플링되고, 고트래픽 구간(점심)에는 Fixed Rate로 비용을 통제하는 자동 조절 메커니즘이다.

실무 운영 안티패턴 종합

Week 3에서 배운 각 도구의 안티패턴을 한 번에 정리한다.

알람 안티패턴

  • 모든 알람 DatapointsToAlarm=1 → 모든 spike에 PagerDuty 폭격
  • Treat Missing Data 기본값(missing) + 핵심 서비스 → 인스턴스 죽어도 알람 안 울림
  • 자식 알람마다 PagerDuty 액션 → 한 사고에 수십 개 알림
  • Cross-Region 메트릭에 직접 알람 시도 → 동작하지 않음 (동일 리전만 평가 가능)
  • Anomaly Detection을 서비스 시작 당일에 신뢰 → 2주 학습 기간 동안 밴드가 불안정

대시보드 안티패턴

  • Public Sharing으로 외부 공유 → 인스턴스 ID, 트래픽 패턴, 에러 메시지 무인증 노출
  • 50개 위젯 한 대시보드 → Dashboard Fatigue (화면이 많다고 관측 가능성이 높아지지 않음)
  • 단위 없는 Number 위젯 → 맥락 없는 숫자 ("1247은 좋은 건가 나쁜 건가?")
  • 계층 구조 없이 모두 동일 중요도 → 장애 시 어디부터 볼지 모름

Agent 안티패턴

  • IAM Role 없이 Agent 설치 → PutMetricData AccessDenied (Agent가 CloudWatch API 호출 권한 없음)
  • State Manager 없이 User Data만으로 배포 → 설정 drift 무방비
  • retention_in_days 미설정 → Log Group 영구 보관으로 비용 증가 (Never Expire)
  • Custom Namespace 확인 없이 AWS/EC2에서 메모리 검색 → 없음, 알람 생성 불가

X-Ray 안티패턴

  • 100% 샘플링 → 고트래픽 서비스에서 비용 폭발 (100M RPS × $5/1M Traces = $500/일)
  • SDK captureAWS() 없이 DynamoDB 호출 → Subsegment 안 보임, Service Map에 DynamoDB 노드 없음
  • Sampling Rule 우선순위 미설정 → 중요 결제 API와 헬스체크가 동일 샘플링률
  • Fault vs Error 혼동 → Fault(5xx, AWS 책임 가능성)와 Error(4xx, 클라이언트 문제) 구분이 근본 원인 분석에서 중요

가상의 사례로, 2023년 대형 이커머스 A사는 블랙프라이데이 준비 과정에서 X-Ray 100% 샘플링을 켜두다 하루 $8,000의 예상치 못한 X-Ray 청구를 받았다. 트래픽 폭증 구간에 고정된 Reservoir + 낮은 Fixed Rate(1%)로 전환하자 비용이 $40/일로 감소하면서도 에러 추적은 별도 Priority 1 Rule로 100% 유지했다. Sampling Rule 설계의 ROI가 매우 높은 최적화 포인트다.

⚠️ 함정: ServiceLens는 CloudWatch, X-Ray, Synthetics Canary 데이터를 통합하는 뷰지만, 세 서비스가 각각 정상 동작 중이어야 한다. Lambda Active Tracing이 꺼져 있으면 ServiceLens Service Map에 Lambda가 나타나지 않는다. X-Ray SDK로 AWS SDK를 wrap하지 않으면 DynamoDB, SQS 등 하위 서비스가 Map에서 사라진다. ServiceLens 화면이 비어 보이면 X-Ray SDK 설정과 Active Tracing 여부를 먼저 확인한다.

다른 클라우드 플랫폼과의 비교

기능AWS CloudWatchGCP Cloud OperationsAzure Monitor
MetricsCloudWatch MetricsCloud MonitoringAzure Monitor Metrics
LogsCloudWatch LogsCloud LoggingLog Analytics
TracesX-RayCloud TraceApplication Insights
AgentCloudWatch AgentOps AgentAzure Monitor Agent
합성 모니터링Synthetics CanaryUptime ChecksApplication Insights Availability
이상 탐지Anomaly DetectionAlerting Policy MLDynamic Threshold
크로스 계정OAM Sink+LinkWorkspace 기반Resource scope
대시보드CloudWatch DashboardCloud Monitoring DashboardAzure Dashboard

GCP의 Ops Agent는 CloudWatch Agent와 구조적으로 유사하지만, 내부 파이프라인으로 OpenTelemetry Collector를 사용한다. CloudWatch Agent는 자체 Go 바이너리로 동작한다. Azure Monitor Agent는 DCR(Data Collection Rules)로 수집 정책을 중앙에서 정의한다는 점이 다르다. CloudWatch Agent는 SSM Parameter Store로 설정을 중앙화하는 방식이 이에 대응한다. 세 플랫폼 모두 에이전트 없이 수집 가능한 메트릭(하이퍼바이저 레이어)과 에이전트가 필요한 메트릭(OS 레이어)이 명확히 나뉜다는 점은 동일하다.

장애 대응 흐름: 도구 연결 순서

실제 장애 발생 시 CloudWatch 도구들을 어떤 순서로 사용하는지 시나리오별로 정리한다.

시나리오: API 응답 시간 급증

1. Composite Alarm 트리거 (ALB Latency High AND EC2 CPU High)
   → PagerDuty 알림
2. CloudWatch Dashboard에서 전체 범위 파악
   - ALB RequestCount, TargetResponseTime
   - EC2 CPUUtilization (Agent 커스텀: mem_used_percent, disk_used_percent)
3. X-Ray ServiceLens에서 Service Map 확인
   - 어떤 서비스(Lambda, DynamoDB, RDS)에서 지연 발생?
4. 문제 서비스 Trace 상세 → Subsegment 레벨에서 병목 특정
5. ServiceLens "View Logs" → CloudWatch Logs에서 해당 실행 로그 즉시 확인
6. Synthetics Canary 결과 → 사용자 엔드포인트 가용성 현황 확인

이 대응 순서는 "Breadth-First Search → Depth-First" 전략이다. 처음에는 넓게(대시보드, 전체 서비스 맵) 보다가, 범위를 좁혀(특정 서비스 Trace) 깊이 파고든다(Subsegment, 로그). 이것이 Google SRE가 권고하는 "structured troubleshooting"의 핵심: 증상에서 원인으로, 넓은 가설에서 좁은 가설로.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

EC2 인스턴스가 OOM으로 강제 종료됐다. 메모리 알람은 Treat Missing Data = missing이고 EvaluationPeriods=5다. 현재 데이터 포인트 2개가 누락됐다. 알람 상태는?

문제 2

운영팀이 한 사고에서 EC2/RDS/ALB/ElastiCache 알람 20개가 동시에 울려 PagerDuty가 20번 울렸다. 이를 해결하는 가장 구조적인 방법은?

문제 3

EC2 메모리 사용률 90% 알람을 만들었는데 CloudWatch에서 해당 메트릭을 찾을 수 없다. 원인과 해결책은?

문제 4

회사가 5개 AWS 계정을 운영한다. 모든 계정의 EC2 CPU를 단일 대시보드에서 보고 싶다. 올바른 구성은?

문제 5

새벽 2시에 API가 다운됐는데 트래픽이 없어서 RUM에도 데이터가 없고 알람도 안 울렸다. 이 문제를 예방하는 가장 적합한 도구는?

문제 6

Anomaly Detection 알람을 새로 활성화했는데 2주가 지나도 한 번도 알람이 울리지 않았다. 정상인가, 문제인가?

문제 7

Lambda 함수 내 DynamoDB 쿼리의 지연 시간을 X-Ray로 추적하려 한다. 필요한 조치 두 가지는?

문제 8

100대 EC2에 CloudWatch Agent를 배포했는데 일부 인스턴스에서 Agent 설정이 초기화됐다(다른 설정으로 덮어써짐). 이를 방지하는 방법은?

문제 9

ServiceLens를 사용하는 가장 큰 실무 이점은?

문제 10

X-Ray 비용이 급증했다. 트래픽이 초당 2000 RPS인 API에서 현재 기본 샘플링(Reservoir=1, Fixed Rate=5%)을 사용 중이다. 비용을 줄이면서 에러 발생 시에는 반드시 추적하게 하려면?

Week 4 예고 — 로깅과 감사의 핵심: CloudTrail + Config

Week 4는 "누가 무엇을 했는가"와 "지금 상태가 규정을 준수하는가"를 추적하는 감사 도구 주간이다.

  • Day 1: CloudTrail — Management Event와 Data Event의 차이, Organization Trail, 로그 무결성 검증
  • Day 2: CloudTrail Lake — SQL 분석 데이터 레이크, Insights 이상 감지, EventBridge 실시간 대응
  • Day 3: AWS Config — Rule 평가 트리거, Conformance Pack, Auto Remediation SSM 연동
  • Day 4: Audit Manager, License Manager, Resource Explorer — 감사 보고서 자동화와 리소스 가시화
  • Day 5: Week 4 복습 시나리오 10문제

CloudWatch가 "무슨 일이 일어나고 있나"를 보여줬다면, CloudTrail + Config는 "무슨 일이 있었고 누가 했으며 규정을 지키고 있나"를 추적한다. 두 영역 모두 SOA-C02에서 높은 출제 비중을 가진다.

이전Synthetics Canary, X-Ray Sampling, ServiceLens: 사용자 관점 모니터링의 설계Week 3 · Day 4다음 CloudTrail: API 감사 로그의 설계 원칙과 Organization TrailWeek 4 · Day 1

참고 공식 자료

  • SOA-C02 공식 시험 안내(새 탭에서 열림)
  • Amazon CloudWatch 공식 문서(새 탭에서 열림)
  • AWS X-Ray 공식 문서(새 탭에서 열림)
  • Amazon EC2 공식 문서(새 탭에서 열림)
  • AWS Lambda 공식 문서(새 탭에서 열림)
  • Amazon DynamoDB 공식 문서(새 탭에서 열림)

이 페이지

  • Week 3 핵심 개념 연결 지도
  • 헷갈리기 쉬운 핵심 비교
  • 실무 운영 안티패턴 종합
  • 다른 클라우드 플랫폼과의 비교
  • 장애 대응 흐름: 도구 연결 순서
  • 연습 문제
  • Week 4 예고 — 로깅과 감사의 핵심: CloudTrail + Config