본문으로 건너뛰기
김신건의 로그

[AWS] CloudWatch: 메트릭, 로그, 알람

· 수정 · 📖 약 1분 · 322자/단어 #aws #cloudwatch #observability #metrics #logs #cloud
CloudWatch, CW Metrics, CW Logs, CW Alarm, Embedded Metric Format, CW Insights, Composite Alarm

정의

CloudWatch = AWS 의 모니터링 + 로그 + 알람 통합 서비스.

4가지 구성

flowchart LR
    CW[CloudWatch]
    CW --> M[Metrics]
    CW --> L[Logs]
    CW --> A[Alarms]
    CW --> D[Dashboards]
    CW --> SY["Synthetics<br/>(canaries)"]
    CW --> RUM["RUM (Real User Monitoring)"]

Metrics

종류의미
Standard resolution1분 단위
High resolution1초 단위 (별도 비용)
Built-inAWS service 자동
CustomPutMetricData API
cw.put_metric_data(
    Namespace='MyApp',
    MetricData=[{
        'MetricName': 'OrdersPlaced',
        'Value': 1,
        'Unit': 'Count',
        'Dimensions': [
            { 'Name': 'Region', 'Value': 'us-east-1' },
            { 'Name': 'Service', 'Value': 'order-api' }
        ]
    }]
)

Embedded Metric Format (EMF)

{
  "_aws": {
    "Timestamp": 1719318060000,
    "CloudWatchMetrics": [{
      "Namespace": "MyApp",
      "Dimensions": [["Service"]],
      "Metrics": [
        { "Name": "Latency", "Unit": "Milliseconds" }
      ]
    }]
  },
  "Service": "api",
  "Latency": 125,
  "user_id": "u_42"
}

로그로 출력하면 CloudWatch 가 자동으로 메트릭 추출. PutMetricData API 호출 없음. 대량 메트릭의 비용 절감.

Logs

flowchart LR
    App[App] -->|stdout| Container
    Container -->|awslogs driver| LG[Log Group]
    LG --> LS[Log Stream]
    LG --> Insights[Logs Insights]
    LG --> Sub[Subscription Filter]
    Sub --> Lambda[Lambda]
    Sub --> Kinesis[Kinesis]

Logs Insights (쿼리)

fields @timestamp, @message
| filter @message like /ERROR/
| stats count() by bin(5m)
| sort @timestamp desc
| limit 50

Subscription Filter

로그 → Lambda / Kinesis 실시간 stream. 외부 시스템 (Datadog, ELK) 으로 export.

Alarms

Alarm:
  MetricName: CPUUtilization
  Namespace: AWS/EC2
  Statistic: Average
  Period: 60
  EvaluationPeriods: 5
  Threshold: 80
  ComparisonOperator: GreaterThanThreshold
  AlarmActions: [arn:aws:sns:...]

5번 연속 1분 평균 CPU > 80% → SNS 알림.

Composite Alarm

AlarmRule: |
  ALARM("HighCPU") AND
  ALARM("HighLatency") AND
  NOT ALARM("Maintenance")

복수 alarm 결합. 유의미한 사고 만 알림 (false positive 감소).

Anomaly Detection

Metrics:
  - Id: m1
    MetricStat: { ... }
  - Id: ad1
    Expression: ANOMALY_DETECTION_BAND(m1, 2)

머신러닝으로 정상 범위 학습 + 이상치 감지.

CloudWatch vs 3rd-party

CloudWatchDatadog / NewRelic
AWS 통합최고통합 plugin
UI기본우수
가격metric 수에 비례 (큼)호스트 기반 (큼)
Distributed tracingX-Ray 별도통합
APM제한완전

대부분의 큰 회사 = CloudWatch 기본 + Datadog 등 비싼 도구 으로 세분.

흔한 함정

WARNING

  1. 메트릭 비용 폭증 = 각 dimension 조합 = 별도 metric. cardinality 관리.
  2. Log retention 기본 영원 = 무한 비용. retention 정책 필수.
  3. PutMetricData API call 비용 = EMF 로 log 로 메트릭.
  4. Alarm 의 INSUFFICIENT_DATA = 데이터 부족으로 alarm 못 보내. TreatMissingData 명시.

관련 위키

이 글의 용어 (4개)
[AWS] EventBridge: 이벤트 버스, 스케줄러, partner sourcescloud
정의 EventBridge = AWS 의 통합 event bus. 옛 CloudWatch Events 의 후계. AWS service 이벤트 + custom 이벤트 + SaaS …
[Observability] OpenTelemetry: 표준화된 trace/metric/logdevops
정의 OpenTelemetry (OTel) = observability 의 vendor-neutral 표준. CNCF. trace + metric + log 의 SDK + pro…
[Observability] Prometheus: pull 기반 메트릭, PromQLdevops
정의 Prometheus = pull 기반 시계열 metric 시스템. PromQL 로 쿼리. CNCF graduated. 2026 클라우드 네이티브 메트릭 표준. 아키텍처 Pu…
[Observability] SLI / SLO / SLA / Error Budgetdevops
정의 | | 의미 | |---|---| | SLI (Indicator) | 측정 값 (예: 5xx 비율) | | SLO (Objective) | 목표 (예: 99.9% 가용성) …

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기