如何监控适用于在 Amazon EC2 实例上运行的 Amazon Linux AMI 的 Elastic Beanstalk 的内存?

上次更新时间:2019 年 11 月 6 日

我的 Amazon Linux Amazon 系统映像 (AMI) 在 AWS Elastic Beanstalk 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行,但其内存使用量太高且不断增长。我如何查明原因及如何监控内存使用量随时间的变化?

简短描述

要监控内存 (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 上的示例文件


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?