Amazon CloudWatch에서 EC2 인스턴스의 EBS 처리량을 보여주는 지표를 확보하고, EC2 인스턴스에서 처리량 한도에 도달했을 때를 알리는 경보를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 20일

Amazon CloudWatch에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 총 Amazon Elastic Block Store(Amazon EBS) 처리량을 보여주는 지표를 확인하려면 어떻게 해야 합니까? 또한, EC2 인스턴스에서 처리량 한도에 도달했을 때를 알리는 경보를 설정하려면 어떻게 해야 합니까?

간략한 설명

CloudWatch에서 Xen 기반 Amazon EC2 인스턴스의 EBS 처리량을 추적하는 기본 Amazon EBS 지표는 없습니다. 하지만, EC2EBSThroughput/ebs-stats.sh 스크립트를 사용하여 EC2 인스턴스의 총 EBS 처리량을 측정할 수 있습니다.

스크립트는 연결된 모든 볼륨에서 초당 총 읽기/쓰기 바이트 수를 수집하고, 처리량을 Amazon CloudWatch에 지표로 전달합니다. 그런 다음 Amazon CloudWatch 콘솔에 지표를 표시하고 지정한 임계값에 따라 경보가 트리거되도록 설정할 수 있습니다.

참고: 새 Nitro 인스턴스, M5 및 C5는 CloudWatch 지표 EBSIOBalance%EBSByteBalance%를 포함합니다. 자세한 내용은 Amazon EBS 최적화 인스턴스를 참조하십시오.

ebs-stats.sh 스크립트는 CloudWatch의 XEN 기반 EC2 인스턴스용입니다. 스크립트는 Amazon Linux, Red Hat Enterprise Linux 및 CentOS 인스턴스와만 호환됩니다. 그러나 다른 Linux 배포판에 대해 스크립트를 사용자 지정할 수 있습니다.

참고: 인스턴스에 인스턴스 스토어 볼륨이 있으면, 스크립트는 인스턴스 스토어 볼륨의 처리량을 비롯하여 총 처리량을 보고합니다. 즉, 이 스크립트에서 정확한 EBS 처리량 측정을 얻지 못할 수도 있습니다.

해결 방법

1.    RHEL 기반 배포의 경우 AWS CLI(명령줄 인터페이스)가 아직 설치되지 않은 경우 이를 설치합니다.

2.    ebs-stats.sh 스크립트를 다운로드합니다.

3.    인스턴스에 스크립트를 배치하고 실행 가능하게 설정합니다. root 사용자 또는 sudo로 스크립트를 실행해야 합니다. 그렇지 않으면 실패합니다.

$sudo chmod +x ebs-stats.sh 

4.    AWS CLI에서 다음 명령을 백그라운드에서 실행하여 원하는 ebs-stats.sh 런타임 빈도를 설정합니다.

$sudo nohup ./ebs-stats.sh example-sleep-interval &

참고: example-sleep-interval을 각 데이터 포인트 간에 원하는 시간(초)으로 교체합니다.

5.    IAM 역할을 생성합니다.

6.    역할에 다음 정책을 연결합니다.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Action": [
      "cloudwatch:ListMetrics",
      "cloudwatch:GetMetricStatistics",
      "cloudwatch:PutMetricData",
      "autoscaling:DescribeAutoScalingInstances"
    ],
    "Effect": "Allow",
    "Resource": "*"
  }]
}

7.    EC2 인스턴스에 IAM 정책을 연결합니다. 이렇게 하면 스크립트는 측정치를 Amazon CloudWatch에 전달합니다.

8.    CloudWatch 콘솔에서 EBSThroughoutMB에 대한 경보를 설정합니다. 자세한 내용은 정적 임계점을 기반으로 CloudWatch 알람을 생성 또는 Amazon CloudWatch 경보 사용을 참조하십시오.

사용하는 인수를 기반으로 올바른 기간을 선택했는지 확인합니다.