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

최종 업데이트 날짜: 2021년 3월 12일

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

간략한 설명

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

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

해결 방법

중요: 다음 단계 및 스크립트는 레거시 인스턴스 메타데이터 서비스 버전 1(IMDSv1)을 사용하는 환경에서만 사용할 수 있습니다. IMDSv2를 사용하는 환경에서는 최신 CloudWatch 에이전트에 대한 사용자 지정 구성을 사용합니다. 자세한 내용은사용자 지정 지표 게시procstat 플러그인으로 프로세스 지표 수집을 참조하세요.

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로 바꿉니다.

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

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

참고: 2단계의 권한은 환경의 인스턴스가 1단계의 지표를 CloudWatch에 게시하도록 허용합니다. AWS Identity and Access Management(IAM) 조건을 사용하여 보다 제한적인 정책을 만들 수 있습니다. 자세한 내용은 Amazon EC2에 사용되는 조건 키를 참조하십시오.

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

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

5.    CloudWatch 콘솔에서 Linux 시스템 네임스페이스 섹션에 있는 지표를 봅니다.

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


이 문서가 도움이 되었나요?


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