工作人员在AWS EC2上失败时的警报电子邮件

时间:2016-08-30 06:13:50

标签: amazon-web-services amazon-ec2 monitoring supervisord amazon-cloudwatch

我在AWS中有一个带有Centos 6的EC2实例,我只有一个主管,它维护着一个PHP脚本。在某些情况下,此脚本失败,我可以看到类似的内容:

$ sudo /usr/local/bin/supervisorctl status
my-worker                      EXITED    Aug 19 10:19 AM

我希望收到关于它的提醒电子邮件,因为我的脚本自8月19日以来一直无效。

我尝试查找与运行状况检查相关的内容,但运行状况检查仅适用于负载均衡器。此外,我试图在CloudWatch中找到一些东西,但找不到相关的指标。

任何想法,当我的工作人员倒下时,我如何收到电子邮件?

1 个答案:

答案 0 :(得分:3)

由于Cloudwatch默认只能访问管理程序级指标而不是基于操作系统的指标(如RAM使用情况或与流程相关的统计数据),因此没有开箱即用的指标。​​

要扩充Cloudwatch中的数据,您可以编写一个小脚本来检查流程是否正在运行,然后调用PutMetricData将该指标上传到Cloudwatch。

这样的事情应该有效:

#!/bin/bash

${process_name}=$1
DATE=`date +%Y-%m-%dT%H:%M:%S.000Z`

processes_running=`pidof ${process_name} | wc -w`

aws cloudwatch put-metric-data --metric-name ${process_name}_running --namespace "MyService" --value ${processes_running} --timestamp $DATE

然后每隔一分钟用cron或其他东西调用(或者通常你想要更新Cloudwatch - 最大分辨率是1分钟,但会聚集更频繁的呼叫)

然后您只需create an alarm执行某些操作(例如使用SNS向所有订阅的地址发送电子邮件,但可能还会执行某些操作,例如重新启动实例)。