如何为beantalk环境内存设置CloudWatch警报

时间:2019-07-02 20:09:50

标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudwatch cloudwatch-alarms

我正在尝试为AWS Elastic Beanstalk环境的所有实例上的内存设置Cloudwatch警报。我已经设置了使用以下教程在Cloudwatch上获取内存使用率的功能:

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-cw.html

现在,我想设置一个警报,如果这些实例中的任何一个的MemoryUtilization超过某个阈值,就会触发该警报。我可以分别选择所有警报和警报,但是我想确保即使Beanstalk扩展了群集或交换了实例,也不必重新配置警报。

是否可以为实例名称=“ env-name”且指标为MemoryUtilization的情况设置警报?

3 个答案:

答案 0 :(得分:1)

在您的环境的Elastic Beanstalk控制台中:

  1. 单击左侧导航链接中的“监视”链接。
  2. 在“概述”下的“监视”部分,单击“编辑”按钮。
  3. 为资源选择AWSEBAutoScalingGroup。
  4. 在CloudWatch指标下选择MemoryUtilization。
  5. 根据需要修改统计信息和说明。
  6. 单击“添加”按钮,然后在“监视”部分中单击“保存”按钮。
  7. 向下滚动以找到添加的新面板。单击面板右上角的响铃图标。这将带您进入设置以设置新警报。

如果看不到可用的MemoryUtilization指标,请确认您已正确设置了内存指标的集合。

答案 1 :(得分:1)

Cloudwatch无法以通用方式创建警报。只有两种方法可以完成任务。

1)在AMI中创建启动脚本。启动新实例时,它负责自己的Cloudwatch警报。我很久以前使用过这种方法,这种方法很可靠。但是,终止时运行脚本并不可靠,因此您必须定期清除旧警报。

2)使用具有不错功能的工具(哎呀。。。不是Cloudwatch)。我推荐Blue Matador。有了它们,您甚至不必设置警报或阈值,机器学习会自动为您的资源设定基准并为您创建警报。

如果您来到这里并且对Beanstalk或Cloudwatch不够了解,无法做出贡献,请从这里开始:How to Monitor AWS Elastic Beanstalk with CloudWatch

答案 2 :(得分:0)

从您的问题中我了解到以下要求:

  1. 您有多个指标,并且想要在配置警报时使用逻辑或条件,例如(avg metric1> x || avg metric2> y)==>将警报状态设置为ALARM
  2. 您希望警报考虑新指标,因为在伸缩期间弹性beantalk启动新实例时,新指标将可用。
  3. 您希望在弹性beantalk扩展后不立即考虑旧指标。

我认为目前不可能。
在aws讨论论坛上正在进行的讨论[1]揭示,至少可以使用(Metric Math)(1)。公制数学功能最多支持10个指标。

解决方案

您需要做的是,创建一个度量标准来传输是否应触发警报的信息(“计算度量标准” )。有多种方法可以实现此目的:

  • 对于复杂指标,您可以编写bash脚本并使用cron在EC2实例上运行它。该脚本将首先使用维度过滤器(“列表指标”)查询现有指标,然后收集每个指标(“获取指标数据”),对其进行汇总,然后推送计算出的指标数据点(“ put-metric-data” ')。
  • 如果指标非常简单,则可以尝试AWS put-metric-data脚本[2]的 aggregate 选项:
option_settings:
  "aws:elasticbeanstalk:customoption" :
    CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --auto-scaling --aggregated"

聚合选项的文档说:

  

添加针对实例类型,AMI ID和该区域的总体的汇总指标。

参考文献

[1] https://forums.aws.amazon.com/thread.jspa?threadID=94984
[2] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html#put-metric-data