
CloudWatch
CloudWatch 지표
- AWS 모든 서비스에 대한 지표를 제공합니다.
- 지표 (Metric)
- 모니터링할 변수입니다.
- 이름 공간(namespace)에 속합니다.
- 지표의 속성은 배열이 됩니다.
- 지표당 10개의 배열을 선택할 수 있습니다.
- 지표에는 타임스탬프가 있습니다.
- CloudWactch 대시보드를 만들 수 있습니다.
EC2 세부 모니터링
- EC2 인스턴스는 5분마다 지표를 가집니다.
- 비용을 추가하면, 1분마다 지표를 가질 수 있습니다.
- 지표의 변화에 더 빨리 대응하고 더 빨리 스케일 아웃해야 할 때 ASG에 이점을 제공합니다.
- 프리 티어로는 세부 모니터링 지표를 열 개 얻을 수 있습니다.
- 중요한 점은 EC2 메모리 사용량인
RAM이 푸시 되려면 꼭 사용자 지정 지표인
인스턴스가 푸시해야 합니다.
CloudWatch Custom Metrics
- CloudWatch에서 직접 지표를 정의해 사용자 지정 지표를 얻을 수도 있습니다.
- put-metric-data라는 API 호출을 사용해서 말이죠.
- 세그먼트 지표에 Instance.id나 Environment.name 같은 배열을 추가할 수 있습니다.
- 두 값을 가진
storage-resolution이라는 API 매개변수를 통해 지표 해상도를 지정할 수 있습니다.
- 기본 60초를 1/5/10/30초로 설정 가능합니다.
- 비용이 증가합니다.
- 사용자 지정 지표의 좋은 점은
과거나 미래의 지표를 푸시해도 작동한다는 것입니다.
CloudWatch Dashboards
- 주요 지표와 경보에 접근할 수 있습니다.
- 글로벌
다른 AWS 계정이나 다른 리전의 그래프도 포함할 수 있습니다.
- 대시보드에서 시간대와 시간 범위를 바꿀 수도 있습니다.
- 자동 새로고침을 설정할 수도 있습니다.
- AWS 계정이 없는 사람들과 대시보드를 공유할 수도 있습니다.
- 무료로 제공되는 3개의 대시보드는 지표를 50개까지 넣을 수 있습니다.
CloudWatch Logs
- 로그 그룹
- 임의의 이름으로 보통 애플리케이션을 나타냅니다.
- 로그 스트림
- 애플리케이션 내 인스턴스나 다양한 로그 파일명 또는 컨테이너 등을 나타냅니다.
- 로그 만료일도 정의할 수 있습니다.
- 로그가 영원히 만료되지 않게 하거나 일정 기간 후 만료되게 할 수 있습니다.
- CloudWatch Logs는 로그들 보낼 수 있다. 다음으로 :
- Amazon S3
- Kinesis Data Streams
- Firehose
- Lambda
- ElasticSearch
CloudWatch Logs - Sources
SDK, CloudWatch Logs 에이전트, 통합 CloudWatch 에이전트를 통해 로그를 보낼 수 있습니다.
Elastic Beanstalk는 애플리케이션의 로그를 CloudWatch에 전송하고 ECS는 컨테이너의 로그를 CloudWatch에 전송합니다.
Lambda는 함수 자체에서 로그를 보냅니다.
VPC Flow Logs는 VPC 메타데이터 네트워크 트래픽 로그를 보냅니다.
API Gateway
CloudTrail은 필터링해 로그를 보낼 수 있습니다.
Route53은 모든 DNS 쿼리를 로그로 저장합니다.
CloudWatch Logs Metric Filter & Insights
CloudWatch Logs에서 필터 표현식을 쓸 수 있습니다.
- 로그 내 특정 IP를 찾을 수 있습니다.
ERROR라는 문구를 가진 모든 로그를 찾을 수 있습니다.
- 그렇게 만들어진 지표는 CloudWatch 경보로 연동할 수 있습니다.
- CloudWatch Logs Insights
- 이 기능을 통해 로그를 쿼리하고 이 쿼리를 대시보드에 바로 추가할 수 있습니다.
S3 Expert
- CloudWatch에서 S3로 보낼 때 내보내기가 가능해질 때까지 최대 12시간은 걸릴 수 있습니다.
- API 호출은 CreateExportTask입니다.
- 실시간이 아닙니다.
- CloudWatch Logs에서 로그를 스트림하고 싶다면
구독 필터를 사용해야 합니다.
CloudWatch Logs Subscriptions (구독 필터)

CloudWatch Logs로 여러 계정과 리전간 로그를 집계

