上次更新日期:2021 年 3 月 12 日
我的 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 (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": ,
"Effect": "Allow",
"Resource":
}
]
}
注意:第 2 步中的权限将允许您环境的实例将第 1 步中的指标发布至 CloudWatch。您可以使用 AWS Identity and Access Management (IAM) 条件来创建限制性更强的策略。有关更多信息,请参阅 Amazon EC2 的条件密钥。
3.创建一个包含步骤 1 中的 .ebextensions 文件的应用程序源包。
4.部署已更新的 Elastic Beanstalk 应用程序。
5.在 Linux 系统命名空间部分的 CloudWatch 控制台中查看指标。
注意:关于包含内存使用指标、警报和扩展的配置文件的示例,请参阅 AWS GitHub 上的示例文件。