$ yh.log
AWS 모니터링 (CloudWatch, X-Ray, CloudTrail) 정리

AWS 모니터링 (CloudWatch, X-Ray, CloudTrail) 정리

AWSCloudWatchX-RayCloudTrailDVA-C02

작성자 : 오예환 | 작성일 : 2026-01-12 | 수정일 : 2026-01-12

1. 모니터링의 중요성

왜 모니터링이 필요한가?

관점고려사항
사용자 경험애플리케이션 지연시간, 장애
사전 예방문제 발생 전 감지
성능 & 비용스케일링 패턴, 트렌드 분석
학습 & 개선지속적 개선

AWS 모니터링 서비스 개요

서비스용도
CloudWatch메트릭, 로그, 이벤트, 알람
X-Ray분산 추적, 성능 문제 해결
CloudTrailAPI 호출 감사, 리소스 변경 추적

Part 1: Amazon CloudWatch

2. CloudWatch Metrics

개요

  • 모든 AWS 서비스에 대한 메트릭 제공
  • Metric: 모니터링할 변수 (CPUUtilization, NetworkIn 등)
  • Namespace: 메트릭 그룹
  • Dimension: 메트릭 속성 (instance id, environment 등) - 최대 30개
  • 타임스탬프 포함
  • CloudWatch Dashboard로 시각화

EC2 Detailed Monitoring

항목StandardDetailed Monitoring
주기5분1분
비용무료유료
ASG느린 스케일링빠른 스케일링

⚠️ EC2 Memory 사용량은 기본 제공 안 됨 → Custom Metric으로 푸시 필요

Custom Metrics

항목설명
용도자체 메트릭 정의 (RAM, 디스크, 로그인 사용자 등)
APIPutMetricData
Dimensions메트릭 세분화 (Instance.id, Environment.name)

해상도 (Resolution):

해상도주기비용
Standard60초 (1분)기본
High Resolution1/5/10/30초높음

💡 메트릭 데이터: 과거 2주 ~ 미래 2시간 범위 허용


3. CloudWatch Logs

구조

CloudWatch Logs

    ├─ Log Group (애플리케이션 단위)

      ├─ Log Stream (인스턴스/파일/컨테이너)
      ├─ Log Stream
      └─ Log Stream

    └─ Log Group
           └─ ...

로그 보존 정책

  • 만료 없음 ~ 10년까지 설정 가능

로그 전송 대상

대상용도
Amazon S3장기 저장
Kinesis Data Streams실시간 스트리밍
Kinesis Data FirehoseNear Real-time 적재
AWS Lambda서버리스 처리
OpenSearch검색/분석

로그 암호화

  • 기본 암호화 적용
  • KMS 기반 암호화 설정 가능

로그 소스

소스설명
SDK, CloudWatch Agent애플리케이션 로그
Elastic Beanstalk애플리케이션 로그 수집
ECS컨테이너 로그
Lambda함수 로그
VPC Flow LogsVPC 네트워크 로그
API GatewayAPI 로그
CloudTrailAPI 호출 로그
Route 53DNS 쿼리 로그

4. CloudWatch Logs Insights

개요

  • CloudWatch Logs 데이터를 검색/분석
  • 전용 쿼리 언어 제공
  • AWS 서비스 및 JSON 로그 필드 자동 검색

기능

  • 필드 추출, 조건 필터링, 집계 통계, 정렬, 개수 제한
  • 쿼리 저장 및 Dashboard 추가
  • 여러 Log Group 쿼리 (다른 AWS 계정 포함)

⚠️ 쿼리 엔진임 (실시간 엔진 아님)


5. CloudWatch Logs Export & Subscriptions

S3 Export

항목설명
지연시간최대 12시간
APICreateExportTask
실시간성❌ (Near Real-time 불가)

💡 실시간이 필요하면 Logs Subscriptions 사용

Logs Subscriptions