CloudWatch Logs for EC2
- EC2 인스턴스에서 CloudWatch로는
기본적으로 어떤 로그도 옮겨지지 않습니다.
- EC2 인스턴스에 에이전트라는 작은 프로그램을 실행시켜 원하는 로그 파일을 푸시해야 합니다.
- EC2 인스턴스에 로그를 보낼 수 있게 해주는 IAM 역할이 있어야 합니다.
- 에이전트는 온프레미스 환경에서도 셋업될 수 있습니다.
CloudWatch Logs Agent & Unified Agent
- 가상 서버들을 위한 것입니다.
- CloudWatch Logs Agent
- 오래된 버전
- CloudWatch Logs로 로그만 보냅니다.
- CloudWatch Unified Agent
- 프로세스나 RAM 같은 추가적인 시스템 단계 지표를 수집합니다.
- CloudWatch Logs에 로그를 보냅니다.
- 지표와 로그를 둘 다 사용하기 때문에 통합 에이전트인 겁니다.
- SSM Parameter Store를 이용해서 에이전트를 쉽게 구성할 수 있습니다.
CloudWatch Unified Agent – Metrics
EC2 / Linux 서버에 설치하면
- CPU 지표 (active, guest, idle, system, user, steal)
- 디스크 지표 (free, used, total),
- 디스크 IO (writes, reads, bytes, iops)
- RAM (free, inactive, used, total, cached)
- 넷 상태 (number of TCP and UDP connections, net packets, bytes)
- 프로세스 (total, dead, bloqued, idle, running, sleep)
- 스와프 공간 (free, used, used %)
의 지표를 확인할 수 있습니다.
EC2에서 곧장 디스크, CPU, 스와프나 메모리가 아닌
네트워크에 대한 지표를 얻을 수 있긴 하지만
상당히 포괄적인 지표만 얻을 수 있는데요
세부 지표를 얻고 싶다면
통합 CloudWatch 에이전트를 이용하시면 됩니다
CloudWatch Alarms
- 경보는 지표에서 알림을 트리거할 때 사용됩니다.
- sampling, %, max, min 등의 다양한 옵션을 추가해 복잡한 경보를 정의할 수도 있습니다.
- 세 상태 :
- OK
- INSUFFICIENT_DATA
- ALARM
- 기간 :
- 경보가 지표를 평가하는 기간을 말합니다.
- 고해상도 사용자 지정 지표에도 적용될 수 있는데
10초, 30초 또는 60초의 배수로 설정될 수 있습니다.
CloudWatch Alarm Targets
- 인스턴스를
멈추거나, 삭제하거나, 재시작하거나, 복구하는 등의 동작
Auto Scaling 동작의 트리거입니다.
SNS 서비스에 알림을 보내는 겁니다.
EC2 인스턴스 복구
-
상태 점검
- 인스턴스 상태
- 시스템 상태
* 하드웨어 점검

