CloudWatch는 AWS 내 모든 서비스에 대한 지표(=모니터링 대상이 되는 변수)를 제공하며, 지표는 시간에 대한 내용을 포함하므로 타임스탬프를 갖는다. 모든 지표를 한 번에 시각화할 수 있도록 CloudWatch 지표 대시보드를 생성할 수도 있다.
지표의 예시로는 CPUUtilization, NetworkIn 등이 있다.
EC2 인스턴스에 대해서는 CPUUtilization, StatusCheck, Network 같은 지표가 있다.
인스턴스에 사용 가능한 CloudWatch 지표 내용: https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics
지표들은 5분마다 제공되지만 Detailed Monitoring을 활성화하여 1분마다 해당 지표를 제공받을 수도 있다.
EBS 볼륨에 대한 지표로는 Disk Read/Writes로 디스크에 읽고 쓰는 정보를 알 수 있는 지표이다.
EBS에 대한 CloudWatch 지표에 대한 내용: https://docs.aws.amazon.com/ko_kr/ebs/latest/userguide/using_cloudwatch_ebs.html#ebs-volume-metrics
S3 버킷 관련 지표로는 BucketSizeBytes, NumberOfObjects 그리고 AllRequests 등으로 S3 버킷에 대한 요청 수를 알 수 있다.
S3 버킷에 대한 CloudWatch 스토리지 지표에 대한 내용: https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/metrics-dimensions.html#s3-cloudwatch-metrics
과금 관련 지표에는 Total Estimated Charge로 us-east-1 리전에서만 지원하지만 사용자 전체 계정의 과금 내역을 월 단위로 확인하는 것이다.
Billing에 대한 CloudWatch 지표에 대한 내용: https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html#creating_billing_alarm_with_wizard
서비스 한도에 관한 지표로는 서비스 API 사용량을 볼 수 있다.
원하는 지표를 찾지 못한 경우 사용자 지정 지표를 생성할 수도 있다.
CloudWatch 경보는 지표에 대한 알림을 트리거 할 때 사용된다. 즉, 지표가 임계값을 넘어서면 CloudWatch 경보가 실행되는 것이다.
이와 같은 경보로는 Auto Scaling 작업과 EC2 작업 그리고 SNS 알림 작업이 있다.
이 외에도 경보 생성이나 샘플링, %, 최댓값, 최솟값 등을 설정할 수 있고, 경보를 평가할 기간을 5분, 10분, 1시간 등으로 정할 수도 있다.
끝으로 CloudWatch 과금 지료를 이용하여 과금 경보를 생성할 수 있다.
CloudWatch Logs는 로그 파일을 수집한다. 이때 로그 파일이란 어느 서버든 간에 실행되는 애플리케이션에 대한 작업 내역을 기록한 파일이다. 수집된 모든 로그 파일은 사용자가 트러블 슈팅을 수행할 때 해당 로그 파일로 가서 애플리케이션의 작업이나 설명을 확인할 때 쓰인다.
CloudWatch Logs는 이 모든 로그를 수집하여 로그에 대한 실시간 모니터링을 지원하며 이를 통해 로그에 발생하는 모든 상황에 대응할 수 있고, 보존 목적으로써 로그를 재조정할 수도 있다.
CloudWatch Logs의 수집 가능한 자료들: https://velog.io/@pingu_9/AWSMonitoring#cloudwatch-logs---sources
기본적으로 EC2 인스턴스는 CloudWatch Logs에 로그 파일을 전송하지 않는다. 전송을 위해서는 EC2 인스턴스에 CloudWatch agent를 생성해야 하고, 그 후 에이전트가 CloudWatch Logs 서비스로 로그 파일을 push 한다.
즉, 실행 중인 CloudWatch Logs 서비스가 있고, EC2 인스턴스가 있을 때, 해당 인스턴스에 CloudWatch agent를 설치하면 해당 에이전트가 바로 CloudWatch Logs에 로그 파일을 전송한다. 그리고 이를 위해선 EC2 인스턴스에 CloudWatch Logs로 로그 데이터를 전송할 수 있는 IAM 권한을 가지고 있는지 확인해야 한다.
또한 CloudWatch Logs agent는 온프레미스 서버에도 설치할 수 있는데 이를 하이브리드 에이전트라고 한다. 이 에이전트는 온프레미스 또는 AWS 모두에서 작동하며 이를 통해 EC2 인스턴스와 온프레미스 서버 모두에서 로그 파일을 수집하여 CloudWatch Logs 서비스로 보낼 수 있다.
EventBridge는 과거에 CloudWatch Events라고 불렸었다. 따라서 CloudWatch Events라고 하면 Amazon EventBridge를 생각하면 된다. (반대의 경우도 마찬가지)
EventBridge를 사용하면 AWS 계정 내에서 발생하는 이벤트에 대처할 수 있다. 예를 들어, EventBridge에서 1시간마다 이벤트가 생성된다는 규칙을 만들 수 있다. 그 이벤트는 람다 함수에서 실행되는 스크립트를 트리거한다고 할 수 있다.
이는 사실상 서버리스 크론 작업이며 매시간 발생하는 이벤트에 반응할 뿐만 아니라 서비스가 하는 작업에 대해서도 반응할 수 있다.
예를 들어, 누군가 루트 사용자를 사용하여 로그인할 때마다 보안 팀에 알림을 보낼 수 있다. 즉, IAM 루트 사용자 로그인 이벤트에 반응하여, 이를 이메일 알림과 결합된 SNS 토픽으로 보내는 것이다. 그러면 누군가가 로그인할 때마다 이메일을 받게 되는 것이다.
EC2 인스턴스. CodeBuild, S3 Event, Trusted Advisor, etc.. 등 사용자가 원하는 무엇이든 Source가 될 수 있고, 이것들을 EventBridge로 보낼 수 있다. 그리고 EventBridge에서 다양한 목적지로 전송하고 트리거할 수 있다.