CloudWatch Logs Subscription Filter Lambda (Real-time)
 Kinesis Data Firehose (Near Real-time)
 Kinesis Data Streams
  • Subscription Filter: 전달할 로그 필터링
  • 실시간 로그 이벤트 처리/분석

Multi-Account & Multi-Region 집계

┌─────────────────────────────────────────────────────────────┐
  Account A (Region 1)                                       │
  CloudWatch Logs Subscription Filter ──┐
├─────────────────────────────────────────────────────────────┤
  Account B (Region 2)                    │                  │
  CloudWatch Logs Subscription Filter ──┼──▶ Kinesis Data
├─────────────────────────────────────────────────────────────┤    Streams
  Account B (Region 3)                    │       │          │
  CloudWatch Logs Subscription Filter ──┘
                                              Kinesis Data
                                              Firehose


                                              Amazon S3
└─────────────────────────────────────────────────────────────┘

Cross-Account Subscription

  • Destination Access Policy + IAM Role 설정 필요
  • Sender 계정에서 Recipient 계정의 Kinesis로 로그 전송

6. CloudWatch Agent

EC2 로그 수집

┌─────────────────────────────────────────┐
           EC2 Instance

  ┌─────────────────────────────────┐
   CloudWatch Agent
   (로그 파일 수집 + 전송)        │    │
  └──────────────┬──────────────────┘
└─────────────────┼───────────────────────┘


           CloudWatch Logs

⚠️ 기본적으로 EC2 로그는 CloudWatch로 안 감 → Agent 설치 필요

Agent 종류

Agent설명
CloudWatch Logs Agent구버전, Logs만 전송
CloudWatch Unified Agent신버전, 시스템 메트릭 + Logs 전송

Unified Agent 수집 메트릭 (Linux)

카테고리메트릭
CPUactive, guest, idle, system, user, steal
Diskfree, used, total, IO (writes, reads, bytes, iops)
RAMfree, inactive, used, total, cached
NetstatTCP/UDP 연결 수, 패킷, 바이트
Processestotal, dead, blocked, idle, running, sleep
Swapfree, used, used %

💡 EC2 기본 메트릭: disk, CPU, network (고수준)
Unified Agent: 상세 시스템 메트릭 (RAM 포함!)

SSM Parameter Store 연동

  • Unified Agent 설정을 중앙 집중 관리

7. CloudWatch Logs Metric Filter

개요

  • 로그에서 필터 표현식으로 패턴 검색
  • 메트릭 생성 → Alarm 트리거 가능

예시

EC2 Instance


CloudWatch Agent CloudWatch Logs Metric Filter CloudWatch Alarm SNS

                                   "ERROR" 카운트

특징

항목설명
Dimensions최대 3개
소급 적용❌ (필터 생성 이후 데이터만)

8. CloudWatch Alarms

개요

  • 메트릭 기반 알림 트리거
  • 다양한 통계 옵션 (sampling, %, max, min 등)

Alarm States

상태설명
OK정상
INSUFFICIENT_DATA데이터 부족
ALARM경보 상태

Alarm Targets

대상동작
EC2Stop, Terminate, Reboot, Recover
Auto Scaling스케일링 액션
SNS알림 전송 (Lambda, SQS 등 연동)

EC2 Instance Recovery

CloudWatch Alarm (StatusCheckFailed_System)

            ├─→ EC2 Instance Recovery
   (Same Private/Public/Elastic IP, 메타데이터, Placement Group 유지)

            └─→ SNS Topic (알림)

Status Check 종류:

  • Instance status: EC2 VM 체크
  • System status: 하드웨어 체크
  • Attached EBS status: EBS 볼륨 체크

Composite Alarms

EC2 Instance

    ├─→ CW Alarm A (CPU 모니터링) ─┐

    └─→ CW Alarm B (IOPS 모니터링) ─┼─→ Composite Alarm (AND/OR) → SNS

                              "alarm noise" 감소
  • 여러 알람 상태를 AND/OR 조합
  • 알람 노이즈 감소

