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

最終更新日: 2020 年 10 月 21 日

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"

注: 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 のサンプルファイルをご参照ください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?