Share
Sign In

CloudWatch

1. Metrics

모든 AWS 서비스의 지표를 담고 있는 서비스이다.
Basic Monitoring : 매 5분마다 지표 수집
Detailed Monitoring : 매 분마다 지표 수집, 비용이 있다.

Metrics Retention

지표가 오래될 수록 듬성듬성하게 조회할 수 있다.

알아야 하는 지표

아래 서비스들을 한 번 훑어보자.
EC2 : RAM이나 process에 대한 정보는 CW agent를 설치해야 확인할 수 있다.
EBS : 남은 용량 확인도 CW agent가 필요하다.
ASG : 인스턴스들을 통합해서 보려면 Group Metrics Collection을 enable해야 한다.
LB, RDS

Custom Metrics

인스턴스에서 aws cloudwatch put-metric-data 명령을 통해 CW에 custom metrics를 만들 수 있다. 인스턴스 내부에서 실행되기 때문에 Shell로 출력 가능한 모든 지표를 CW로 넘길 수 있다.

Exports

aws cloudwatch get-metric-statistics 명령을 통해 CW 지표를 외부로 보낼 수 있다. 이 명령을 Lambda에 넣으면 매 시간마다 지표를 S3에 백업하는 등의 작업을 할 수 있다.

2. Alarms

사용자나 서비스의 행동에 기반에 인프라를 자동화하는 서비스이다.
지표가 일정 수치보다 크거나 작거나 할 때 알람을 울린다.
알람 하나당 지표 하나만 쓸 수 있다.

작업 구성

알람이 발생하면 어떤 동작을 하는가?
알림 : SNS 주제에 알림을 보낸다.
Auto Scaling 작업 : ASG나 ECS 서비스를 조작한다.
EC2 작업 : 인스턴스를 복구/중지/종료/재부팅한다.

Billing Alarms

지출 내용도 Alarm으로 만들 수 있다. 버지니아 북부(us-east-1)에만 있는 기능이다.

3. Logs

지표와 비슷하게 AWS 서비스들의 로그를 담고 있다.

Unified CloudWatch Agent

기본 정보 말고 추가적인 지표와 로그를 CW로 보내기 위해 인스턴스에 설치하는 agent이다.
지표 : Memory usage, disk usage 등
로그 : 어플리케이션 로그 (웹 서버) 등

Metric Filters

로그에서 404 에러 그래프를 만들고, 10분 동안 10건 이상 발생하면 alarm을 울리도록 어떻게 할까?
1.
Metric pattern을 통해 로그에서 원하는 값만 추출한다.
2.
해당 값을 metric에 할당한다. (Assign Metric)
3.
방금 할당한 metric을 가지고 CW Alarm을 만든다.

Exports to S3

콘솔이나 CW Event에서 로그를 S3에 보낼 수 있다. 단, 적절한 버킷 정책이 필요하다.

Subscriptions

로그를 실시간으로 다른 서비스에 보내고 싶으면 어떻게 해야 할까? 특정 서비스에 subscription filter를 만든다.
Lambda, Kinesis Stream : 실시간
Kinesis Firehose : 버퍼를 가득 채우고 보내기 때문에 거의-실시간.

All kind of Logs

Application Logs : 어플리케이션이 만드는 로그. EC2에서는 CW Agent를 통해 CW Logs로 스트리밍되고, Lambda, ECS, EB는 자동으로 CW Logs와 통합된다.
Operating System Logs : 운영체제의 행동을 로컬에 기록하는 로그. CW Agent를 통해 CW Logs로 스트리밍된다.
Access Logs : 웹을 통해 파일을 요청한 기록을 남기는 로그. 로드 밸런서, 프록시, 웹 서버 등이 만든다.

AWS Managed Logs

로그 발생 ⇒ 저장소
Load Balancer Access Logs ⇒ S3
CloudTrail Logs ⇒ S3, CloudWatch Logs
VPC Flow Logs ⇒ S3, CloudWatch Logs
Route 53 Access Logs ⇒ S3, CloudWatch Logs
S3 Access Logs ⇒ S3
CloudFront Access Logs ⇒ S3
AWS Config ⇒ S3

4. Events

💡
EventBridge로 대체되었지만 비슷하다.

Source & Target

Source : 언제 타겟을 트리거할 것인가?
Event Pattern : 어떤 서비스의 이벤트가 발생하면,
Schedule : 원하는 시간에,
Target : 주로 Lambda 함수를 트리거한다.

CloudTrail과 연동

CloudTrail의 API 호출을 감시하고, 호출이 발생했을 때 원하는 동작을 취하도록 할 수 있다. 사실 새삼 왜 설명하는지는 모르겠다. 🙂

CW Events vs S3 Events

S3 Events의 경우
S3 네이티브 서비스이기 때문에 사용이 편리하다.
버킷 정책을 통해, 타켓의 쓰기 권한을 버킷에게 부여해야 한다.
오브젝트 레벨의 중요 이벤트만 있다.
CW Events의 경우
버킷 레벨, 오브젝트 레벨 다 가능하다.
사실 상위 호환이라 보면 된다.