Alarm 테스트

# CLI로 알람 상태 강제 설정 (테스트용)
aws cloudwatch set-alarm-state \
  --alarm-name "myalarm" \
  --state-value ALARM \
  --state-reason "testing purposes"

9. CloudWatch Synthetics Canary

개요

  • API, URL, 웹사이트를 프로그래밍 방식으로 모니터링
  • 고객이 문제를 겪기 전에 발견

기능

  • 가용성, 지연시간 체크
  • 로드 타임 데이터, UI 스크린샷 저장
  • CloudWatch Alarms 연동
  • Node.js / Python 스크립트
  • Headless Chrome 브라우저 접근
  • 1회 또는 정기 스케줄 실행

Canary Blueprints

Blueprint용도
Heartbeat MonitorURL 로드, 스크린샷/HTTP 아카이브 저장
API CanaryREST API 읽기/쓰기 테스트
Broken Link CheckerURL 내 모든 링크 체크
Visual Monitoring스크린샷 비교 (베이스라인 vs 현재)
Canary Recorder웹사이트 액션 녹화 → 스크립트 자동 생성
GUI Workflow Builder로그인 폼 등 웹페이지 액션 테스트

10. Amazon EventBridge (구 CloudWatch Events)

개요

  • Schedule: Cron 작업 (예약 스크립트)
  • Event Pattern: 서비스 이벤트에 반응

Event Sources

소스예시
EC2 Instance인스턴스 시작/중지
CodeBuild빌드 실패
S3객체 업로드
Trusted Advisor새 발견 사항
CloudTrail모든 API 호출
Schedule/Cron매 4시간마다

Event Destinations

카테고리대상
ComputeLambda, Batch, ECS Task
IntegrationSQS, SNS, Kinesis Data Streams
OrchestrationStep Functions
MaintenanceCodePipeline, CodeBuild, SSM, EC2 Actions

Event Bus 종류

Bus소스
Default Event BusAWS 서비스
Partner Event BusAWS SaaS 파트너
Custom Event Bus커스텀 앱

주요 기능

기능설명
Archive이벤트 아카이브 (무기한 또는 기간 설정)
Replay아카이브된 이벤트 재생
Schema Registry이벤트 스키마 분석 → 코드 생성
Resource-based PolicyCross-Account 이벤트 허용

Multi-Account 집계

Account A Event Rule ─┐
Account B Event Rule ─┼──▶ Central Account Event Bus SNS
Account C Event Rule ─┤
Account D Event Rule ─┘
                              (Resource Policy로 허용)

Part 2: AWS X-Ray

11. X-Ray 개요

기존 디버깅의 문제점

  • 로컬 테스트 → 로그 추가 → 재배포... 반복
  • 로그 형식이 애플리케이션마다 다름
  • 분산 서비스 디버깅 어려움
  • 전체 아키텍처 뷰 없음

X-Ray 장점

장점설명
성능 병목 발견어디서 느린지 파악
의존성 이해마이크로서비스 관계 파악
서비스 이슈 정확히 파악어느 서비스 문제인지
요청 동작 분석요청 흐름 추적
에러/예외 발견오류 발생 지점
SLA 충족 여부응답 시간 확인
Throttling 발생 지점어디서 제한되는지
영향받는 사용자 식별누가 영향 받는지

호환 서비스

  • AWS Lambda
  • Elastic Beanstalk
  • ECS
  • ELB
  • API Gateway
  • EC2 / 온프레미스 서버

12. X-Ray 활성화 방법

Step 1: 코드에 X-Ray SDK 추가

지원 언어: Java, Python, Go, Node.js, .NET

SDK가 캡처하는 것:

  • AWS 서비스 호출
  • HTTP/HTTPS 요청
  • 데이터베이스 호출 (MySQL, PostgreSQL, DynamoDB)
  • 큐 호출 (SQS)

Step 2: X-Ray Daemon 설치 또는 AWS 통합 활성화

