Amazon EC2 인스턴스에서 실행되는 Amazon Linux AMI용 Elastic Beanstalk에서 메모리 사용량을 모니터링하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 10월 21일

AWS Elastic Beanstalk의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행되는 Amazon Linux Amazon Machine Image(AMI)의 메모리 사용량이 너무 높고 계속 증가하고 있습니다. 시간의 흐름에 따른 메모리 사용량을 모니터링하고 싶습니다.

간략한 설명

메모리(RAM) 사용량을 모니터링하려면 .ebextensions 파일을 사용하여 사용자 지정 Amazon CloudWatch 지표를 추가해야 합니다. .ebextensions 파일은 Amazon EC2 인스턴스 환경에서 스크립트를 실행합니다. 스크립트는 주기적으로 메모리 지표 및 기타 사용자 지정 CloudWatch 지표를 발행합니다.

중요: 다음 해결 방법에 사용되는 .ebextension은 Amazon Linux AMI 인스턴스에만 적용되며 Elastic Beanstalk의 Windows 또는 사용자 지정 Ubuntu AMI 인스턴스에는 적용되지 않습니다.

​해결 방법

1.    다음 예제를 기반으로 .ebextensions 파일(예: .ebextensions/cloudwatch.config)을 생성합니다.

packages:
  yum:
    perl-DateTime: []
    perl-Sys-Syslog: []
    perl-LWP-Protocol-https: []
    perl-Switch: []
    perl-URI: []
    perl-Bundle-LWP: []
sources: 
  /opt/cloudwatch: https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
  
container_commands:
  01-setupcron:
    command: |
      echo '*/5 * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl `{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics", "DefaultValue" : "--mem-util --disk-space-util --disk-path=/" }}` >> /var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
  02-changeperm:
    command: chmod 644 /etc/cron.d/cwpump
  03-changeperm:
    command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
option_settings:
  "aws:autoscaling:launchconfiguration" :
    IamInstanceProfile : "aws-elasticbeanstalk-ec2-role"
  "aws:elasticbeanstalk:customoption" :
    CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --auto-scaling"

참고: Amazon Linux 2 기반 플랫폼의 경우, 이전 구성 파일에 있는 perl-Bundle-LWP yum 패키지를 perl-Digest-SHA.x86_64로 바꿉니다.

2.     Elastic Beanstalk 환경의 인스턴스 프로필에 다음 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "cloudwatch:PutMetricData",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

참고: 2단계의 권한은 환경 인스턴스에 1단계의 지표를 CloudWatch에 게시하는 데 필요한 권한을 부여합니다.

3.    1단계의 .ebextensions 파일을 포함하는애플리케이션 소스 번들을 생성합니다.

4.    업데이트된 Elastic Beanstalk 애플리케이션을 배포합니다.

5.    Cloudwatch 콘솔에서 Linux 시스템 네임스페이스 아래에 있는 지표를 봅니다.

참고: 메모리 사용량에 대한 지표, 경보 및 조정이 포함된 구성 파일의 예는 AWS GitHub의 예제 파일을 참조하십시오.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?