Amazon EC2 インスタンスで実行されている Amazon Linux AMI 用の Elastic Beanstalk のメモリをモニタリングするにはどうすればよいですか ?

最終更新日: 2019 年 11 月 6 日

AWS Elastic Beanstalk の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されている Amazon Linux 用 Amazon マシンイメージ (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"

2.    アプリケーションソースバンドルを作成します。これはステップ 1 の .ebextensions ファイルを含みます。

3.    更新した Elastic Beanstalk アプリケーションをデプロイします

注: メトリクス、アラーム、メモリ使用量のスケーリングを含む設定ファイルの例については、AWS GitHub のサンプルファイルをご参照ください。