┌─────────────────────────────────────────┐
           EC2 Instance

  ┌─────────────────────────────────┐
   Application Code
   + AWS X-Ray SDK
  └──────────────┬──────────────────┘
 Send traces
  ┌──────────────▼──────────────────┐
   X-Ray Daemon
   (UDP 패킷 수집)               │    │
  └──────────────┬──────────────────┘
└─────────────────┼───────────────────────┘
 Batch (매 1초)

              AWS X-Ray
  • X-Ray Daemon: UDP 패킷 인터셉터 (Linux/Windows/Mac)
  • Lambda, Beanstalk 등: Daemon 자동 실행
  • IAM 권한 필요 (X-Ray 쓰기)

13. X-Ray 핵심 개념

용어

용어설명
Segment각 애플리케이션/서비스가 전송
Subsegment더 세부적인 정보
TraceSegment 모음 (전체 요청 추적)
Sampling요청의 일부만 기록 (비용 절감)
AnnotationsKey-Value, 인덱싱됨 (필터 검색 가능)
MetadataKey-Value, 인덱싱 안 됨

Sampling Rules (기본값)

 번째 요청/초: 항상 기록 (reservoir)
 추가 요청: 5%만 기록 (rate)
  • 코드 변경 없이 Sampling Rules 수정 가능
  • 커스텀 규칙 생성 가능

X-Ray API

Write APIs (Daemon 사용): | API | 용도 | |-----|------| | PutTraceSegments | 세그먼트 업로드 | | PutTelemetryRecords | 텔레메트리 업로드 | | GetSamplingRules | 샘플링 규칙 조회 |

Read APIs: | API | 용도 | |-----|------| | GetServiceGraph | 서비스 맵 | | BatchGetTraces | Trace ID로 조회 | | GetTraceSummaries | Trace 요약 조회 | | GetTraceGraph | 특정 Trace 그래프 |

보안

  • IAM: 권한 부여
  • KMS: 저장 시 암호화

14. X-Ray 트러블슈팅

EC2에서 X-Ray 안 될 때

확인 항목
EC2 IAM Role에 적절한 권한 있는지
X-Ray Daemon 실행 중인지

Lambda에서 X-Ray 활성화

확인 항목
IAM Execution Role에 AWSXRayWriteOnlyAccess 포함
코드에 X-Ray SDK import
Lambda Active Tracing 활성화

15. X-Ray 통합

Elastic Beanstalk

Elastic Beanstalk + X-Ray
 
 X-Ray Daemon이 플랫폼에 포함됨
 콘솔 또는 .ebextensions/xray-daemon.config로 활성화
 Instance Profile에 IAM 권한 필요
 코드에 X-Ray SDK 추가

⚠️ Multicontainer Docker는 X-Ray Daemon 미제공

ECS + X-Ray

패턴설명
DaemonEC2마다 X-Ray Daemon 컨테이너 1개
Sidecar (EC2)각 Task에 X-Ray 컨테이너
Sidecar (Fargate)각 Fargate Task에 X-Ray 컨테이너
┌─── Daemon 패턴 ────┐    ┌─── Sidecar 패턴 ───┐

  EC2  Fargate Task
  ┌────┐ ┌────┐  ┌────┐ ┌────────┐
  │App │App  │App │X-Ray
  └────┘ └────┘ │Sidecar
  ┌──────────────┐  └────┘ └────────┘
 X-Ray Daemon
  └──────────────┘    └─────────────────────┘
└────────────────────┘

16. AWS Distro for OpenTelemetry

개요

  • OpenTelemetry 프로젝트의 AWS 지원 배포판
  • 단일 API, 라이브러리, 에이전트로 Trace & Metrics 수집
  • Auto-instrumentation: 코드 변경 없이 Trace 수집

지원 대상

  • EC2, ECS, EKS, Fargate, Lambda
  • 온프레미스