-
회복
- EC2 인스턴스 복구를 실행해 EC2 인스턴스를 다른 호스트로 옮기는 등의 작업을 할 수 있습니다.
CloudWatch Events
- 이벤트 패턴
- AWS 서비스 내의 이벤트를 인터셉트할 수 있습니다.
- EC2 인스턴스 스타트나 CodeBuild 실패 Amazon S3나 Trusted Advisor의 이벤트
- CloudTrail의 통합을 통해 어떤 API 호출도 인터셉트할 수 있습니다.
- 예약이나 Cron을 생성할 수도 있습니다.
- 예를 들어 매 4시간마다 이벤트를 생성하려 한다면,
- 이벤트에 대한 JSON 페이로드가 생성되어 대상으로 이동할 겁니다.
- Lambda, Batch, ECS task 같은
컴퓨팅
- SQS, SNS, Kinesis DS DF 등의
통합
- Step Functions 등의
오케스트레이션
- SSM나 EC2 동작과 같은 유지
보수
Amazon EventBridge
- Amazon EventBridge는 CloudWatch Events의 차세대 버전입니다.
기본적으로 EventBridge에 포함된 이벤트 버스는 AWS 서비스에서 생성된 것으로
이 버스는 CloudWatch 이벤트에서 사용하는 것과 동일합니다.
파트너 이벤트 버스는 소프트웨어 서비스 공급자 또는 Zendesk, DataDog, Segment, Auth0와 같은 앱에서 이벤트를 받을 수 있습니다.
사용자 지정 이벤트 버스는 애플리케이션에 이벤트를 전송할 수도 있습니다.
- 이벤트 버스는 다른 AWS 계정에서도 접근할 수 있으며 이는 리소스 정책을 통해 확인할 수 있습니다.
- 모든 이벤트를 아카이빙하거나 이벤트 버스에 필터를 적용해 저장하려는 기간을 지정할 수 있습니다.
- 아카이빙된 이벤트를 재생해서 과거에 수행된 이벤트 결과를 확인할 수 있어 유용합니다.
Amazon EventBridge – Schema Registry
- EventBridge에 이벤트가 전송되면 서비스 자체에서 버스 내 이벤트를 분석하고 스키마(schema)를 추론합니다.
- 스키마 레지스트리(Schema Registry)에서 코드를 생성하고 앱은 코드를 통해 이벤트 버스 내 데이터의 구조를 인식합니다.
- UI는 오른쪽과 같고 모든 스키마는 버전이 기록됩니다.
Amazon EventBridge – Resource-based Policy
-
리소스 기반 정책이 있어 버스 자체에 특정 권한을 부여할 수 있습니다.
-
예시: 다른 AWS 계정 또는 리전 이벤트를 허용/거부
이를 통해 핵심 이벤트 버스로 모든 이벤트를 통합하여 기관이나 다른 지역의 이벤트를 한 곳에 종합할 수 있습니다.
Amazon EventBridge vs CloudWatch Events
- EventBridge는 CloudWatch Events에 기반해 기능을 확장한 차세대 버전입니다.
- 백그라운드에서는 같은 서비스 API와 엔드 포인트 그리고 같은 서비스 인프라를 사용합니다.
- EventBridge에서는 이벤트 버스를 확장하여 사용자 지정 애플리케이션 또는 타사 SaaS 앱에도 사용할 수 있습니다.
- 스키마 레지스트리 기능과 더불어 이벤트 재생, 아카이빙 리소스 기반 정책도 갖고 있습니다.
- EventBridge는 새로운 이름과 새로운 기능을 가진 CloudWatch Events의 차세대 버전입니다.
- EventBridge와 CloudWatch Events를 혼용해서 사용하지만 특정 EventBridge 기능을 가리킬 때는 별도로 언급하겠습니다.
AWS CloudTrail

- 거버넌스(Governance)와 규정 준수 그리고 감사권을 부여합니다.
- 동작이 기본값으로 설정돼 있고요.
- AWS 계정 내의 모든 이벤트 기록과 다음 서비스에 의한 API 호출 기록을 볼 수 있습니다.
- 콘솔, SDK, CLI 그 외 AWS 서비스들
- 모든 로그를 CloudTrail에서 볼 수 있습니다.
- 이 로그들을 CloudWatch Logs나 Amazon S3로 옮길 수 있습니다.
- 또한 모든 리전과 단일 리전에 추적을 적용할 수 있습니다.
- 모든 리전에서 축적된 이벤트의 모든 기록을 S3 버킷과 같은 특정 서비스에 넣을 수 있습니다.
CloudTrail Events
- 관리 이벤트
- AWS 계정 내 리소스에 작동한 연산을 나타냅니다.
- 예를 들어
- 누군가 보안을 구성하려면, IAM AttachRolePolicy라는 API 코드를 쓸 것입니다.
- 서브넷을 생성해도 마찬가지로 표시될 것이고 로깅을 셋업해도 볼 수 있습니다.
- 리소스나 AWS 계정을 수정하는 모든 것이 CloudTrail에 표시됩니다.
- 기본적으로 추적은 관리 이벤트를 항상 로그하게 구성돼 있습니다.
- 관리 이벤트는 두 가지로 나눌 수 있는데 먼저 리소스를 수정 않는 읽기 이벤트가 있습니다.
- 데이터 이벤트
- 기본적으로 데이터 이벤트는 로깅되지 않습니다.
- GetObject나 DeleteObject와 같은 Amazon S3의 객체 활동을 말합니다.
- AWS Lambda 함수 실행 활동입니다.
- CloudTrail Insights 이벤트
- CloudTrail Insights는 유료로 활성화되지만 이벤트를 분석합니다.
- 불명확한 리소스 프로비저닝
- 서비스 한계 도달
- AWS IAM 동작 과다 사용
- 주기적 유지 보수 활동 빈틈 같은 것
- CloudTrail은 먼저 정상적인 관리 활동을 분석해서 기준을 세우고 그 후 들어오는 쓰기 이벤트를 계속해서 분석합니다.
- 분석해서 기준을 세우고 그 후 들어오는 쓰기 이벤트를 계속해서 분석합니다.
- 이 Insights 이벤트는 CloudTrail 콘솔에 표시됩니다.
- 필요하면 Amazon S3로도 보내집니다.
- EventBridge 이벤트가 생성됩니다.
CloudTrail Events Retention

