[AWS] 클라우드 모니터링 (1)

dereck·2024년 12월 26일

AWS CCP

목록 보기
12/29
post-thumbnail

CloudWatch Metrics

CloudWatch Metrics 개요

CloudWatch는 AWS 내 모든 서비스에 대한 지표(=모니터링 대상이 되는 변수)를 제공하며, 지표는 시간에 대한 내용을 포함하므로 타임스탬프를 갖는다. 모든 지표를 한 번에 시각화할 수 있도록 CloudWatch 지표 대시보드를 생성할 수도 있다.

지표의 예시로는 CPUUtilization, NetworkIn 등이 있다.

중요한 지표

EC2 인스턴스

EC2 인스턴스에 대해서는 CPUUtilization, StatusCheck, Network 같은 지표가 있다.

  • CPUUtilization은 CPU가 현재 얼마나 사용되고 있는지에 대한 지표이다.
    • 사용량이 늘어나면 인스턴스의 작업량 또한 늘어나기 때문에 과도하게 늘어났을 경우 스케일 업/아웃에 대한 판단을 할 수도 있다.
  • StatusCheck는 EC2 인스턴스가 제대로 작동하는지 확인하는 지표이다
  • Network는 얼마나 많은 네트워크가 인스턴스 안팎에서 실행되고 있는지를 살펴보는 지표이다.
  • RAM은 EC2 인스턴스에 적합한 지표가 되지 못한다.

인스턴스에 사용 가능한 CloudWatch 지표 내용: https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics

지표들은 5분마다 제공되지만 Detailed Monitoring을 활성화하여 1분마다 해당 지표를 제공받을 수도 있다.

EBS 볼륨

EBS 볼륨에 대한 지표로는 Disk Read/Writes로 디스크에 읽고 쓰는 정보를 알 수 있는 지표이다.

EBS에 대한 CloudWatch 지표에 대한 내용: https://docs.aws.amazon.com/ko_kr/ebs/latest/userguide/using_cloudwatch_ebs.html#ebs-volume-metrics

S3 버킷

S3 버킷 관련 지표로는 BucketSizeBytes, NumberOfObjects 그리고 AllRequests 등으로 S3 버킷에 대한 요청 수를 알 수 있다.

S3 버킷에 대한 CloudWatch 스토리지 지표에 대한 내용: https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/metrics-dimensions.html#s3-cloudwatch-metrics

Billing 관련

과금 관련 지표에는 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 Alarms

CloudWatch 경보는 지표에 대한 알림을 트리거 할 때 사용된다. 즉, 지표가 임계값을 넘어서면 CloudWatch 경보가 실행되는 것이다.

이와 같은 경보로는 Auto Scaling 작업EC2 작업 그리고 SNS 알림 작업이 있다.

  • Auto Scaling 작업: ASG가 희망하는 EC2 인스턴스의 수를 늘리거나 줄여서 자동 스케일링이 가능하도록 하는 작업
  • EC2 작업: EC2 인스턴스를 중지, 재시작, 종료 또는 복구하는 작업
  • SNS 알림 작업: SNS 주제에 대해 알림을 보내는 작업

이 외에도 경보 생성이나 샘플링, %, 최댓값, 최솟값 등을 설정할 수 있고, 경보를 평가할 기간을 5분, 10분, 1시간 등으로 정할 수도 있다.

끝으로 CloudWatch 과금 지료를 이용하여 과금 경보를 생성할 수 있다.

  • 아무 문제 없는 경우: OK
  • 데이터 포인트가 충분하지 않은 경우: INSUFFICIENT_DATA
  • 불량한 경우: ALARM

Amazon CloudWatch Logs

CloudWatch Logs 개요

CloudWatch Logs는 로그 파일을 수집한다. 이때 로그 파일이란 어느 서버든 간에 실행되는 애플리케이션에 대한 작업 내역을 기록한 파일이다. 수집된 모든 로그 파일은 사용자가 트러블 슈팅을 수행할 때 해당 로그 파일로 가서 애플리케이션의 작업이나 설명을 확인할 때 쓰인다.

CloudWatch Logs는 이 모든 로그를 수집하여 로그에 대한 실시간 모니터링을 지원하며 이를 통해 로그에 발생하는 모든 상황에 대응할 수 있고, 보존 목적으로써 로그를 재조정할 수도 있다.

CloudWatch Logs의 수집 가능한 자료들: https://velog.io/@pingu_9/AWSMonitoring#cloudwatch-logs---sources

CloudWatch Logs for EC2

기본적으로 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 서비스로 보낼 수 있다.


Amazon EventBridge

EventBridge는 과거에 CloudWatch Events라고 불렸었다. 따라서 CloudWatch Events라고 하면 Amazon EventBridge를 생각하면 된다. (반대의 경우도 마찬가지)

EventBridge를 사용하면 AWS 계정 내에서 발생하는 이벤트에 대처할 수 있다. 예를 들어, EventBridge에서 1시간마다 이벤트가 생성된다는 규칙을 만들 수 있다. 그 이벤트는 람다 함수에서 실행되는 스크립트를 트리거한다고 할 수 있다.

이는 사실상 서버리스 크론 작업이며 매시간 발생하는 이벤트에 반응할 뿐만 아니라 서비스가 하는 작업에 대해서도 반응할 수 있다.

예를 들어, 누군가 루트 사용자를 사용하여 로그인할 때마다 보안 팀에 알림을 보낼 수 있다. 즉, IAM 루트 사용자 로그인 이벤트에 반응하여, 이를 이메일 알림과 결합된 SNS 토픽으로 보내는 것이다. 그러면 누군가가 로그인할 때마다 이메일을 받게 되는 것이다.

EventBridge Rules

EC2 인스턴스. CodeBuild, S3 Event, Trusted Advisor, etc.. 등 사용자가 원하는 무엇이든 Source가 될 수 있고, 이것들을 EventBridge로 보낼 수 있다. 그리고 EventBridge에서 다양한 목적지로 전송하고 트리거할 수 있다.

EventBridge 더 많은 기능

  • Default Event Bus
    • AWS 서비스 또는 (예시) Schedules 내에서 발생하는 이벤트
  • Partner Event Bus
    • Zendesk나 Datadog 또는 AWS의 파트너인 다른 서비스를 사용하는 경우 파트너 이벤트 버스를 통해 이벤트를 사용자의 계정으로 보낼 수 있다. 즉, AWS 외부에서 발생하는 이벤트에도 대응할 수 있다.
  • Custom Event Bus
    • 사용자 정의 이벤트 버스를 연결하여, 원하는 통합을 만들고 전부 커스터마이징할 수 있다.
  • Schema Registry
    • 스키마 레지스트리가 있어서, 이벤트 스키마를 모델링하여 스키마의 모양 및 데이터 유형 등을 확인할 수 있다.
  • 모든 이벤트를 무기한 또는 설정된 기간 동안 아카이브하고 이벤트 버스로 보낼 수 있다.

References

0개의 댓글