전송 대상

  • AWS X-Ray
  • Amazon CloudWatch
  • Amazon Managed Prometheus
  • 파트너 모니터링 솔루션

X-Ray vs OpenTelemetry

상황선택
AWS 전용X-Ray
오픈소스 표준화OpenTelemetry
다중 목적지 전송OpenTelemetry

Part 3: AWS CloudTrail

17. CloudTrail 개요

CloudTrail이란?

  • AWS 계정의 거버넌스, 컴플라이언스, 감사
  • 기본 활성화!
  • AWS 계정 내 모든 API 호출 기록

기록 소스

  • Console
  • SDK
  • CLI
  • AWS 서비스

로그 저장

  • CloudWatch Logs
  • S3 Bucket

범위

  • 모든 리전 (기본) 또는 단일 리전

💡 리소스 삭제 조사 시 → CloudTrail 먼저 확인!


18. CloudTrail Events

Event 유형

유형설명기본 활성화
Management Events리소스 작업 (IAM, EC2 등)
Data Events데이터 작업 (S3 객체, Lambda 실행)❌ (고볼륨)
Insights Events비정상 활동 탐지

Management Events 예시

  • IAM AttachRolePolicy
  • EC2 CreateSubnet
  • CloudTrail CreateTrail

Read vs Write Events 분리 가능

Data Events 예시

  • S3: GetObject, DeleteObject, PutObject
  • Lambda: Invoke API

CloudTrail Insights

Management Events CloudTrail Insights 분석 (베이스라인 생성)

 비정상 패턴 탐지
                    ┌─────────────────────┐
   Insights Events

                    ├─→ CloudTrail Console│
                    ├─→ S3 Bucket
                    └─→ EventBridge Event│
                           (자동화)
└─────────────────────────────────────────┘

탐지 대상:

  • 부정확한 리소스 프로비저닝
  • 서비스 제한 도달
  • IAM 액션 급증
  • 주기적 유지보수 활동 공백

19. CloudTrail Events 보존

기본 보존

항목
기간90일

장기 보존

CloudTrail S3 Bucket (장기 저장) → Athena (분석)

20. EventBridge + CloudTrail 연동

API 호출 가로채기

User DynamoDB DeleteTable API 💥


       CloudTrail (로그)


       EventBridge (이벤트)


       SNS (알림)

사용 사례 예시

IAM Role AssumeRole 모니터링:

User IAM AssumeRole CloudTrail EventBridge SNS

Security Group 변경 모니터링:

User EC2 AuthorizeSecurityGroupIngress CloudTrail EventBridge SNS

21. CloudWatch vs CloudTrail vs X-Ray 비교

서비스용도핵심 기능
CloudTrailAPI 호출 감사누가 무엇을 했는지 추적
CloudWatch모니터링메트릭, 로그, 알람
X-Ray분산 추적요청 흐름, 지연시간, 에러 분석

상세 비교

항목CloudTrailCloudWatchX-Ray
목적감사/컴플라이언스모니터링/알림성능 분석/디버깅
데이터API 호출 로그메트릭, 로그Trace, Segment
사용 시점보안 조사, 변경 추적리소스 모니터링, 알림마이크로서비스 디버깅
시각화이벤트 기록DashboardService Map

핵심 요약

CloudWatch

기능설명
MetricsAWS 서비스 메트릭, Custom Metrics
Logs로그 수집/저장/분석
Alarms메트릭 기반 알림/액션
Logs Insights로그 쿼리/분석
Synthetics Canary웹사이트/API 프로그래밍 모니터링
EventBridge이벤트 기반 자동화

X-Ray

개념설명
Trace요청의 전체 경로
Segment각 서비스가 기록
Annotations인덱싱됨, 검색 가능
Sampling비용 절감 (일부만 기록)

CloudTrail

개념설명
Management Events리소스 작업 (기본 활성화)
Data EventsS3 객체, Lambda 실행
Insights비정상 활동 탐지
보존90일 (S3로 장기 저장)