- 기본적으로 CloudTrail 내 이벤트는 90일까지 저장됩니다.
- 그 이후에는 삭제됩니다.
- 보존 기간을 늘리기 위해서는 이벤트를 S3에 로그해 즉, S3에 보내 Athena를 사용해 이벤트를 분석하면 됩니다.
AWS Config
- Config는 AWS 내 리소스에 대한 감사와 규정 준수 여부를 기록할 수 있게 해주는 서비스입니다.
- 설정된 규칙에 기반해 구성과 구성의 시간에 따른 변화를 기록할 수 있으며 이를 통해 필요할 경우 인프라를 빠르게 롤백하고 문제점을 찾아낼 수 있습니다.
- AWS Config로 해결되는 Q :
- '보안 그룹에 제한되지 않은 SSH 접근이 있나?'
- '버킷에 공용 액세스가 있나?'
- '시간이 지나며 변화한 ALB 구성이 있나?'
- Config는 리전별 서비스이기 때문에 모든 리전별로 구성해야 합니다.
- 데이터를 중앙화하기 위해 리전과 계정 간 데이터를 통합할 수 있습니다.
- 모든 리소스의 구성을 S3에 저장해 나중에 분석할 수도 있습니다.
Config Rules
- AWS 관리형 Config 규칙이 있고 여기에는 75종의 규칙이 있습니다.
- 스스로 Config 규칙을 만들어도 됩니다.
- 예를 들어 각 EBS 디스크가 gp2 유형인지 평가할 수 있습니다.
- 개발 계정의 EC2 인스턴스가 t2.micro 유형인지 평가할 수도 있습니다.
- Config 규칙은 규정 준수를 위한 것이지 어떤 동작을 미리 예방하지는 못합니다.
- Config는 결제해야 하며 굉장히 비싸질 수 있습니다.
- 3센트를 지불해야 하고 리전당 Config 규칙 평가별로 0.1센트를 내야 합니다.
-
Config 내에서 행동을 차단할 수는 없지만,
SSM 자동화 문서를 이용해서 규정을 준수하지 않는 리소스를 수정할 수 있습니다.
- SSM 문서가 IAM 액세스 키를 비활성화합니다
-
AWS 관리형 문서를 사용하든 본인만의 자동화 문서를 만들어 사용하든
규정을 준수하지 않는 리소스를 수정할 수 있다는 겁니다
-
만약 계속 스크립트를 하고 싶다면
람다 함수를 실행하는 문서를 생성해서 원하는 작업을 수행할 수도 있죠
수정 작업은 재시도 될 수 있습니다.
-
리소스를 자동 수정했음에도 여전히 규정을
미준수한다면 5번까지 재시도될 수 있습니다
Config Rules - Notifications
- EventBridge를 사용해 리소스가 규정을 미준수했을 때마다 알림을 보낼 수 있습니다.
- 모든 구성 변경과 모든 리소스의 규정 준수 여부 알림을 Config에서 SNS로 보낼 수도 있습니다.
CloudWatch vs CloudTrail vs Config
- CloudWatch
- 성능 모니터링 (지표, CPU, 네트워크, etc) 그리고 대시보드
- 이벤트 & 경고
- 로그 집계 및 분석 도구도 사용할 수 있습니다.
- CloudTrail
- 계정 내에서 만든 API에 대한 모든 호출을 기록합니다.
- 특정 리소스에 대한 추적도 정의할 수 있습니다.
- 글로벌 서비스
- Config
- 구성 변경을 기록하고
- 규정 준수 규칙에 따라 리소스를 평가합니다.
- 변경과 규정 준수에 대한 타임라인을 멋진 UI로 보여줍니다.
Elastic Load Balancer를 통해
-
CloudWatch
- 들어오는 연결 수를 모니터링합니다.
- 오류 코드 수를 시간 흐름에 따라 비율로 시각화할 수 있으며
- 로드 밸런서의 성능을 볼 수 있는 대시보드도 만들 수 있습니다
-
Config
- 로드 밸런서에 대한 보안 그룹 규칙을 추적해
누구도 수상하게 행동하거나 무언가 변경하지 못하게 하려고 사용합니다.
- 누군가 SSL 인증서 등을 수정하지는 않는지 감시하기 위해
로드 밸런서의 구성 변경을 추적하는 데 사용할 수도 있습니다.
- SSL 인증서가 로드 밸런서에 항상 할당되어 있어야 한다는 규칙을 만들어
암호화되지 않은 트래픽이 로드 밸런서에 접근하지 못하게 할 수도 있습니다.
-
CloudTrail
- 누가 API를 호출하여 로드 밸런서를 변경했는지 추적합니다.
From
AWS Certified Solutions Architect Associate 시험합격!